From 42cbd9ff689b5f7bb53da5ee58c7eff07bd3fbf9 Mon Sep 17 00:00:00 2001 From: Wojtek Porczyk Date: Mon, 29 May 2017 19:08:38 +0200 Subject: [PATCH] qubes.tests asyncio, part 2 QubesOS/qubes-issues#2622 --- qubes/tests/__init__.py | 9 ++++++++- qubes/tests/integ/vm_qrexec_gui.py | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/qubes/tests/__init__.py b/qubes/tests/__init__.py index 4b2b9857..4174a970 100644 --- a/qubes/tests/__init__.py +++ b/qubes/tests/__init__.py @@ -245,7 +245,12 @@ class _QrexecPolicyContext(object): 'allow' if allow else 'deny') def _change(self, add=True): - with self._filename.open('r+') as policy: + try: + policy = self._filename.open('r+') + except FileNotFoundError: + policy = self._filename.open('w+') + + try: policy_rules = policy.readlines() if add: policy_rules.insert(0, self._rule) @@ -254,6 +259,8 @@ class _QrexecPolicyContext(object): policy.truncate(0) policy.seek(0) policy.write(''.join(policy_rules)) + finally: + policy.close() def __enter__(self): self._change(add=True) diff --git a/qubes/tests/integ/vm_qrexec_gui.py b/qubes/tests/integ/vm_qrexec_gui.py index 79ef2014..7556089a 100644 --- a/qubes/tests/integ/vm_qrexec_gui.py +++ b/qubes/tests/integ/vm_qrexec_gui.py @@ -234,7 +234,10 @@ class TC_00_AppVMMixin(qubes.tests.SystemTestsMixin): @asyncio.coroutine def run(self): p = yield from self.testvm1.run( - 'echo test; exec >&-; cat > /dev/null') + 'echo test; exec >&-; cat > /dev/null', + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) # this will hang on test failure stdout = yield from p.stdout.read()