We already use the 'arch' tag in Avocado tests. Tests can set it to restrict their use on a particular target architecture.
If the QEMU binary does not target the required architecture, the tests will be cancelled (skipped): $ avocado --show=app run tests/acceptance/boot_linux_console.py ... (14/19) BootLinuxConsole.test_arm_cubieboard_initrd: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.16 s) (15/19) BootLinuxConsole.test_arm_cubieboard_sata: CANCEL: Test expects arch 'arm' while QEMU binary is targetting 'mips' (0.18 s) (16/19) BootLinuxConsole.test_s390x_s390_ccw_virtio: CANCEL: Test expects arch 's390x' while QEMU binary is targetting 'mips' (0.14 s) (17/19) BootLinuxConsole.test_alpha_clipper: CANCEL: Test expects arch 'alpha' while QEMU binary is targetting 'mips' (0.16 s) (18/19) BootLinuxConsole.test_ppc64_pseries: CANCEL: Test expects arch 'ppc64' while QEMU binary is targetting 'mips' (0.18 s) (19/19) BootLinuxConsole.test_m68k_q800: CANCEL: Test expects arch 'm68k' while QEMU binary is targetting 'mips' (0.17 s) RESULTS : PASS 2 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0 | CANCEL 16 JOB TIME : 19.18 s Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- tests/acceptance/avocado_qemu/__init__.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index 67c75822d5..e7d5affe24 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -19,6 +19,7 @@ import avocado 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_version from qemu.machine import QEMUMachine @@ -142,6 +143,14 @@ class Test(avocado.Test): if bin_v[0] < min_v[0] or bin_v[1] < min_v[1] or bin_v[2] < min_v[2]: self.cancel(fmt.format(min_version, bin_v[0], bin_v[1], bin_v[2])) + # Verify architecture + if self.arch: + fmt = "Test expects arch '{}' while QEMU binary is targetting '{}'" + bin_arch = binary_get_arch(self.qemu_bin) + logger.debug('arch: {}'.format(bin_arch)) + if bin_arch != self.arch: + self.cancel(fmt.format(self.arch, bin_arch)) + def _new_vm(self, *args): vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp()) if args: -- 2.21.1