We already use the 'machine' tag in Avocado tests. If the requested machine is not available in the QEMU binary, the tests will be cancelled (skipped):
$ python -m avocado --show=app run tests/acceptance/x86_cpu_model_versions.py ... (04/11) CascadelakeArchCapabilities.test_4_1: CANCEL: Test expects machine 'pc-i440fx-4.1' which is missing from QEMU binary (0.10 s) (05/11) CascadelakeArchCapabilities.test_4_0: CANCEL: Test expects machine 'pc-i440fx-4.0' which is missing from QEMU binary (0.11 s) ... Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- tests/acceptance/avocado_qemu/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index e7d5affe24..53ec8512d1 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -20,6 +20,7 @@ SRC_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..', '..', '..') sys.path.append(os.path.join(SRC_ROOT_DIR, 'python')) from qemu.binutils import binary_get_arch +from qemu.binutils import binary_get_machines from qemu.binutils import binary_get_version from qemu.machine import QEMUMachine @@ -118,9 +119,6 @@ class Test(avocado.Test): self.arch = self.params.get('arch', default=self._get_unique_tag_val('arch')) - self.machine = self.params.get('machine', - default=self._get_unique_tag_val('machine')) - # Verify qemu_bin default_qemu_bin = pick_default_qemu_bin(arch=self.arch) self.qemu_bin = self.params.get('qemu_bin', @@ -151,6 +149,15 @@ class Test(avocado.Test): if bin_arch != self.arch: self.cancel(fmt.format(self.arch, bin_arch)) + # Verify machine + self.machine = self.params.get('machine', + default=self._get_unique_tag_val('machine')) + logger.debug('machine: {}'.format(self.machine)) + if self.machine: + fmt = "Test expects machine '{}' which is missing from QEMU binary" + if self.machine not in binary_get_machines(self.qemu_bin): + self.cancel(fmt.format(self.machine)) + def _new_vm(self, *args): vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp()) if args: -- 2.21.1