fprintd/SOURCES/158.patch

143 lines
5.2 KiB
Diff

From e5b0e0948a422e5cc241efe0b55a1e841e2ca29c Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Thu, 26 Aug 2021 14:26:40 +0200
Subject: [PATCH 1/3] tests: Set G_MESSAGES_DEBUG=all for daemon as it is
needed
Otherwise executing the test script outside of the meson environment
will fail as the inhibitor test relies on being able to parse the log.
---
tests/fprintd.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/fprintd.py b/tests/fprintd.py
index 8fa615f..801ee81 100644
--- a/tests/fprintd.py
+++ b/tests/fprintd.py
@@ -237,6 +237,8 @@ class FPrintdTest(dbusmock.DBusTestCase):
env['G_DEBUG'] = 'fatal-criticals'
env['STATE_DIRECTORY'] = (self.state_dir + ':' + '/hopefully/a/state_dir_path/that/shouldnt/be/writable')
env['RUNTIME_DIRECTORY'] = self.run_dir
+ # The tests parses the debug output for suspend inhibitor debugging
+ env['G_MESSAGES_DEBUG'] = 'all'
argv = [self.paths['daemon'], '-t']
valgrind = os.getenv('VALGRIND')
--
GitLab
From 8ca81d5166b47300e99ba5637f4b3c7fa9a00cd4 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Thu, 26 Aug 2021 14:23:15 +0200
Subject: [PATCH 2/3] tests: Use dbusmock start_system_bus instead of GLib
server
---
tests/fprintd.py | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/tests/fprintd.py b/tests/fprintd.py
index 801ee81..6754a56 100644
--- a/tests/fprintd.py
+++ b/tests/fprintd.py
@@ -211,14 +211,8 @@ class FPrintdTest(dbusmock.DBusTestCase):
n = os.path.basename(f)[:-4]
cls.prints[n] = load_image(f)
-
- cls.test_bus = Gio.TestDBus.new(Gio.TestDBusFlags.NONE)
- cls.test_bus.up()
- cls.addClassCleanup(cls.test_bus.down)
- cls.test_bus.unset()
- addr = cls.test_bus.get_bus_address()
- os.environ['DBUS_SYSTEM_BUS_ADDRESS'] = addr
- cls.dbus = Gio.DBusConnection.new_for_address_sync(addr,
+ cls.start_system_bus()
+ cls.dbus = Gio.DBusConnection.new_for_address_sync(os.environ['DBUS_SYSTEM_BUS_ADDRESS'],
Gio.DBusConnectionFlags.MESSAGE_BUS_CONNECTION |
Gio.DBusConnectionFlags.AUTHENTICATION_CLIENT, None, None)
assert cls.dbus.is_closed() == False
@@ -229,7 +223,6 @@ class FPrintdTest(dbusmock.DBusTestCase):
dbusmock.DBusTestCase.tearDownClass()
del cls.dbus
- del cls.test_bus
def daemon_start(self, driver='Virtual image device for debugging'):
timeout = get_timeout('daemon_start') # seconds
--
GitLab
From 84ad711d48952e129abfad3bd2f509d30af65eb6 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Thu, 26 Aug 2021 14:25:12 +0200
Subject: [PATCH 3/3] tests: Better cleanup helper processes and objects
We were leaking the bus connections for the proxy objects. Also, now the
subprocesses will be forcefully killed at shutdown.
---
tests/fprintd.py | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/tests/fprintd.py b/tests/fprintd.py
index 6754a56..f828b27 100644
--- a/tests/fprintd.py
+++ b/tests/fprintd.py
@@ -243,6 +243,7 @@ class FPrintdTest(dbusmock.DBusTestCase):
self.valgrind = True
self.kill_daemon = False
self.daemon_log = OutputChecker()
+ self.addCleanup(self.daemon_log.force_close)
self.daemon = subprocess.Popen(argv,
env=env,
stdout=self.daemon_log.fd,
@@ -330,14 +331,23 @@ class FPrintdTest(dbusmock.DBusTestCase):
self._polkitd, self._polkitd_obj = self.spawn_server_template(
polkitd_template, {}, stdout=subprocess.PIPE)
+ self.addCleanup(self.stop_server, '_polkitd', '_polkitd_obj')
return self._polkitd
- def polkitd_stop(self):
- if self._polkitd is None:
+ def stop_server(self, proc_attr, obj_attr):
+ proc = getattr(self, proc_attr, None)
+ if proc is None:
return
- self._polkitd.terminate()
- self._polkitd.wait()
+
+ proc.terminate()
+ try:
+ proc.wait(timeout=1)
+ except subprocess.TimeoutExpired as e:
+ proc.kill()
+
+ delattr(self, proc_attr)
+ delattr(self, obj_attr)
def polkitd_allow_all(self):
self._polkitd_obj.SetAllowed([FprintDevicePermission.set_username,
@@ -593,7 +603,6 @@ class FPrintdVirtualDeviceBaseTest(FPrintdVirtualImageDeviceBaseTests):
self.manager = None
self.device = None
self.polkitd_start()
- self.addCleanup(self.polkitd_stop)
fifo_path = os.path.join(self.tmpdir, 'logind_inhibit_fifo')
os.mkfifo(fifo_path)
@@ -608,6 +617,7 @@ class FPrintdVirtualDeviceBaseTest(FPrintdVirtualImageDeviceBaseTests):
'ret = os.open("%s", os.O_WRONLY)\n' % fifo_path +
'from gi.repository import GLib\n' +
'GLib.idle_add(lambda fd: os.close(fd), ret)')
+ self.addCleanup(self.stop_server, 'logind', 'logind_obj')
self.daemon_start(self.driver_name)
self.wait_got_delay_inhibitor(timeout=5)
--
GitLab