From f05ebc4e9db0e6f4a1a009d441133f59adaa8f76 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Wed, 17 Jun 2020 18:20:40 +0100
Subject: [PATCH] test-ui: Cope with pressure-vessel-wrap not existing

This makes it easier to try out UI changes in the source tree: we can
do everything except actually launching pressure-vessel-wrap.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 pressure-vessel-test-ui | 44 +++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 15 deletions(-)

diff --git a/pressure-vessel-test-ui b/pressure-vessel-test-ui
index e3e66c3ee..f57c7309f 100755
--- a/pressure-vessel-test-ui
+++ b/pressure-vessel-test-ui
@@ -25,6 +25,7 @@
 
 import logging
 import os
+import shlex
 import subprocess
 import sys
 
@@ -84,6 +85,7 @@ class Gui:
     def __init__(self):
         # type: (...) -> None
 
+        self.failed = False
         self.home = GLib.get_home_dir()
 
         self.container_runtimes = {}    # type: typing.Dict[str, str]
@@ -292,18 +294,21 @@ class Gui:
 
         row += 1
 
-        subproc = subprocess.Popen(
-            [
-                os.path.join(
-                    os.path.dirname(__file__),
-                    'pressure-vessel-wrap'
-                ),
-                '--version-only',
-            ],
-            stdout=subprocess.PIPE,
-        )
-        stdout, _ = subproc.communicate()
-        version = stdout.decode('utf-8', errors='replace')
+        try:
+            subproc = subprocess.Popen(
+                [
+                    os.path.join(
+                        os.path.dirname(__file__),
+                        'pressure-vessel-wrap'
+                    ),
+                    '--version-only',
+                ],
+                stdout=subprocess.PIPE,
+            )
+            stdout, _ = subproc.communicate()
+            version = stdout.decode('utf-8', errors='replace')
+        except Exception:
+            version = ''
 
         if version:
             label = Gtk.Label.new('')
@@ -434,8 +439,6 @@ class Gui:
         # type: (typing.Any) -> None
 
         argv = [
-            'env',
-            'G_MESSAGES_DEBUG=all',
             os.path.join(
                 os.path.dirname(__file__),
                 'pressure-vessel-wrap'
@@ -487,13 +490,24 @@ class Gui:
         argv.append('--verbose')
         argv.extend(sys.argv[1:])
 
-        os.execvp(argv[0], argv)
+        os.environ['G_MESSAGES_DEBUG'] = 'all'
+
+        try:
+            os.execvp(argv[0], argv)
+        except OSError:
+            logger.error('Unable to run: %s', ' '.join(map(shlex.quote, argv)))
+            Gtk.main_quit()
+            self.failed = True
+            raise
 
     def run(self):
         # type: (...) -> None
         self.window.show_all()
         Gtk.main()
 
+        if self.failed:
+            sys.exit(1)
+
 
 if __name__ == '__main__':
     if '--check-gui-dependencies' not in sys.argv:
-- 
GitLab