@@ -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_devices
from qemu.binutils import binary_get_machines
from qemu.binutils import binary_get_version
from qemu.machine import QEMUMachine
@@ -158,6 +159,16 @@ class Test(avocado.Test):
if self.machine not in binary_get_machines(self.qemu_bin):
self.cancel(fmt.format(self.machine))
+ # Verify devices
+ self.devices = self.tags.get('device', [])
+ bin_devices = binary_get_devices(self.qemu_bin)
+ logger.debug('devices: {}'.format(self.devices))
+ fmt = "Test expects device '{}' which is missing from QEMU binary"
+ for dev in self.devices:
+ logger.debug(dev)
+ if dev not in bin_devices:
+ self.cancel(fmt.format(dev))
+
def _new_vm(self, *args):
vm = QEMUMachine(self.qemu_bin, sock_dir=tempfile.mkdtemp())
if args:
We already use the 'device' tag in Avocado tests. If any of the requested device is not available in the QEMU binary, the tests will be cancelled (skipped). Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- RFC because I'm not certain, we might want to find bugs where a device is missing in the built binary... --- tests/acceptance/avocado_qemu/__init__.py | 11 +++++++++++ 1 file changed, 11 insertions(+)