From 4b8e5c37046a1e912ff8f31c4949f1f98bbfdc17 Mon Sep 17 00:00:00 2001 From: Wojtek Porczyk Date: Mon, 5 Jun 2017 16:14:30 +0200 Subject: [PATCH] qubes/tests/run: refuse to run tests if qubesd is running Test suite creates some VMs and needs to pass the knowledge about them to qrexec policy checker. This is done using Admin API, so we need to substitute qubesd with our own API server. --- qubes/tests/run.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/qubes/tests/run.py b/qubes/tests/run.py index 8686d3d1..20171845 100755 --- a/qubes/tests/run.py +++ b/qubes/tests/run.py @@ -32,6 +32,7 @@ import unittest import unittest.signals import qubes.tests +import qubes.api.admin class CursesColor(dict): colors = ( @@ -331,6 +332,11 @@ parser.add_argument('--no-kmsg', '--i-am-smarter-than-kay-sievers', action='store_false', dest='kmsg', help='do not abuse kernel ring-buffer') +parser.add_argument('--allow-running-along-qubesd', + action='store_true', default=False, + help='allow running in parallel with qubesd;' + ' this is DANGEROUS and WILL RESULT IN INCONSISTENT SYSTEM STATE') + parser.add_argument('names', metavar='TESTNAME', action='store', nargs='*', help='list of tests to run named like in description ' @@ -406,6 +412,10 @@ def main(): ha_kmsg.setLevel(logging.CRITICAL) logging.root.addHandler(ha_kmsg) + if not args.allow_running_along_qubesd \ + and os.path.exists(qubes.api.admin.QUBESD_ADMIN_SOCK): + parser.error('refusing to run until qubesd is disabled') + runner = unittest.TextTestRunner(stream=sys.stdout, verbosity=(args.verbose-args.quiet), failfast=args.failfast)