diff --git a/qubes/tests/__init__.py b/qubes/tests/__init__.py index 8f39eae4..1505a07d 100644 --- a/qubes/tests/__init__.py +++ b/qubes/tests/__init__.py @@ -223,7 +223,7 @@ class QubesTestCase(unittest.TestCase): def __str__(self): return '{}/{}/{}'.format( - '.'.join(self.__class__.__module__.split('.')[2:]), + self.__class__.__module__, self.__class__.__name__, self._testMethodName) @@ -971,6 +971,8 @@ def load_tests(loader, tests, pattern): # pylint: disable=unused-argument 'qubes.tests.int.tools.qubes_create', 'qubes.tests.int.tools.qvm_prefs', 'qubes.tests.int.tools.qvm_run', + # external modules + 'qubes.tests.extra', ): tests.addTests(loader.loadTestsFromName(modname)) diff --git a/qubes/tests/extra.py b/qubes/tests/extra.py index c5c44a5a..21b67063 100644 --- a/qubes/tests/extra.py +++ b/qubes/tests/extra.py @@ -32,6 +32,10 @@ class ExtraTestCase(qubes.tests.SystemTestsMixin, qubes.tests.QubesTestCase): template = None + def setUp(self): + super(ExtraTestCase, self).setUp() + self.init_default_template(self.template) + def create_vms(self, names): """ Create AppVMs for the duration of the test. Will be automatically @@ -47,14 +51,15 @@ class ExtraTestCase(qubes.tests.SystemTestsMixin, qubes.tests.QubesTestCase): for vmname in names: vm = self.app.add_new_vm(qubes.vm.appvm.AppVM, name=self.make_vm_name(vmname), - template=template) - vm.create_on_disk(verbose=False) + template=template, + label='red') + vm.create_on_disk() self.save_and_reload_db() # get objects after reload vms = [] for vmname in names: - vms.append(self.app.domains[self.make_vm_name]) + vms.append(self.app.domains[self.make_vm_name(vmname)]) return vms def enable_network(self): @@ -66,7 +71,7 @@ class ExtraTestCase(qubes.tests.SystemTestsMixin, qubes.tests.QubesTestCase): def load_tests(loader, tests, pattern): for entry in pkg_resources.iter_entry_points('qubes.tests.extra'): - for test_case in entry(): + for test_case in entry.load()(): tests.addTests(loader.loadTestsFromTestCase(test_case)) try: diff --git a/qubes/tests/int/dom0_update.py b/qubes/tests/int/dom0_update.py index 13dc7bc8..d14fcfed 100644 --- a/qubes/tests/int/dom0_update.py +++ b/qubes/tests/int/dom0_update.py @@ -226,7 +226,7 @@ Test package logpath = os.path.join(self.tmpdir, 'dom0-update-output.txt') try: - subprocess.check_call(['sudo', 'qubes-dom0-update', '-y'] + + subprocess.check_call(['sudo', '-E', 'qubes-dom0-update', '-y'] + self.dom0_update_common_opts, stdout=open(logpath, 'w'), stderr=subprocess.STDOUT) @@ -256,7 +256,7 @@ Test package shutil.rmtree('/var/lib/qubes/updates/repodata') logpath = os.path.join(self.tmpdir, 'dom0-update-output.txt') try: - subprocess.check_call(['sudo', 'qubes-dom0-update', '-y', + subprocess.check_call(['sudo', '-E', 'qubes-dom0-update', '-y', '--clean'] + self.dom0_update_common_opts, stdout=open(logpath, 'w'), diff --git a/qubes/vm/templatevm.py b/qubes/vm/templatevm.py index f2cd0a29..52ee5dea 100644 --- a/qubes/vm/templatevm.py +++ b/qubes/vm/templatevm.py @@ -15,6 +15,11 @@ class TemplateVM(qubes.vm.qubesvm.QubesVM): '''COW image''' return self.storage.rootcow_img + @property + def appvms(self): + for vm in self.app.domains: + if hasattr(vm, 'template') and vm.template is self: + yield vm def __init__(self, *args, **kwargs): super(TemplateVM, self).__init__(*args, **kwargs)