From 722d173ea7594512df45681db5b83ff5a6642ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 13 Nov 2025 14:23:25 +0100 Subject: [PATCH 1/2] tests: don't use pkill in audio tests pkill is not available in minimal template. Use grep over /proc instead. Fixes QubesOS/qubes-issues#10404 --- qubes/tests/integ/audio.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/qubes/tests/integ/audio.py b/qubes/tests/integ/audio.py index d81e1f83e..a35353855 100644 --- a/qubes/tests/integ/audio.py +++ b/qubes/tests/integ/audio.py @@ -418,10 +418,14 @@ def common_audio_record_muted(self): f"pw-record {self.pwplay_opts} --format=f32 --rate=44100 " f"--channels=1 - > audio_rec.snd" ) - kill_cmd = "pkill --signal SIGINT pw-record" + kill_cmd = ( + "kill -SIGINT $(grep -l pw-record /proc/*/comm | cut -f 3 -d /)" + ) else: cmd = "parecord --raw audio_rec.snd" - kill_cmd = "pkill --signal SIGINT parecord" + kill_cmd = ( + "kill -SIGINT $(grep -l parecord /proc/*/comm | cut -f 3 -d /)" + ) record = self.loop.run_until_complete( self.testvm1.run( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE @@ -481,13 +485,17 @@ def common_audio_record_unmuted(self, attach_mic=True, detach_mic=True): f"pw-record {self.pwplay_opts} --format=f32 --rate=44100 " "--channels=1 - > audio_rec.snd" ) - kill_cmd = "pkill --signal SIGINT pw-record" + kill_cmd = ( + "kill -SIGINT $(grep -l pw-record /proc/*/comm | cut -f 3 -d /)" + ) else: record_cmd = ( "parecord --raw --format=float32le --rate=44100 " "--channels=1 audio_rec.snd" ) - kill_cmd = "pkill --signal SIGINT parecord" + kill_cmd = ( + "kill -SIGINT $(grep -l parecord /proc/*/comm | cut -f 3 -d /)" + ) record = self.loop.run_until_complete(self.testvm1.run(record_cmd)) # give it time to start recording self.loop.run_until_complete(asyncio.sleep(2)) From ba9c06e77cfd2d3809437285d38abaab95cc6e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 13 Nov 2025 14:52:42 +0100 Subject: [PATCH 2/2] tests: allow audiovm access is_preload property Similar to https://github.com/QubesOS/qubes-mgmt-salt-dom0-virtual-machines/pull/86 --- qubes/tests/integ/audio.py | 1 + 1 file changed, 1 insertion(+) diff --git a/qubes/tests/integ/audio.py b/qubes/tests/integ/audio.py index a35353855..a3f575235 100644 --- a/qubes/tests/integ/audio.py +++ b/qubes/tests/integ/audio.py @@ -122,6 +122,7 @@ def create_audio_vm(self, backend, start=True): admin.vm.property.Get +xid {vm} @tag:audiovm-{vm} allow target=dom0 admin.vm.property.Get +stubdom_xid {vm} @tag:audiovm-{vm} allow target=dom0 admin.vm.property.Get +virt_mode {vm} @tag:audiovm-{vm} allow target=dom0 +admin.vm.property.Get +is_preload {vm} @tag:audiovm-{vm} allow target=dom0 admin.vm.feature.CheckWithTemplate +audio {vm} @tag:audiovm-{vm} allow target=dom0 admin.vm.feature.CheckWithTemplate +audio-model {vm} @tag:audiovm-{vm} allow target=dom0 """.format(