[PATCH 1/2] Add error message check in qemuxml2argv tests

Sebastian Mitterle smitterl at redhat.com
Tue Sep 22 11:57:39 UTC 2020


When an error is expected, the error message will be checked.
This is expressed by creating an additional ".err" file containing
the expected error message.

It is added in order to make sure the expected errors
are not masked by other errors during test execution while
leveraging the existing framework.

In order to keep it simple, an input file cannot be reused
anymore to cover several expected error cases configured
in the test code. An input file can still be reused by creating
a test case specific symlink.

For consistency, the mock needs to report an error now, too,
as every failure must have an error; otherwise a test case will
fail.

Require LC_ALL=C explicitly to make sure error messages are not
localized for testing.

Lastly, remove trailing blank in error message for domain_addr.c
virDomainCCWAddressAssign, uncovered by this change.

Signed-off-by: Sebastian Mitterle <smitterl at redhat.com>
Suggested-by: Peter Krempa <pkrempa at redhat.com>
---
 src/conf/domain_addr.c                        |  2 +-
 .../440fx-ide-address-conflict.err            |  1 +
 tests/qemuxml2argvdata/440fx-wrong-root.err   |  1 +
 .../qemuxml2argvdata/aarch64-acpi-nouefi.err  |  1 +
 ...4-features-sve-disabled.aarch64-latest.err |  1 +
 .../aarch64-features-sve.aarch64-4.0.0.err    |  1 +
 .../aarch64-features-wrong.aarch64-latest.err |  1 +
 tests/qemuxml2argvdata/aarch64-gic-host.err   |  1 +
 .../qemuxml2argvdata/aarch64-gic-invalid.err  |  1 +
 .../qemuxml2argvdata/aarch64-gic-not-arm.err  |  1 +
 .../qemuxml2argvdata/aarch64-gic-not-virt.err |  1 +
 tests/qemuxml2argvdata/aarch64-gic-v3.err     |  1 +
 .../qemuxml2argvdata/aarch64-kvm-32-on-64.err |  1 +
 tests/qemuxml2argvdata/boot-dev+order.err     |  1 +
 .../boot-menu-enable-with-timeout-invalid.err |  1 +
 .../boot-menu-enable-with-timeout.err         |  1 +
 .../chardev-reconnect-generated-path.err      |  1 +
 .../chardev-reconnect-invalid-timeout.err     |  1 +
 .../qemuxml2argvdata/cpu-cache-emulate-l2.err |  1 +
 .../cpu-cache-passthrough-l3.err              |  1 +
 .../cpu-cache-passthrough3.err                |  1 +
 .../cpu-host-model-nofallback.err             |  1 +
 .../cpu-hotplug-granularity.err               |  1 +
 tests/qemuxml2argvdata/cpu-nofallback.err     |  1 +
 tests/qemuxml2argvdata/cpu-numa-disjoint.err  |  1 +
 .../qemuxml2argvdata/cpu-numa-memshared-1.err |  1 +
 .../qemuxml2argvdata/cpu-numa-memshared-1.xml |  1 +
 tests/qemuxml2argvdata/cpu-numa-memshared.err |  1 +
 tests/qemuxml2argvdata/cpu-numa3.err          |  1 +
 .../cpu-qemu-host-passthrough.err             |  1 +
 tests/qemuxml2argvdata/cpu-s390-features.err  |  1 +
 .../cputune-iothreadsched-toomuch.err         |  1 +
 .../cputune-vcpusched-overlap.err             |  1 +
 .../default-video-type-x86_64-caps-test-0.err |  1 +
 .../disk-address-conflict.err                 |  1 +
 ...hing-partition-nosupport.x86_64-latest.err |  1 +
 .../disk-device-lun-type-invalid.err          |  1 +
 .../disk-fdc-incompatible-address.err         |  1 +
 .../qemuxml2argvdata/disk-floppy-pseries.err  |  1 +
 tests/qemuxml2argvdata/disk-fmt-cow.err       |  1 +
 tests/qemuxml2argvdata/disk-fmt-dir.err       |  1 +
 tests/qemuxml2argvdata/disk-fmt-iso.err       |  1 +
 .../disk-hostdev-scsi-address-conflict.err    |  1 +
 .../disk-ide-incompatible-address.err         |  1 +
 ...-network-iscsi-auth-secrettype-invalid.err |  1 +
 ...sk-network-iscsi-auth-wrong-secrettype.err |  1 +
 .../disk-network-rbd-no-colon.err             |  1 +
 .../disk-network-source-auth-both.err         |  1 +
 tests/qemuxml2argvdata/disk-same-targets.err  |  1 +
 .../disk-sata-incompatible-address.err        |  1 +
 .../disk-scsi-disk-vpd-build-error.err        |  1 +
 .../disk-scsi-incompatible-address.err        |  1 +
 tests/qemuxml2argvdata/disk-shared-qcow.err   |  1 +
 tests/qemuxml2argvdata/disk-usb-nosupport.err |  1 +
 tests/qemuxml2argvdata/disk-usb-pci.err       |  1 +
 ...raphics-sdl-egl-headless.x86_64-latest.err |  1 +
 ...ice-invalid-egl-headless.x86_64-latest.err |  1 +
 .../hostdev-mdev-display-missing-graphics.err |  1 +
 .../hostdev-mdev-invalid-target-address.err   |  1 +
 .../hostdev-mdev-src-address-invalid.err      |  1 +
 ...vhost-scsi-pci-boot-fail.x86_64-latest.err |  1 +
 ...ys-mdev-vfio-ap-boot-fail.s390x-latest.err |  1 +
 ...subsys-mdev-vfio-ccw-duplicate-address.err |  1 +
 ...v-subsys-mdev-vfio-ccw-invalid-address.err |  1 +
 .../hostdev-subsys-mdev-vfio-ccw.err          |  1 +
 .../hostdev-vfio-zpci-autogenerate-fids.err   |  1 +
 .../hostdev-vfio-zpci-duplicate.err           |  1 +
 ...ostdev-vfio-zpci-invalid-uid-valid-fid.err |  1 +
 .../hostdev-vfio-zpci-set-zero.err            |  1 +
 .../hostdev-vfio-zpci-uid-set-zero.err        |  1 +
 .../hostdev-vfio-zpci-wrong-arch.err          |  1 +
 tests/qemuxml2argvdata/hostdev-vfio-zpci.err  |  1 +
 .../hostdevs-drive-address-conflict.err       |  1 +
 .../hugepages-default-1G-nodeset-2M.err       |  1 +
 .../hugepages-memaccess-invalid.err           |  1 +
 .../qemuxml2argvdata/hugepages-memaccess3.err |  1 +
 .../hugepages-nodeset-nonexist.err            |  1 +
 .../hugepages-numa-nodeset-nonexist.err       |  1 +
 ...ntel-iommu-wrong-machine.x86_64-latest.err |  1 +
 tests/qemuxml2argvdata/iothreads-nocap.err    |  1 +
 tests/qemuxml2argvdata/luks-disk-invalid.err  |  1 +
 .../luks-disks-source-both.err                |  1 +
 .../luks-disks-source-qcow2.err               |  1 +
 .../mach-virt-serial-invalid-machine.err      |  1 +
 .../machine-aeskeywrap-off-cap.err            |  1 +
 .../machine-aeskeywrap-off-caps.err           |  1 +
 .../machine-aeskeywrap-on-cap.err             |  1 +
 .../machine-aeskeywrap-on-caps.err            |  1 +
 .../machine-deakeywrap-off-cap.err            |  1 +
 .../machine-deakeywrap-off-caps.err           |  1 +
 .../machine-deakeywrap-on-cap.err             |  1 +
 .../machine-deakeywrap-on-caps.err            |  1 +
 .../machine-loadparm-s390-char-invalid.err    |  1 +
 .../machine-loadparm-s390-len-invalid.err     |  1 +
 tests/qemuxml2argvdata/memory-align-fail.err  |  1 +
 .../memory-hotplug-nonuma.err                 |  1 +
 tests/qemuxml2argvdata/minimal-no-memory.err  |  1 +
 tests/qemuxml2argvdata/misc-enable-s4.err     |  1 +
 tests/qemuxml2argvdata/missing-machine.err    |  1 +
 tests/qemuxml2argvdata/net-hostdev-fail.err   |  1 +
 tests/qemuxml2argvdata/net-vhostuser-fail.err |  1 +
 .../qemuxml2argvdata/net-vhostuser-multiq.err |  1 +
 .../net-virtio-rxqueuesize-invalid-size.err   |  1 +
 tests/qemuxml2argvdata/net-virtio-teaming.err |  1 +
 ...d-auto-vcpu-static-numatune-no-nodeset.err |  1 +
 .../numatune-memnode-no-memory.err            |  1 +
 .../numatune-memnode-nocpu.err                |  1 +
 tests/qemuxml2argvdata/numatune-memnode.err   |  1 +
 .../numatune-memnodes-problematic.err         |  1 +
 .../numatune-memory-invalid-nodeset.err       |  1 +
 ...umatune-static-nodeset-exceed-hostnode.err |  1 +
 .../pci-bridge-duplicate-index.err            |  1 +
 .../pci-bridge-negative-index-invalid.err     |  1 +
 tests/qemuxml2argvdata/pci-bus-invalid.err    |  1 +
 tests/qemuxml2argvdata/pci-domain-invalid.err |  1 +
 .../pci-expander-bus-bad-bus.err              |  1 +
 .../pci-expander-bus-bad-machine.err          |  1 +
 .../pci-expander-bus-bad-node.err             |  1 +
 .../qemuxml2argvdata/pci-function-invalid.err |  1 +
 tests/qemuxml2argvdata/pci-root-address.err   |  1 +
 .../pci-root-nonzero-index.err                |  1 +
 tests/qemuxml2argvdata/pci-slot-invalid.err   |  1 +
 .../pcie-expander-bus-bad-bus.err             |  1 +
 .../pcie-expander-bus-bad-machine.err         |  1 +
 .../pcie-root-port-too-many.err               |  1 +
 tests/qemuxml2argvdata/pcihole64-none.err     |  1 +
 tests/qemuxml2argvdata/ppc64-tpm-double.err   |  1 +
 .../ppc64-tpmproxy-double.err                 |  1 +
 .../pseries-cpu-compat-power9.err             |  1 +
 .../pseries-default-phb-numa-node.err         |  1 +
 .../qemuxml2argvdata/pseries-features-ccf.err |  1 +
 .../qemuxml2argvdata/pseries-features-ccf.xml |  1 +
 .../pseries-features-cfpc.err                 |  1 +
 .../pseries-features-cfpc.xml                 |  1 +
 .../pseries-features-hpt-pagesize.err         |  1 +
 .../pseries-features-hpt-pagesize.xml         |  1 +
 .../qemuxml2argvdata/pseries-features-htm.err |  1 +
 .../qemuxml2argvdata/pseries-features-htm.xml |  1 +
 .../pseries-features-htp-resize.err           |  1 +
 .../pseries-features-htp-resize.xml           |  1 +
 .../qemuxml2argvdata/pseries-features-ibs.err |  1 +
 .../qemuxml2argvdata/pseries-features-ibs.xml |  1 +
 .../pseries-features-invalid-machine.err      |  1 +
 .../pseries-features-nested-hv.err            |  1 +
 .../pseries-features-nested-hv.xml            |  1 +
 .../pseries-features-sbbc.err                 |  1 +
 .../pseries-features-sbbc.xml                 |  1 +
 .../qemuxml2argvdata/pseries-no-parallel.err  |  1 +
 .../pseries-panic-address.err                 |  1 +
 .../pseries-phb-invalid-target-index-1.err    |  1 +
 .../pseries-phb-invalid-target-index-2.err    |  1 +
 .../pseries-phb-invalid-target-index-3.err    |  1 +
 .../pseries-serial-invalid-machine.err        |  1 +
 .../pseries-spaprvio-invalid.err              |  1 +
 .../pseries-vio-address-clash.err             |  1 +
 .../qemuxml2argvdata/q35-dmi-bad-address1.err |  1 +
 .../qemuxml2argvdata/q35-dmi-bad-address2.err |  1 +
 tests/qemuxml2argvdata/q35-noacpi-uefi.err    |  1 +
 tests/qemuxml2argvdata/q35-wrong-root.err     |  1 +
 .../reboot-timeout-enabled.err                |  1 +
 tests/qemuxml2argvdata/s390-no-parallel.err   |  1 +
 tests/qemuxml2argvdata/s390-panic-address.err |  1 +
 .../seclabel-device-duplicates.err            |  1 +
 tests/qemuxml2argvdata/seclabel-multiple.err  |  1 +
 .../serial-unix-missing-source.err            |  1 +
 .../shmem-invalid-address.err                 |  1 +
 tests/qemuxml2argvdata/shmem-invalid-size.err |  1 +
 tests/qemuxml2argvdata/shmem-msi-only.err     |  1 +
 tests/qemuxml2argvdata/shmem-small-size.err   |  1 +
 tests/qemuxml2argvdata/shmem.err              |  1 +
 tests/qemuxml2argvdata/smbios-date.err        |  1 +
 tests/qemuxml2argvdata/smbios-uuid-match.err  |  1 +
 .../tpm-no-backend-invalid.err                |  1 +
 .../tseg-explicit-size.x86_64-2.10.0.err      |  1 +
 .../tseg-i440fx.x86_64-latest.err             |  1 +
 .../tseg-invalid-size.x86_64-latest.err       |  1 +
 tests/qemuxml2argvdata/usb-bus-missing.err    |  1 +
 ...usb-controller-default-unavailable-q35.err |  1 +
 ...sb-controller-explicit-unavailable-q35.err |  1 +
 .../usb-controller-qemu-xhci-limit.err        |  1 +
 .../usb-controller-qemu-xhci-unavailable.err  |  1 +
 .../usb-controller-xhci-limit.err             |  1 +
 tests/qemuxml2argvdata/usb-hub-conflict.err   |  1 +
 .../qemuxml2argvdata/usb-hub-nonexistent.err  |  1 +
 .../usb-ich9-no-companion.err                 |  1 +
 tests/qemuxml2argvdata/usb-none-hub.err       |  1 +
 tests/qemuxml2argvdata/usb-none-other.err     |  1 +
 tests/qemuxml2argvdata/usb-none-usbtablet.err |  1 +
 .../usb-ports-out-of-range.err                |  1 +
 .../usb-too-long-port-path-invalid.err        |  1 +
 .../vhost-user-fs-readonly.x86_64-latest.err  |  1 +
 .../qemuxml2argvdata/vhost_queues-invalid.err |  1 +
 .../video-invalid-multiple-devices.err        |  1 +
 ...splay-device-pci-address.x86_64-latest.err |  1 +
 .../virtio-options-controller-ats.err         |  1 +
 .../virtio-options-controller-iommu.err       |  1 +
 .../virtio-options-controller-packed.err      |  1 +
 .../virtio-options-disk-ats.err               |  1 +
 .../virtio-options-disk-iommu.err             |  1 +
 .../virtio-options-disk-packed.err            |  1 +
 .../virtio-options-fs-ats.err                 |  1 +
 .../virtio-options-fs-iommu.err               |  1 +
 .../virtio-options-fs-packed.err              |  1 +
 .../virtio-options-input-ats.err              |  1 +
 .../virtio-options-input-iommu.err            |  1 +
 .../virtio-options-input-packed.err           |  1 +
 .../virtio-options-memballoon-ats.err         |  1 +
 .../virtio-options-memballoon-iommu.err       |  1 +
 .../virtio-options-memballoon-packed.err      |  1 +
 .../virtio-options-net-ats.err                |  1 +
 .../virtio-options-net-iommu.err              |  1 +
 .../virtio-options-net-packed.err             |  1 +
 .../virtio-options-rng-ats.err                |  1 +
 .../virtio-options-rng-iommu.err              |  1 +
 .../virtio-options-rng-packed.err             |  1 +
 .../virtio-options-video-ats.err              |  1 +
 .../virtio-options-video-iommu.err            |  1 +
 .../virtio-options-video-packed.err           |  1 +
 .../qemuxml2argvdata/virtio-rng-egd-crash.err |  1 +
 ...ansitional-not-supported.x86_64-latest.err |  1 +
 tests/qemuxml2argvmock.c                      |  3 ++
 tests/qemuxml2argvtest.c                      | 38 +++++++++++++------
 tests/testutilsqemu.c                         |  1 +
 tests/testutilsqemu.h                         |  1 +
 224 files changed, 252 insertions(+), 12 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/440fx-ide-address-conflict.err
 create mode 100644 tests/qemuxml2argvdata/440fx-wrong-root.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-acpi-nouefi.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-features-sve-disabled.aarch64-latest.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-features-sve.aarch64-4.0.0.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-features-wrong.aarch64-latest.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-gic-host.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-gic-invalid.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-gic-not-arm.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-gic-not-virt.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-gic-v3.err
 create mode 100644 tests/qemuxml2argvdata/aarch64-kvm-32-on-64.err
 create mode 100644 tests/qemuxml2argvdata/boot-dev+order.err
 create mode 100644 tests/qemuxml2argvdata/boot-menu-enable-with-timeout-invalid.err
 create mode 100644 tests/qemuxml2argvdata/boot-menu-enable-with-timeout.err
 create mode 100644 tests/qemuxml2argvdata/chardev-reconnect-generated-path.err
 create mode 100644 tests/qemuxml2argvdata/chardev-reconnect-invalid-timeout.err
 create mode 100644 tests/qemuxml2argvdata/cpu-cache-emulate-l2.err
 create mode 100644 tests/qemuxml2argvdata/cpu-cache-passthrough-l3.err
 create mode 100644 tests/qemuxml2argvdata/cpu-cache-passthrough3.err
 create mode 100644 tests/qemuxml2argvdata/cpu-host-model-nofallback.err
 create mode 100644 tests/qemuxml2argvdata/cpu-hotplug-granularity.err
 create mode 100644 tests/qemuxml2argvdata/cpu-nofallback.err
 create mode 100644 tests/qemuxml2argvdata/cpu-numa-disjoint.err
 create mode 100644 tests/qemuxml2argvdata/cpu-numa-memshared-1.err
 create mode 120000 tests/qemuxml2argvdata/cpu-numa-memshared-1.xml
 create mode 100644 tests/qemuxml2argvdata/cpu-numa-memshared.err
 create mode 100644 tests/qemuxml2argvdata/cpu-numa3.err
 create mode 100644 tests/qemuxml2argvdata/cpu-qemu-host-passthrough.err
 create mode 100644 tests/qemuxml2argvdata/cpu-s390-features.err
 create mode 100644 tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err
 create mode 100644 tests/qemuxml2argvdata/cputune-vcpusched-overlap.err
 create mode 100644 tests/qemuxml2argvdata/default-video-type-x86_64-caps-test-0.err
 create mode 100644 tests/qemuxml2argvdata/disk-address-conflict.err
 create mode 100644 tests/qemuxml2argvdata/disk-attaching-partition-nosupport.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/disk-device-lun-type-invalid.err
 create mode 100644 tests/qemuxml2argvdata/disk-fdc-incompatible-address.err
 create mode 100644 tests/qemuxml2argvdata/disk-floppy-pseries.err
 create mode 100644 tests/qemuxml2argvdata/disk-fmt-cow.err
 create mode 100644 tests/qemuxml2argvdata/disk-fmt-dir.err
 create mode 100644 tests/qemuxml2argvdata/disk-fmt-iso.err
 create mode 100644 tests/qemuxml2argvdata/disk-hostdev-scsi-address-conflict.err
 create mode 100644 tests/qemuxml2argvdata/disk-ide-incompatible-address.err
 create mode 100644 tests/qemuxml2argvdata/disk-network-iscsi-auth-secrettype-invalid.err
 create mode 100644 tests/qemuxml2argvdata/disk-network-iscsi-auth-wrong-secrettype.err
 create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-no-colon.err
 create mode 100644 tests/qemuxml2argvdata/disk-network-source-auth-both.err
 create mode 100644 tests/qemuxml2argvdata/disk-same-targets.err
 create mode 100644 tests/qemuxml2argvdata/disk-sata-incompatible-address.err
 create mode 100644 tests/qemuxml2argvdata/disk-scsi-disk-vpd-build-error.err
 create mode 100644 tests/qemuxml2argvdata/disk-scsi-incompatible-address.err
 create mode 100644 tests/qemuxml2argvdata/disk-shared-qcow.err
 create mode 100644 tests/qemuxml2argvdata/disk-usb-nosupport.err
 create mode 100644 tests/qemuxml2argvdata/disk-usb-pci.err
 create mode 100644 tests/qemuxml2argvdata/graphics-sdl-egl-headless.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/graphics-spice-invalid-egl-headless.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-display-missing-graphics.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-invalid-target-address.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-mdev-src-address-invalid.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.s390x-latest.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-duplicate-address.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-invalid-address.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate-fids.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-duplicate.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-invalid-uid-valid-fid.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-set-zero.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-uid-set-zero.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci-wrong-arch.err
 create mode 100644 tests/qemuxml2argvdata/hostdev-vfio-zpci.err
 create mode 100644 tests/qemuxml2argvdata/hostdevs-drive-address-conflict.err
 create mode 100644 tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err
 create mode 100644 tests/qemuxml2argvdata/hugepages-memaccess-invalid.err
 create mode 100644 tests/qemuxml2argvdata/hugepages-memaccess3.err
 create mode 100644 tests/qemuxml2argvdata/hugepages-nodeset-nonexist.err
 create mode 100644 tests/qemuxml2argvdata/hugepages-numa-nodeset-nonexist.err
 create mode 100644 tests/qemuxml2argvdata/intel-iommu-wrong-machine.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/iothreads-nocap.err
 create mode 100644 tests/qemuxml2argvdata/luks-disk-invalid.err
 create mode 100644 tests/qemuxml2argvdata/luks-disks-source-both.err
 create mode 100644 tests/qemuxml2argvdata/luks-disks-source-qcow2.err
 create mode 100644 tests/qemuxml2argvdata/mach-virt-serial-invalid-machine.err
 create mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-off-cap.err
 create mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-off-caps.err
 create mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-on-cap.err
 create mode 100644 tests/qemuxml2argvdata/machine-aeskeywrap-on-caps.err
 create mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-off-cap.err
 create mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-off-caps.err
 create mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-on-cap.err
 create mode 100644 tests/qemuxml2argvdata/machine-deakeywrap-on-caps.err
 create mode 100644 tests/qemuxml2argvdata/machine-loadparm-s390-char-invalid.err
 create mode 100644 tests/qemuxml2argvdata/machine-loadparm-s390-len-invalid.err
 create mode 100644 tests/qemuxml2argvdata/memory-align-fail.err
 create mode 100644 tests/qemuxml2argvdata/memory-hotplug-nonuma.err
 create mode 100644 tests/qemuxml2argvdata/minimal-no-memory.err
 create mode 100644 tests/qemuxml2argvdata/misc-enable-s4.err
 create mode 100644 tests/qemuxml2argvdata/missing-machine.err
 create mode 100644 tests/qemuxml2argvdata/net-hostdev-fail.err
 create mode 100644 tests/qemuxml2argvdata/net-vhostuser-fail.err
 create mode 100644 tests/qemuxml2argvdata/net-vhostuser-multiq.err
 create mode 100644 tests/qemuxml2argvdata/net-virtio-rxqueuesize-invalid-size.err
 create mode 100644 tests/qemuxml2argvdata/net-virtio-teaming.err
 create mode 100644 tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.err
 create mode 100644 tests/qemuxml2argvdata/numatune-memnode-no-memory.err
 create mode 100644 tests/qemuxml2argvdata/numatune-memnode-nocpu.err
 create mode 100644 tests/qemuxml2argvdata/numatune-memnode.err
 create mode 100644 tests/qemuxml2argvdata/numatune-memnodes-problematic.err
 create mode 100644 tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.err
 create mode 100644 tests/qemuxml2argvdata/numatune-static-nodeset-exceed-hostnode.err
 create mode 100644 tests/qemuxml2argvdata/pci-bridge-duplicate-index.err
 create mode 100644 tests/qemuxml2argvdata/pci-bridge-negative-index-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pci-bus-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pci-domain-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pci-expander-bus-bad-bus.err
 create mode 100644 tests/qemuxml2argvdata/pci-expander-bus-bad-machine.err
 create mode 100644 tests/qemuxml2argvdata/pci-expander-bus-bad-node.err
 create mode 100644 tests/qemuxml2argvdata/pci-function-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pci-root-address.err
 create mode 100644 tests/qemuxml2argvdata/pci-root-nonzero-index.err
 create mode 100644 tests/qemuxml2argvdata/pci-slot-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.err
 create mode 100644 tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.err
 create mode 100644 tests/qemuxml2argvdata/pcie-root-port-too-many.err
 create mode 100644 tests/qemuxml2argvdata/pcihole64-none.err
 create mode 100644 tests/qemuxml2argvdata/ppc64-tpm-double.err
 create mode 100644 tests/qemuxml2argvdata/ppc64-tpmproxy-double.err
 create mode 100644 tests/qemuxml2argvdata/pseries-cpu-compat-power9.err
 create mode 100644 tests/qemuxml2argvdata/pseries-default-phb-numa-node.err
 create mode 100644 tests/qemuxml2argvdata/pseries-features-ccf.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-ccf.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-cfpc.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-cfpc.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-hpt-pagesize.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-htm.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-htm.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-htp-resize.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-htp-resize.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-ibs.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-ibs.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-invalid-machine.err
 create mode 100644 tests/qemuxml2argvdata/pseries-features-nested-hv.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-nested-hv.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-features-sbbc.err
 create mode 120000 tests/qemuxml2argvdata/pseries-features-sbbc.xml
 create mode 100644 tests/qemuxml2argvdata/pseries-no-parallel.err
 create mode 100644 tests/qemuxml2argvdata/pseries-panic-address.err
 create mode 100644 tests/qemuxml2argvdata/pseries-phb-invalid-target-index-1.err
 create mode 100644 tests/qemuxml2argvdata/pseries-phb-invalid-target-index-2.err
 create mode 100644 tests/qemuxml2argvdata/pseries-phb-invalid-target-index-3.err
 create mode 100644 tests/qemuxml2argvdata/pseries-serial-invalid-machine.err
 create mode 100644 tests/qemuxml2argvdata/pseries-spaprvio-invalid.err
 create mode 100644 tests/qemuxml2argvdata/pseries-vio-address-clash.err
 create mode 100644 tests/qemuxml2argvdata/q35-dmi-bad-address1.err
 create mode 100644 tests/qemuxml2argvdata/q35-dmi-bad-address2.err
 create mode 100644 tests/qemuxml2argvdata/q35-noacpi-uefi.err
 create mode 100644 tests/qemuxml2argvdata/q35-wrong-root.err
 create mode 100644 tests/qemuxml2argvdata/reboot-timeout-enabled.err
 create mode 100644 tests/qemuxml2argvdata/s390-no-parallel.err
 create mode 100644 tests/qemuxml2argvdata/s390-panic-address.err
 create mode 100644 tests/qemuxml2argvdata/seclabel-device-duplicates.err
 create mode 100644 tests/qemuxml2argvdata/seclabel-multiple.err
 create mode 100644 tests/qemuxml2argvdata/serial-unix-missing-source.err
 create mode 100644 tests/qemuxml2argvdata/shmem-invalid-address.err
 create mode 100644 tests/qemuxml2argvdata/shmem-invalid-size.err
 create mode 100644 tests/qemuxml2argvdata/shmem-msi-only.err
 create mode 100644 tests/qemuxml2argvdata/shmem-small-size.err
 create mode 100644 tests/qemuxml2argvdata/shmem.err
 create mode 100644 tests/qemuxml2argvdata/smbios-date.err
 create mode 100644 tests/qemuxml2argvdata/smbios-uuid-match.err
 create mode 100644 tests/qemuxml2argvdata/tpm-no-backend-invalid.err
 create mode 100644 tests/qemuxml2argvdata/tseg-explicit-size.x86_64-2.10.0.err
 create mode 100644 tests/qemuxml2argvdata/tseg-i440fx.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/tseg-invalid-size.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/usb-bus-missing.err
 create mode 100644 tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.err
 create mode 100644 tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.err
 create mode 100644 tests/qemuxml2argvdata/usb-controller-qemu-xhci-limit.err
 create mode 100644 tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.err
 create mode 100644 tests/qemuxml2argvdata/usb-controller-xhci-limit.err
 create mode 100644 tests/qemuxml2argvdata/usb-hub-conflict.err
 create mode 100644 tests/qemuxml2argvdata/usb-hub-nonexistent.err
 create mode 100644 tests/qemuxml2argvdata/usb-ich9-no-companion.err
 create mode 100644 tests/qemuxml2argvdata/usb-none-hub.err
 create mode 100644 tests/qemuxml2argvdata/usb-none-other.err
 create mode 100644 tests/qemuxml2argvdata/usb-none-usbtablet.err
 create mode 100644 tests/qemuxml2argvdata/usb-ports-out-of-range.err
 create mode 100644 tests/qemuxml2argvdata/usb-too-long-port-path-invalid.err
 create mode 100644 tests/qemuxml2argvdata/vhost-user-fs-readonly.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/vhost_queues-invalid.err
 create mode 100644 tests/qemuxml2argvdata/video-invalid-multiple-devices.err
 create mode 100644 tests/qemuxml2argvdata/video-ramfb-display-device-pci-address.x86_64-latest.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-controller-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-controller-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-controller-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-disk-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-disk-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-disk-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-fs-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-fs-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-fs-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-input-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-input-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-input-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-memballoon-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-memballoon-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-memballoon-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-net-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-net-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-net-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-rng-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-rng-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-rng-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-video-ats.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-video-iommu.err
 create mode 100644 tests/qemuxml2argvdata/virtio-options-video-packed.err
 create mode 100644 tests/qemuxml2argvdata/virtio-rng-egd-crash.err
 create mode 100644 tests/qemuxml2argvdata/virtio-transitional-not-supported.x86_64-latest.err

diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
index 1bfa164a47..6e77a72f7c 100644
--- a/src/conf/domain_addr.c
+++ b/src/conf/domain_addr.c
@@ -1401,7 +1401,7 @@ virDomainCCWAddressAssign(virDomainDeviceInfoPtr dev,
 
         if (virHashLookup(addrs->defined, addr)) {
             virReportError(VIR_ERR_XML_ERROR,
-                           _("The CCW devno '%s' is in use already "),
+                           _("The CCW devno '%s' is in use already"),
                            addr);
             return -1;
         }
diff --git a/tests/qemuxml2argvdata/440fx-ide-address-conflict.err b/tests/qemuxml2argvdata/440fx-ide-address-conflict.err
new file mode 100644
index 0000000000..36dfc6cd08
--- /dev/null
+++ b/tests/qemuxml2argvdata/440fx-ide-address-conflict.err
@@ -0,0 +1 @@
+XML error: Attempted double use of PCI Address 0000:00:01.1
diff --git a/tests/qemuxml2argvdata/440fx-wrong-root.err b/tests/qemuxml2argvdata/440fx-wrong-root.err
new file mode 100644
index 0000000000..f8c22b1538
--- /dev/null
+++ b/tests/qemuxml2argvdata/440fx-wrong-root.err
@@ -0,0 +1 @@
+XML error: The PCI controller with index='0' must be model='pci-root' for this machine type, but model='pcie-root' was found instead
diff --git a/tests/qemuxml2argvdata/aarch64-acpi-nouefi.err b/tests/qemuxml2argvdata/aarch64-acpi-nouefi.err
new file mode 100644
index 0000000000..4fe79bdacf
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-acpi-nouefi.err
@@ -0,0 +1 @@
+unsupported configuration: ACPI requires UEFI on this architecture
diff --git a/tests/qemuxml2argvdata/aarch64-features-sve-disabled.aarch64-latest.err b/tests/qemuxml2argvdata/aarch64-features-sve-disabled.aarch64-latest.err
new file mode 100644
index 0000000000..5cb4561f28
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-features-sve-disabled.aarch64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: SVE disabled, but SVE vector lengths provided
diff --git a/tests/qemuxml2argvdata/aarch64-features-sve.aarch64-4.0.0.err b/tests/qemuxml2argvdata/aarch64-features-sve.aarch64-4.0.0.err
new file mode 100644
index 0000000000..471b22708a
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-features-sve.aarch64-4.0.0.err
@@ -0,0 +1 @@
+internal error: CPU features not supported by hypervisor for aarch64 architecture
diff --git a/tests/qemuxml2argvdata/aarch64-features-wrong.aarch64-latest.err b/tests/qemuxml2argvdata/aarch64-features-wrong.aarch64-latest.err
new file mode 100644
index 0000000000..e51b9db04b
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-features-wrong.aarch64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: unknown CPU feature: vmx
diff --git a/tests/qemuxml2argvdata/aarch64-gic-host.err b/tests/qemuxml2argvdata/aarch64-gic-host.err
new file mode 100644
index 0000000000..448d5da391
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-gic-host.err
@@ -0,0 +1 @@
+unsupported configuration: gic-version option is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/aarch64-gic-invalid.err b/tests/qemuxml2argvdata/aarch64-gic-invalid.err
new file mode 100644
index 0000000000..c2e9f4aa3f
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-gic-invalid.err
@@ -0,0 +1 @@
+XML error: malformed gic version: none
diff --git a/tests/qemuxml2argvdata/aarch64-gic-not-arm.err b/tests/qemuxml2argvdata/aarch64-gic-not-arm.err
new file mode 100644
index 0000000000..131d1acb53
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-gic-not-arm.err
@@ -0,0 +1 @@
+unsupported configuration: The 'gic' feature is not supported for architecture 'ppc64' or machine type 'pseries'
diff --git a/tests/qemuxml2argvdata/aarch64-gic-not-virt.err b/tests/qemuxml2argvdata/aarch64-gic-not-virt.err
new file mode 100644
index 0000000000..2cd29f394f
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-gic-not-virt.err
@@ -0,0 +1 @@
+unsupported configuration: The 'gic' feature is not supported for architecture 'aarch64' or machine type 'versatilepb'
diff --git a/tests/qemuxml2argvdata/aarch64-gic-v3.err b/tests/qemuxml2argvdata/aarch64-gic-v3.err
new file mode 100644
index 0000000000..448d5da391
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-gic-v3.err
@@ -0,0 +1 @@
+unsupported configuration: gic-version option is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/aarch64-kvm-32-on-64.err b/tests/qemuxml2argvdata/aarch64-kvm-32-on-64.err
new file mode 100644
index 0000000000..3858f112b4
--- /dev/null
+++ b/tests/qemuxml2argvdata/aarch64-kvm-32-on-64.err
@@ -0,0 +1 @@
+unsupported configuration: QEMU binary does not support CPU host-passthrough for armv7l on aarch64 host
diff --git a/tests/qemuxml2argvdata/boot-dev+order.err b/tests/qemuxml2argvdata/boot-dev+order.err
new file mode 100644
index 0000000000..aeb27ec0b8
--- /dev/null
+++ b/tests/qemuxml2argvdata/boot-dev+order.err
@@ -0,0 +1 @@
+unsupported configuration: per-device boot elements cannot be used together with os/boot elements
diff --git a/tests/qemuxml2argvdata/boot-menu-enable-with-timeout-invalid.err b/tests/qemuxml2argvdata/boot-menu-enable-with-timeout-invalid.err
new file mode 100644
index 0000000000..38c0be7818
--- /dev/null
+++ b/tests/qemuxml2argvdata/boot-menu-enable-with-timeout-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: invalid value for boot menu timeout, must be in range [0,65535]
diff --git a/tests/qemuxml2argvdata/boot-menu-enable-with-timeout.err b/tests/qemuxml2argvdata/boot-menu-enable-with-timeout.err
new file mode 100644
index 0000000000..3ac2abf11b
--- /dev/null
+++ b/tests/qemuxml2argvdata/boot-menu-enable-with-timeout.err
@@ -0,0 +1 @@
+unsupported configuration: splash timeout is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/chardev-reconnect-generated-path.err b/tests/qemuxml2argvdata/chardev-reconnect-generated-path.err
new file mode 100644
index 0000000000..d21f3388b8
--- /dev/null
+++ b/tests/qemuxml2argvdata/chardev-reconnect-generated-path.err
@@ -0,0 +1 @@
+internal error: chardev reconnect is possible only for connect mode
diff --git a/tests/qemuxml2argvdata/chardev-reconnect-invalid-timeout.err b/tests/qemuxml2argvdata/chardev-reconnect-invalid-timeout.err
new file mode 100644
index 0000000000..bf6f042e6c
--- /dev/null
+++ b/tests/qemuxml2argvdata/chardev-reconnect-invalid-timeout.err
@@ -0,0 +1 @@
+invalid argument: chardev reconnect source timeout cannot be '0'
diff --git a/tests/qemuxml2argvdata/cpu-cache-emulate-l2.err b/tests/qemuxml2argvdata/cpu-cache-emulate-l2.err
new file mode 100644
index 0000000000..e9255ec14d
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-cache-emulate-l2.err
@@ -0,0 +1 @@
+unsupported configuration: CPU cache mode 'emulate' can only be used with level='3'
diff --git a/tests/qemuxml2argvdata/cpu-cache-passthrough-l3.err b/tests/qemuxml2argvdata/cpu-cache-passthrough-l3.err
new file mode 100644
index 0000000000..6796cb7bf8
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-cache-passthrough-l3.err
@@ -0,0 +1 @@
+unsupported configuration: unsupported CPU cache level for mode 'passthrough'
diff --git a/tests/qemuxml2argvdata/cpu-cache-passthrough3.err b/tests/qemuxml2argvdata/cpu-cache-passthrough3.err
new file mode 100644
index 0000000000..2d64cda5e5
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-cache-passthrough3.err
@@ -0,0 +1 @@
+unsupported configuration: CPU cache mode 'passthrough' can only be used with 'host-passthrough' CPUs
diff --git a/tests/qemuxml2argvdata/cpu-host-model-nofallback.err b/tests/qemuxml2argvdata/cpu-host-model-nofallback.err
new file mode 100644
index 0000000000..35fa03a5a4
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-host-model-nofallback.err
@@ -0,0 +1 @@
+unsupported configuration: CPU model core2duo is not supported by hypervisor
diff --git a/tests/qemuxml2argvdata/cpu-hotplug-granularity.err b/tests/qemuxml2argvdata/cpu-hotplug-granularity.err
new file mode 100644
index 0000000000..6d5d6f4d68
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-hotplug-granularity.err
@@ -0,0 +1 @@
+unsupported configuration: vCPUs count must be a multiple of the vCPU hotplug granularity (4)
diff --git a/tests/qemuxml2argvdata/cpu-nofallback.err b/tests/qemuxml2argvdata/cpu-nofallback.err
new file mode 100644
index 0000000000..e5ba7473f2
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-nofallback.err
@@ -0,0 +1 @@
+unsupported configuration: CPU model Westmere is not supported by hypervisor
diff --git a/tests/qemuxml2argvdata/cpu-numa-disjoint.err b/tests/qemuxml2argvdata/cpu-numa-disjoint.err
new file mode 100644
index 0000000000..ff4b1cce2e
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-numa-disjoint.err
@@ -0,0 +1 @@
+unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU
diff --git a/tests/qemuxml2argvdata/cpu-numa-memshared-1.err b/tests/qemuxml2argvdata/cpu-numa-memshared-1.err
new file mode 100644
index 0000000000..ad98a2162e
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-numa-memshared-1.err
@@ -0,0 +1 @@
+unsupported configuration: Shared memory mapping is not supported with this QEMU
diff --git a/tests/qemuxml2argvdata/cpu-numa-memshared-1.xml b/tests/qemuxml2argvdata/cpu-numa-memshared-1.xml
new file mode 120000
index 0000000000..288045dce3
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-numa-memshared-1.xml
@@ -0,0 +1 @@
+cpu-numa-memshared.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/cpu-numa-memshared.err b/tests/qemuxml2argvdata/cpu-numa-memshared.err
new file mode 100644
index 0000000000..e0fdffd42c
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-numa-memshared.err
@@ -0,0 +1 @@
+unsupported configuration: this qemu doesn't support the memory-backend-file object
diff --git a/tests/qemuxml2argvdata/cpu-numa3.err b/tests/qemuxml2argvdata/cpu-numa3.err
new file mode 100644
index 0000000000..c1fab9f7fe
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-numa3.err
@@ -0,0 +1 @@
+XML error: Exactly one 'cell' element per guest NUMA cell allowed, non-contiguous ranges or ranges not starting from 0 are not allowed
diff --git a/tests/qemuxml2argvdata/cpu-qemu-host-passthrough.err b/tests/qemuxml2argvdata/cpu-qemu-host-passthrough.err
new file mode 100644
index 0000000000..560ce2a8ff
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-qemu-host-passthrough.err
@@ -0,0 +1 @@
+unsupported configuration: CPU mode 'host-passthrough' for x86_64 qemu domain on x86_64 host is not supported by hypervisor
diff --git a/tests/qemuxml2argvdata/cpu-s390-features.err b/tests/qemuxml2argvdata/cpu-s390-features.err
new file mode 100644
index 0000000000..5f078fc8e1
--- /dev/null
+++ b/tests/qemuxml2argvdata/cpu-s390-features.err
@@ -0,0 +1 @@
+internal error: CPU features not supported by hypervisor for s390x architecture
diff --git a/tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err b/tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err
new file mode 100644
index 0000000000..c48b87c0b0
--- /dev/null
+++ b/tests/qemuxml2argvdata/cputune-iothreadsched-toomuch.err
@@ -0,0 +1 @@
+unsupported configuration: Cannot find 'iothread' : 2
diff --git a/tests/qemuxml2argvdata/cputune-vcpusched-overlap.err b/tests/qemuxml2argvdata/cputune-vcpusched-overlap.err
new file mode 100644
index 0000000000..282c027e1f
--- /dev/null
+++ b/tests/qemuxml2argvdata/cputune-vcpusched-overlap.err
@@ -0,0 +1 @@
+'vcpusched' attributes 'vcpus' must not overlap
diff --git a/tests/qemuxml2argvdata/default-video-type-x86_64-caps-test-0.err b/tests/qemuxml2argvdata/default-video-type-x86_64-caps-test-0.err
new file mode 100644
index 0000000000..82576471b7
--- /dev/null
+++ b/tests/qemuxml2argvdata/default-video-type-x86_64-caps-test-0.err
@@ -0,0 +1 @@
+unsupported configuration: domain configuration does not support 'video model' value 'default'
diff --git a/tests/qemuxml2argvdata/disk-address-conflict.err b/tests/qemuxml2argvdata/disk-address-conflict.err
new file mode 100644
index 0000000000..a8d2c0fead
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-address-conflict.err
@@ -0,0 +1 @@
+unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
diff --git a/tests/qemuxml2argvdata/disk-attaching-partition-nosupport.x86_64-latest.err b/tests/qemuxml2argvdata/disk-attaching-partition-nosupport.x86_64-latest.err
new file mode 100644
index 0000000000..05a7408ff5
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-attaching-partition-nosupport.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: invalid disk target 'vdb1', partitions can't appear in disk targets
diff --git a/tests/qemuxml2argvdata/disk-device-lun-type-invalid.err b/tests/qemuxml2argvdata/disk-device-lun-type-invalid.err
new file mode 100644
index 0000000000..08257027ec
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-device-lun-type-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: disk device='lun' is only valid for block type disk source
diff --git a/tests/qemuxml2argvdata/disk-fdc-incompatible-address.err b/tests/qemuxml2argvdata/disk-fdc-incompatible-address.err
new file mode 100644
index 0000000000..169da75bf0
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-fdc-incompatible-address.err
@@ -0,0 +1 @@
+internal error: unexpected address type for fdc disk
diff --git a/tests/qemuxml2argvdata/disk-floppy-pseries.err b/tests/qemuxml2argvdata/disk-floppy-pseries.err
new file mode 100644
index 0000000000..b4b580a684
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-floppy-pseries.err
@@ -0,0 +1 @@
+unsupported configuration: PowerPC pseries machines do not support floppy device
diff --git a/tests/qemuxml2argvdata/disk-fmt-cow.err b/tests/qemuxml2argvdata/disk-fmt-cow.err
new file mode 100644
index 0000000000..b026291ba0
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-fmt-cow.err
@@ -0,0 +1 @@
+unsupported configuration: 'cow' storage format is not supported
diff --git a/tests/qemuxml2argvdata/disk-fmt-dir.err b/tests/qemuxml2argvdata/disk-fmt-dir.err
new file mode 100644
index 0000000000..092f4ae07b
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-fmt-dir.err
@@ -0,0 +1 @@
+unsupported configuration: 'directory' storage format is not directly supported by QEMU, use 'dir' disk type instead
diff --git a/tests/qemuxml2argvdata/disk-fmt-iso.err b/tests/qemuxml2argvdata/disk-fmt-iso.err
new file mode 100644
index 0000000000..ddc72670df
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-fmt-iso.err
@@ -0,0 +1 @@
+unsupported configuration: storage format 'iso' is not directly supported by QEMU, use 'raw' instead
diff --git a/tests/qemuxml2argvdata/disk-hostdev-scsi-address-conflict.err b/tests/qemuxml2argvdata/disk-hostdev-scsi-address-conflict.err
new file mode 100644
index 0000000000..99f532101a
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-hostdev-scsi-address-conflict.err
@@ -0,0 +1 @@
+unsupported configuration: using disk target name 'sda' conflicts with SCSI host device address controller='0' bus='0' target='0' unit='0
diff --git a/tests/qemuxml2argvdata/disk-ide-incompatible-address.err b/tests/qemuxml2argvdata/disk-ide-incompatible-address.err
new file mode 100644
index 0000000000..03eea59410
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-ide-incompatible-address.err
@@ -0,0 +1 @@
+internal error: unexpected address type for ide disk
diff --git a/tests/qemuxml2argvdata/disk-network-iscsi-auth-secrettype-invalid.err b/tests/qemuxml2argvdata/disk-network-iscsi-auth-secrettype-invalid.err
new file mode 100644
index 0000000000..86cb9f76a2
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-iscsi-auth-secrettype-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: unknown secret type '<null>'
diff --git a/tests/qemuxml2argvdata/disk-network-iscsi-auth-wrong-secrettype.err b/tests/qemuxml2argvdata/disk-network-iscsi-auth-wrong-secrettype.err
new file mode 100644
index 0000000000..67ec0e9ac3
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-iscsi-auth-wrong-secrettype.err
@@ -0,0 +1 @@
+unsupported configuration: invalid secret type 'ceph'
diff --git a/tests/qemuxml2argvdata/disk-network-rbd-no-colon.err b/tests/qemuxml2argvdata/disk-network-rbd-no-colon.err
new file mode 100644
index 0000000000..0610aef234
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-rbd-no-colon.err
@@ -0,0 +1 @@
+unsupported configuration: ':' not allowed in RBD source volume name 'imagename:rbd_cache=1:rbd_cache_size=67108864:rbd_cache_max_dirty=0'
diff --git a/tests/qemuxml2argvdata/disk-network-source-auth-both.err b/tests/qemuxml2argvdata/disk-network-source-auth-both.err
new file mode 100644
index 0000000000..d66586f7c3
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-network-source-auth-both.err
@@ -0,0 +1 @@
+unsupported configuration: an <auth> definition already found for disk source
diff --git a/tests/qemuxml2argvdata/disk-same-targets.err b/tests/qemuxml2argvdata/disk-same-targets.err
new file mode 100644
index 0000000000..364eee0749
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-same-targets.err
@@ -0,0 +1 @@
+XML error: target 'sda' duplicated for disk sources '/tmp/idedisk.img' and '/tmp/usbdisk.img'
diff --git a/tests/qemuxml2argvdata/disk-sata-incompatible-address.err b/tests/qemuxml2argvdata/disk-sata-incompatible-address.err
new file mode 100644
index 0000000000..cdb176b7d6
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-sata-incompatible-address.err
@@ -0,0 +1 @@
+unsupported configuration: Invalid address type 'pci' for the disk 'sda' with the bus type 'sata'
diff --git a/tests/qemuxml2argvdata/disk-scsi-disk-vpd-build-error.err b/tests/qemuxml2argvdata/disk-scsi-disk-vpd-build-error.err
new file mode 100644
index 0000000000..f70b7a774f
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-scsi-disk-vpd-build-error.err
@@ -0,0 +1 @@
+unsupported configuration: Only scsi disk supports vendor and product
diff --git a/tests/qemuxml2argvdata/disk-scsi-incompatible-address.err b/tests/qemuxml2argvdata/disk-scsi-incompatible-address.err
new file mode 100644
index 0000000000..13d619a3e2
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-scsi-incompatible-address.err
@@ -0,0 +1 @@
+internal error: unexpected address type for scsi disk
diff --git a/tests/qemuxml2argvdata/disk-shared-qcow.err b/tests/qemuxml2argvdata/disk-shared-qcow.err
new file mode 100644
index 0000000000..8791ff7cfd
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-shared-qcow.err
@@ -0,0 +1 @@
+unsupported configuration: shared access for disk 'hda' requires use of supported storage format
diff --git a/tests/qemuxml2argvdata/disk-usb-nosupport.err b/tests/qemuxml2argvdata/disk-usb-nosupport.err
new file mode 100644
index 0000000000..87e8a9dec3
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-usb-nosupport.err
@@ -0,0 +1 @@
+unsupported configuration: This QEMU doesn't support '-device usb-storage'
diff --git a/tests/qemuxml2argvdata/disk-usb-pci.err b/tests/qemuxml2argvdata/disk-usb-pci.err
new file mode 100644
index 0000000000..680652f77c
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-usb-pci.err
@@ -0,0 +1 @@
+internal error: unexpected address type for usb disk
diff --git a/tests/qemuxml2argvdata/graphics-sdl-egl-headless.x86_64-latest.err b/tests/qemuxml2argvdata/graphics-sdl-egl-headless.x86_64-latest.err
new file mode 100644
index 0000000000..ef6139adae
--- /dev/null
+++ b/tests/qemuxml2argvdata/graphics-sdl-egl-headless.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: graphics type 'egl-headless' is only supported with one of: 'vnc', 'spice' graphics types
diff --git a/tests/qemuxml2argvdata/graphics-spice-invalid-egl-headless.x86_64-latest.err b/tests/qemuxml2argvdata/graphics-spice-invalid-egl-headless.x86_64-latest.err
new file mode 100644
index 0000000000..419cf303e7
--- /dev/null
+++ b/tests/qemuxml2argvdata/graphics-spice-invalid-egl-headless.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: multiple OpenGL displays are not supported by QEMU
diff --git a/tests/qemuxml2argvdata/hostdev-mdev-display-missing-graphics.err b/tests/qemuxml2argvdata/hostdev-mdev-display-missing-graphics.err
new file mode 100644
index 0000000000..4a6eb02a43
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-mdev-display-missing-graphics.err
@@ -0,0 +1 @@
+unsupported configuration: graphics device is needed for attribute value 'display=on' in <hostdev>
diff --git a/tests/qemuxml2argvdata/hostdev-mdev-invalid-target-address.err b/tests/qemuxml2argvdata/hostdev-mdev-invalid-target-address.err
new file mode 100644
index 0000000000..4624e0145d
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-mdev-invalid-target-address.err
@@ -0,0 +1 @@
+XML error: Unsupported address type 'drive' with mediated device model 'vfio-pci'
diff --git a/tests/qemuxml2argvdata/hostdev-mdev-src-address-invalid.err b/tests/qemuxml2argvdata/hostdev-mdev-src-address-invalid.err
new file mode 100644
index 0000000000..20a91e7fa6
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-mdev-src-address-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: Missing 'uuid' attribute for element <address>
diff --git a/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.x86_64-latest.err b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.x86_64-latest.err
new file mode 100644
index 0000000000..0083926829
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-scsi-vhost-scsi-pci-boot-fail.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: booting from assigned devices is not supported by vhost SCSI devices
diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.s390x-latest.err b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.s390x-latest.err
new file mode 100644
index 0000000000..bba42074d1
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ap-boot-fail.s390x-latest.err
@@ -0,0 +1 @@
+unsupported configuration: booting from assigned devices is not supported by mediated devices of model vfio-ap
diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-duplicate-address.err b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-duplicate-address.err
new file mode 100644
index 0000000000..1d4ee8454d
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-duplicate-address.err
@@ -0,0 +1 @@
+XML error: The CCW devno 'fe.0.0001' is in use already
diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-invalid-address.err b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-invalid-address.err
new file mode 100644
index 0000000000..1a3bc3b902
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw-invalid-address.err
@@ -0,0 +1 @@
+XML error: Unsupported address type 'pci' with mediated device model 'vfio-ccw'
diff --git a/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw.err b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw.err
new file mode 100644
index 0000000000..88c13f62b6
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-subsys-mdev-vfio-ccw.err
@@ -0,0 +1 @@
+unsupported configuration: VFIO CCW device assignment is not supported by this version of QEMU
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate-fids.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate-fids.err
new file mode 100644
index 0000000000..a0ca4fba5d
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-autogenerate-fids.err
@@ -0,0 +1 @@
+XML error: No PCI buses available
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-duplicate.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-duplicate.err
new file mode 100644
index 0000000000..c65cd8a5da
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-duplicate.err
@@ -0,0 +1 @@
+internal error: zPCI uid 11064 is already reserved
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-invalid-uid-valid-fid.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-invalid-uid-valid-fid.err
new file mode 100644
index 0000000000..59991eabb2
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-invalid-uid-valid-fid.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address uid='0x0000', must be > 0x0000 and <= 0xffff
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-set-zero.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-set-zero.err
new file mode 100644
index 0000000000..59991eabb2
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-set-zero.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address uid='0x0000', must be > 0x0000 and <= 0xffff
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-uid-set-zero.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-uid-set-zero.err
new file mode 100644
index 0000000000..59991eabb2
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-uid-set-zero.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address uid='0x0000', must be > 0x0000 and <= 0xffff
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci-wrong-arch.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci-wrong-arch.err
new file mode 100644
index 0000000000..842693b4e0
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci-wrong-arch.err
@@ -0,0 +1 @@
+unsupported configuration: This QEMU binary doesn't support zPCI
diff --git a/tests/qemuxml2argvdata/hostdev-vfio-zpci.err b/tests/qemuxml2argvdata/hostdev-vfio-zpci.err
new file mode 100644
index 0000000000..842693b4e0
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdev-vfio-zpci.err
@@ -0,0 +1 @@
+unsupported configuration: This QEMU binary doesn't support zPCI
diff --git a/tests/qemuxml2argvdata/hostdevs-drive-address-conflict.err b/tests/qemuxml2argvdata/hostdevs-drive-address-conflict.err
new file mode 100644
index 0000000000..4609871bdd
--- /dev/null
+++ b/tests/qemuxml2argvdata/hostdevs-drive-address-conflict.err
@@ -0,0 +1 @@
+unsupported configuration: SCSI host address controller='0' bus='0' target='0' unit='0' in use by another SCSI host device
diff --git a/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err b/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err
new file mode 100644
index 0000000000..8c0706fb8b
--- /dev/null
+++ b/tests/qemuxml2argvdata/hugepages-default-1G-nodeset-2M.err
@@ -0,0 +1 @@
+unsupported configuration: huge pages per NUMA node are not supported with this QEMU
diff --git a/tests/qemuxml2argvdata/hugepages-memaccess-invalid.err b/tests/qemuxml2argvdata/hugepages-memaccess-invalid.err
new file mode 100644
index 0000000000..75ddd3e282
--- /dev/null
+++ b/tests/qemuxml2argvdata/hugepages-memaccess-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: Invalid 'memAccess' attribute value 'invalid'
diff --git a/tests/qemuxml2argvdata/hugepages-memaccess3.err b/tests/qemuxml2argvdata/hugepages-memaccess3.err
new file mode 100644
index 0000000000..dacf1c27fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/hugepages-memaccess3.err
@@ -0,0 +1 @@
+unsupported configuration: memory access mode 'shared' not supported without guest numa node
diff --git a/tests/qemuxml2argvdata/hugepages-nodeset-nonexist.err b/tests/qemuxml2argvdata/hugepages-nodeset-nonexist.err
new file mode 100644
index 0000000000..177ba5290e
--- /dev/null
+++ b/tests/qemuxml2argvdata/hugepages-nodeset-nonexist.err
@@ -0,0 +1 @@
+hugepages: node 1 not found
diff --git a/tests/qemuxml2argvdata/hugepages-numa-nodeset-nonexist.err b/tests/qemuxml2argvdata/hugepages-numa-nodeset-nonexist.err
new file mode 100644
index 0000000000..7e2f9916ff
--- /dev/null
+++ b/tests/qemuxml2argvdata/hugepages-numa-nodeset-nonexist.err
@@ -0,0 +1 @@
+hugepages: node 4 not found
diff --git a/tests/qemuxml2argvdata/intel-iommu-wrong-machine.x86_64-latest.err b/tests/qemuxml2argvdata/intel-iommu-wrong-machine.x86_64-latest.err
new file mode 100644
index 0000000000..dd5adeb083
--- /dev/null
+++ b/tests/qemuxml2argvdata/intel-iommu-wrong-machine.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: IOMMU device: 'intel' is only supported with Q35 machines
diff --git a/tests/qemuxml2argvdata/iothreads-nocap.err b/tests/qemuxml2argvdata/iothreads-nocap.err
new file mode 100644
index 0000000000..ed2f47ecd5
--- /dev/null
+++ b/tests/qemuxml2argvdata/iothreads-nocap.err
@@ -0,0 +1 @@
+unsupported configuration: IOThreads not supported for this QEMU
diff --git a/tests/qemuxml2argvdata/luks-disk-invalid.err b/tests/qemuxml2argvdata/luks-disk-invalid.err
new file mode 100644
index 0000000000..abb930d3c6
--- /dev/null
+++ b/tests/qemuxml2argvdata/luks-disk-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: supplying <cipher> for domain disk definition is unnecessary
diff --git a/tests/qemuxml2argvdata/luks-disks-source-both.err b/tests/qemuxml2argvdata/luks-disks-source-both.err
new file mode 100644
index 0000000000..babf616e76
--- /dev/null
+++ b/tests/qemuxml2argvdata/luks-disks-source-both.err
@@ -0,0 +1 @@
+unsupported configuration: an <encryption> definition already found for disk source
diff --git a/tests/qemuxml2argvdata/luks-disks-source-qcow2.err b/tests/qemuxml2argvdata/luks-disks-source-qcow2.err
new file mode 100644
index 0000000000..3c9f70a04a
--- /dev/null
+++ b/tests/qemuxml2argvdata/luks-disks-source-qcow2.err
@@ -0,0 +1 @@
+unsupported configuration: LUKS encrypted QCOW2 images are not supported by this QEMU
diff --git a/tests/qemuxml2argvdata/mach-virt-serial-invalid-machine.err b/tests/qemuxml2argvdata/mach-virt-serial-invalid-machine.err
new file mode 100644
index 0000000000..ecf2eac023
--- /dev/null
+++ b/tests/qemuxml2argvdata/mach-virt-serial-invalid-machine.err
@@ -0,0 +1 @@
+unsupported configuration: Serial device with target type 'system-serial' and target model 'pl011' not compatible with guest architecture or machine type
diff --git a/tests/qemuxml2argvdata/machine-aeskeywrap-off-cap.err b/tests/qemuxml2argvdata/machine-aeskeywrap-off-cap.err
new file mode 100644
index 0000000000..8b774a8a2a
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-aeskeywrap-off-cap.err
@@ -0,0 +1 @@
+unsupported configuration: aes-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-aeskeywrap-off-caps.err b/tests/qemuxml2argvdata/machine-aeskeywrap-off-caps.err
new file mode 100644
index 0000000000..8b774a8a2a
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-aeskeywrap-off-caps.err
@@ -0,0 +1 @@
+unsupported configuration: aes-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-aeskeywrap-on-cap.err b/tests/qemuxml2argvdata/machine-aeskeywrap-on-cap.err
new file mode 100644
index 0000000000..8b774a8a2a
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-aeskeywrap-on-cap.err
@@ -0,0 +1 @@
+unsupported configuration: aes-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-aeskeywrap-on-caps.err b/tests/qemuxml2argvdata/machine-aeskeywrap-on-caps.err
new file mode 100644
index 0000000000..8b774a8a2a
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-aeskeywrap-on-caps.err
@@ -0,0 +1 @@
+unsupported configuration: aes-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-deakeywrap-off-cap.err b/tests/qemuxml2argvdata/machine-deakeywrap-off-cap.err
new file mode 100644
index 0000000000..c33833f620
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-deakeywrap-off-cap.err
@@ -0,0 +1 @@
+unsupported configuration: dea-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-deakeywrap-off-caps.err b/tests/qemuxml2argvdata/machine-deakeywrap-off-caps.err
new file mode 100644
index 0000000000..c33833f620
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-deakeywrap-off-caps.err
@@ -0,0 +1 @@
+unsupported configuration: dea-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-deakeywrap-on-cap.err b/tests/qemuxml2argvdata/machine-deakeywrap-on-cap.err
new file mode 100644
index 0000000000..c33833f620
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-deakeywrap-on-cap.err
@@ -0,0 +1 @@
+unsupported configuration: dea-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-deakeywrap-on-caps.err b/tests/qemuxml2argvdata/machine-deakeywrap-on-caps.err
new file mode 100644
index 0000000000..c33833f620
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-deakeywrap-on-caps.err
@@ -0,0 +1 @@
+unsupported configuration: dea-key-wrap is not available with this QEMU binary
diff --git a/tests/qemuxml2argvdata/machine-loadparm-s390-char-invalid.err b/tests/qemuxml2argvdata/machine-loadparm-s390-char-invalid.err
new file mode 100644
index 0000000000..c3eb455594
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-loadparm-s390-char-invalid.err
@@ -0,0 +1 @@
+internal error: invalid loadparm char '?', expecting chars in set of [a-zA-Z0-9.] and blank spaces
diff --git a/tests/qemuxml2argvdata/machine-loadparm-s390-len-invalid.err b/tests/qemuxml2argvdata/machine-loadparm-s390-len-invalid.err
new file mode 100644
index 0000000000..9afaa68ae2
--- /dev/null
+++ b/tests/qemuxml2argvdata/machine-loadparm-s390-len-invalid.err
@@ -0,0 +1 @@
+internal error: loadparm 'LOADPARM1' exceeds 8 characters
diff --git a/tests/qemuxml2argvdata/memory-align-fail.err b/tests/qemuxml2argvdata/memory-align-fail.err
new file mode 100644
index 0000000000..61ea6fe657
--- /dev/null
+++ b/tests/qemuxml2argvdata/memory-align-fail.err
@@ -0,0 +1 @@
+unsupported configuration: memory size of NUMA node '0' overflowed after alignment
diff --git a/tests/qemuxml2argvdata/memory-hotplug-nonuma.err b/tests/qemuxml2argvdata/memory-hotplug-nonuma.err
new file mode 100644
index 0000000000..ed97f6826a
--- /dev/null
+++ b/tests/qemuxml2argvdata/memory-hotplug-nonuma.err
@@ -0,0 +1 @@
+unsupported configuration: At least one numa node has to be configured when enabling memory hotplug
diff --git a/tests/qemuxml2argvdata/minimal-no-memory.err b/tests/qemuxml2argvdata/minimal-no-memory.err
new file mode 100644
index 0000000000..87755dc24d
--- /dev/null
+++ b/tests/qemuxml2argvdata/minimal-no-memory.err
@@ -0,0 +1 @@
+XML error: Memory size must be specified via <memory> or in the <numa> configuration
diff --git a/tests/qemuxml2argvdata/misc-enable-s4.err b/tests/qemuxml2argvdata/misc-enable-s4.err
new file mode 100644
index 0000000000..a256b75792
--- /dev/null
+++ b/tests/qemuxml2argvdata/misc-enable-s4.err
@@ -0,0 +1 @@
+unsupported configuration: setting ACPI S4 not supported
diff --git a/tests/qemuxml2argvdata/missing-machine.err b/tests/qemuxml2argvdata/missing-machine.err
new file mode 100644
index 0000000000..e13b3c5145
--- /dev/null
+++ b/tests/qemuxml2argvdata/missing-machine.err
@@ -0,0 +1 @@
+unsupported configuration: Emulator '/usr/bin/qemu-system-i386' does not support arch 'alpha'
diff --git a/tests/qemuxml2argvdata/net-hostdev-fail.err b/tests/qemuxml2argvdata/net-hostdev-fail.err
new file mode 100644
index 0000000000..86577b75db
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-hostdev-fail.err
@@ -0,0 +1 @@
+unsupported configuration: interface 00:11:22:33:44:55 - custom tap device path is not supported for network interfaces of type hostdev
diff --git a/tests/qemuxml2argvdata/net-vhostuser-fail.err b/tests/qemuxml2argvdata/net-vhostuser-fail.err
new file mode 100644
index 0000000000..5ecfa8e4c9
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-vhostuser-fail.err
@@ -0,0 +1 @@
+unsupported configuration: interface 52:54:00:ee:96:6b - custom tap device path is not supported for network interfaces of type vhostuser
diff --git a/tests/qemuxml2argvdata/net-vhostuser-multiq.err b/tests/qemuxml2argvdata/net-vhostuser-multiq.err
new file mode 100644
index 0000000000..437112764e
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-vhostuser-multiq.err
@@ -0,0 +1 @@
+unsupported configuration: interface 52:54:00:ee:96:6e - multiqueue is not supported for network interfaces of type vhost-user with this QEMU binary
diff --git a/tests/qemuxml2argvdata/net-virtio-rxqueuesize-invalid-size.err b/tests/qemuxml2argvdata/net-virtio-rxqueuesize-invalid-size.err
new file mode 100644
index 0000000000..c7f8d7b471
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-virtio-rxqueuesize-invalid-size.err
@@ -0,0 +1 @@
+unsupported configuration: rx_queue_size has to be a power of two
diff --git a/tests/qemuxml2argvdata/net-virtio-teaming.err b/tests/qemuxml2argvdata/net-virtio-teaming.err
new file mode 100644
index 0000000000..e49a1daa88
--- /dev/null
+++ b/tests/qemuxml2argvdata/net-virtio-teaming.err
@@ -0,0 +1 @@
+unsupported configuration: virtio-net failover (teaming) is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.err b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.err
new file mode 100644
index 0000000000..1bede71b5a
--- /dev/null
+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.err
@@ -0,0 +1 @@
+unsupported configuration: nodeset for NUMA memory tuning must be set if 'placement' is 'static'
diff --git a/tests/qemuxml2argvdata/numatune-memnode-no-memory.err b/tests/qemuxml2argvdata/numatune-memnode-no-memory.err
new file mode 100644
index 0000000000..1d5e57f996
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-memnode-no-memory.err
@@ -0,0 +1 @@
+unsupported configuration: Per-node memory binding is not supported with this QEMU
diff --git a/tests/qemuxml2argvdata/numatune-memnode-nocpu.err b/tests/qemuxml2argvdata/numatune-memnode-nocpu.err
new file mode 100644
index 0000000000..2fee11ae36
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-memnode-nocpu.err
@@ -0,0 +1 @@
+XML error: Element 'memnode' is invalid without any guest NUMA cells
diff --git a/tests/qemuxml2argvdata/numatune-memnode.err b/tests/qemuxml2argvdata/numatune-memnode.err
new file mode 100644
index 0000000000..1d5e57f996
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-memnode.err
@@ -0,0 +1 @@
+unsupported configuration: Per-node memory binding is not supported with this QEMU
diff --git a/tests/qemuxml2argvdata/numatune-memnodes-problematic.err b/tests/qemuxml2argvdata/numatune-memnodes-problematic.err
new file mode 100644
index 0000000000..e14a8e5fc8
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-memnodes-problematic.err
@@ -0,0 +1 @@
+unsupported configuration: Per-node binding is not compatible with automatic NUMA placement.
diff --git a/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.err b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.err
new file mode 100644
index 0000000000..2aaba7987d
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.err
@@ -0,0 +1 @@
+unsupported configuration: Invalid value of 'nodeset': 0,^0
diff --git a/tests/qemuxml2argvdata/numatune-static-nodeset-exceed-hostnode.err b/tests/qemuxml2argvdata/numatune-static-nodeset-exceed-hostnode.err
new file mode 100644
index 0000000000..9ca7e7c41a
--- /dev/null
+++ b/tests/qemuxml2argvdata/numatune-static-nodeset-exceed-hostnode.err
@@ -0,0 +1 @@
+internal error: Mock: no numa node set is available at bit 8.
diff --git a/tests/qemuxml2argvdata/pci-bridge-duplicate-index.err b/tests/qemuxml2argvdata/pci-bridge-duplicate-index.err
new file mode 100644
index 0000000000..4cd4325984
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-bridge-duplicate-index.err
@@ -0,0 +1 @@
+XML error: Multiple 'pci' controllers with index '1'
diff --git a/tests/qemuxml2argvdata/pci-bridge-negative-index-invalid.err b/tests/qemuxml2argvdata/pci-bridge-negative-index-invalid.err
new file mode 100644
index 0000000000..e258bcbee5
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-bridge-negative-index-invalid.err
@@ -0,0 +1 @@
+internal error: Cannot parse controller index -1
diff --git a/tests/qemuxml2argvdata/pci-bus-invalid.err b/tests/qemuxml2argvdata/pci-bus-invalid.err
new file mode 100644
index 0000000000..e650633f5f
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-bus-invalid.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address bus='0x100', must be <= 0xFF
diff --git a/tests/qemuxml2argvdata/pci-domain-invalid.err b/tests/qemuxml2argvdata/pci-domain-invalid.err
new file mode 100644
index 0000000000..e650633f5f
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-domain-invalid.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address bus='0x100', must be <= 0xFF
diff --git a/tests/qemuxml2argvdata/pci-expander-bus-bad-bus.err b/tests/qemuxml2argvdata/pci-expander-bus-bad-bus.err
new file mode 100644
index 0000000000..5e71bbdbd4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-expander-bus-bad-bus.err
@@ -0,0 +1 @@
+XML error: The device at PCI address 0000:01:01.0 cannot be plugged into the PCI controller with index='1'. It requires a controller that accepts a pci-expander-bus.
diff --git a/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.err b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.err
new file mode 100644
index 0000000000..139591fce3
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.err
@@ -0,0 +1 @@
+XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pci-root' was found instead
diff --git a/tests/qemuxml2argvdata/pci-expander-bus-bad-node.err b/tests/qemuxml2argvdata/pci-expander-bus-bad-node.err
new file mode 100644
index 0000000000..b2b9c034d0
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-expander-bus-bad-node.err
@@ -0,0 +1 @@
+XML error: pci-expander-bus with index 1 is configured for a NUMA node (1) not present in the domain's <cpu><numa> array (0)
diff --git a/tests/qemuxml2argvdata/pci-function-invalid.err b/tests/qemuxml2argvdata/pci-function-invalid.err
new file mode 100644
index 0000000000..314f576a79
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-function-invalid.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address function=0x8, must be <= 7
diff --git a/tests/qemuxml2argvdata/pci-root-address.err b/tests/qemuxml2argvdata/pci-root-address.err
new file mode 100644
index 0000000000..53dad81985
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-root-address.err
@@ -0,0 +1 @@
+XML error: pci-root and pcie-root controllers should not have an address
diff --git a/tests/qemuxml2argvdata/pci-root-nonzero-index.err b/tests/qemuxml2argvdata/pci-root-nonzero-index.err
new file mode 100644
index 0000000000..3b47ba3c9a
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-root-nonzero-index.err
@@ -0,0 +1 @@
+XML error: pci-root and pcie-root controllers should have index 0
diff --git a/tests/qemuxml2argvdata/pci-slot-invalid.err b/tests/qemuxml2argvdata/pci-slot-invalid.err
new file mode 100644
index 0000000000..141ab0326b
--- /dev/null
+++ b/tests/qemuxml2argvdata/pci-slot-invalid.err
@@ -0,0 +1 @@
+XML error: Invalid PCI address slot='0x20', must be <= 0x1F
diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.err b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.err
new file mode 100644
index 0000000000..c17463aebd
--- /dev/null
+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.err
@@ -0,0 +1 @@
+XML error: The device at PCI address 0000:01:00.0 cannot be plugged into the PCI controller with index='1'. It requires a controller that accepts a pcie-expander-bus.
diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.err b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.err
new file mode 100644
index 0000000000..9b58aaddd6
--- /dev/null
+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.err
@@ -0,0 +1 @@
+unsupported configuration: pcie-expander-bus controllers are only supported on q35-based machinetypes
diff --git a/tests/qemuxml2argvdata/pcie-root-port-too-many.err b/tests/qemuxml2argvdata/pcie-root-port-too-many.err
new file mode 100644
index 0000000000..9b24cfb7e0
--- /dev/null
+++ b/tests/qemuxml2argvdata/pcie-root-port-too-many.err
@@ -0,0 +1 @@
+internal error: a PCI slot is needed to connect a PCI controller model='pcie-root-port', but none is available, and it cannot be automatically added
diff --git a/tests/qemuxml2argvdata/pcihole64-none.err b/tests/qemuxml2argvdata/pcihole64-none.err
new file mode 100644
index 0000000000..049065a763
--- /dev/null
+++ b/tests/qemuxml2argvdata/pcihole64-none.err
@@ -0,0 +1 @@
+unsupported configuration: 64-bit PCI hole size setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/ppc64-tpm-double.err b/tests/qemuxml2argvdata/ppc64-tpm-double.err
new file mode 100644
index 0000000000..cc018ce06e
--- /dev/null
+++ b/tests/qemuxml2argvdata/ppc64-tpm-double.err
@@ -0,0 +1 @@
+unsupported configuration: only a single TPM non-proxy device is supported
diff --git a/tests/qemuxml2argvdata/ppc64-tpmproxy-double.err b/tests/qemuxml2argvdata/ppc64-tpmproxy-double.err
new file mode 100644
index 0000000000..f7fe253f8d
--- /dev/null
+++ b/tests/qemuxml2argvdata/ppc64-tpmproxy-double.err
@@ -0,0 +1 @@
+unsupported configuration: only a single TPM Proxy device is supported
diff --git a/tests/qemuxml2argvdata/pseries-cpu-compat-power9.err b/tests/qemuxml2argvdata/pseries-cpu-compat-power9.err
new file mode 100644
index 0000000000..f2322ccea5
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-cpu-compat-power9.err
@@ -0,0 +1 @@
+the CPU is incompatible with host CPU
diff --git a/tests/qemuxml2argvdata/pseries-default-phb-numa-node.err b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.err
new file mode 100644
index 0000000000..5d11109317
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.err
@@ -0,0 +1 @@
+XML error: The PCI controller with index=0 can't be associated with a NUMA node
diff --git a/tests/qemuxml2argvdata/pseries-features-ccf.err b/tests/qemuxml2argvdata/pseries-features-ccf.err
new file mode 100644
index 0000000000..83e88253b8
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-ccf.err
@@ -0,0 +1 @@
+unsupported configuration: ccf-assist configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-ccf.xml b/tests/qemuxml2argvdata/pseries-features-ccf.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-ccf.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-cfpc.err b/tests/qemuxml2argvdata/pseries-features-cfpc.err
new file mode 100644
index 0000000000..47938f1a9e
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-cfpc.err
@@ -0,0 +1 @@
+unsupported configuration: cfpc configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-cfpc.xml b/tests/qemuxml2argvdata/pseries-features-cfpc.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-cfpc.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.err b/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.err
new file mode 100644
index 0000000000..ea3ad282cd
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.err
@@ -0,0 +1 @@
+unsupported configuration: Configuring the page size for HPT guests is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml b/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-htm.err b/tests/qemuxml2argvdata/pseries-features-htm.err
new file mode 100644
index 0000000000..d0bbcb0d27
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-htm.err
@@ -0,0 +1 @@
+unsupported configuration: HTM configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-htm.xml b/tests/qemuxml2argvdata/pseries-features-htm.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-htm.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-htp-resize.err b/tests/qemuxml2argvdata/pseries-features-htp-resize.err
new file mode 100644
index 0000000000..d35c66b819
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-htp-resize.err
@@ -0,0 +1 @@
+unsupported configuration: HTP resizing is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-htp-resize.xml b/tests/qemuxml2argvdata/pseries-features-htp-resize.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-htp-resize.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-ibs.err b/tests/qemuxml2argvdata/pseries-features-ibs.err
new file mode 100644
index 0000000000..7b4d125a36
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-ibs.err
@@ -0,0 +1 @@
+unsupported configuration: ibs configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-ibs.xml b/tests/qemuxml2argvdata/pseries-features-ibs.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-ibs.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-invalid-machine.err b/tests/qemuxml2argvdata/pseries-features-invalid-machine.err
new file mode 100644
index 0000000000..ee75ba8dfc
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-invalid-machine.err
@@ -0,0 +1 @@
+unsupported configuration: The 'hpt' feature is not supported for architecture 'x86_64' or machine type 'pc'
diff --git a/tests/qemuxml2argvdata/pseries-features-nested-hv.err b/tests/qemuxml2argvdata/pseries-features-nested-hv.err
new file mode 100644
index 0000000000..cd6d8a679a
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-nested-hv.err
@@ -0,0 +1 @@
+unsupported configuration: Nested HV configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-nested-hv.xml b/tests/qemuxml2argvdata/pseries-features-nested-hv.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-nested-hv.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-features-sbbc.err b/tests/qemuxml2argvdata/pseries-features-sbbc.err
new file mode 100644
index 0000000000..b3c00172aa
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-sbbc.err
@@ -0,0 +1 @@
+unsupported configuration: sbbc configuration is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-features-sbbc.xml b/tests/qemuxml2argvdata/pseries-features-sbbc.xml
new file mode 120000
index 0000000000..e7b69bba78
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-features-sbbc.xml
@@ -0,0 +1 @@
+pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2argvdata/pseries-no-parallel.err b/tests/qemuxml2argvdata/pseries-no-parallel.err
new file mode 100644
index 0000000000..9c9eb69ae4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-no-parallel.err
@@ -0,0 +1 @@
+unsupported configuration: The 'spapr-pci-host-bridge' device is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-panic-address.err b/tests/qemuxml2argvdata/pseries-panic-address.err
new file mode 100644
index 0000000000..c7a512c51e
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-panic-address.err
@@ -0,0 +1 @@
+unsupported configuration: 'spapr-vty' is not supported in this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-1.err b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-1.err
new file mode 100644
index 0000000000..9c9eb69ae4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-1.err
@@ -0,0 +1 @@
+unsupported configuration: The 'spapr-pci-host-bridge' device is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-2.err b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-2.err
new file mode 100644
index 0000000000..9c9eb69ae4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-2.err
@@ -0,0 +1 @@
+unsupported configuration: The 'spapr-pci-host-bridge' device is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-3.err b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-3.err
new file mode 100644
index 0000000000..9c9eb69ae4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-phb-invalid-target-index-3.err
@@ -0,0 +1 @@
+unsupported configuration: The 'spapr-pci-host-bridge' device is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-serial-invalid-machine.err b/tests/qemuxml2argvdata/pseries-serial-invalid-machine.err
new file mode 100644
index 0000000000..8e64b9c5d5
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-serial-invalid-machine.err
@@ -0,0 +1 @@
+unsupported configuration: Serial device with target type 'spapr-vio-serial' and target model 'spapr-vty' not compatible with guest architecture or machine type
diff --git a/tests/qemuxml2argvdata/pseries-spaprvio-invalid.err b/tests/qemuxml2argvdata/pseries-spaprvio-invalid.err
new file mode 100644
index 0000000000..9c9eb69ae4
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-spaprvio-invalid.err
@@ -0,0 +1 @@
+unsupported configuration: The 'spapr-pci-host-bridge' device is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/pseries-vio-address-clash.err b/tests/qemuxml2argvdata/pseries-vio-address-clash.err
new file mode 100644
index 0000000000..e4eed76f23
--- /dev/null
+++ b/tests/qemuxml2argvdata/pseries-vio-address-clash.err
@@ -0,0 +1 @@
+XML error: spapr-vio address 0x4000 already in use
diff --git a/tests/qemuxml2argvdata/q35-dmi-bad-address1.err b/tests/qemuxml2argvdata/q35-dmi-bad-address1.err
new file mode 100644
index 0000000000..20ff694430
--- /dev/null
+++ b/tests/qemuxml2argvdata/q35-dmi-bad-address1.err
@@ -0,0 +1 @@
+XML error: Multiple 'pci' controllers with index '2'
diff --git a/tests/qemuxml2argvdata/q35-dmi-bad-address2.err b/tests/qemuxml2argvdata/q35-dmi-bad-address2.err
new file mode 100644
index 0000000000..5028b1d7c5
--- /dev/null
+++ b/tests/qemuxml2argvdata/q35-dmi-bad-address2.err
@@ -0,0 +1 @@
+XML error: The device at PCI address 0000:01:00.0 cannot be plugged into the PCI controller with index='1'. It requires a controller that accepts a dmi-to-pci-bridge.
diff --git a/tests/qemuxml2argvdata/q35-noacpi-uefi.err b/tests/qemuxml2argvdata/q35-noacpi-uefi.err
new file mode 100644
index 0000000000..2c28fcc812
--- /dev/null
+++ b/tests/qemuxml2argvdata/q35-noacpi-uefi.err
@@ -0,0 +1 @@
+unsupported configuration: UEFI requires ACPI on this architecture
diff --git a/tests/qemuxml2argvdata/q35-wrong-root.err b/tests/qemuxml2argvdata/q35-wrong-root.err
new file mode 100644
index 0000000000..139591fce3
--- /dev/null
+++ b/tests/qemuxml2argvdata/q35-wrong-root.err
@@ -0,0 +1 @@
+XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pci-root' was found instead
diff --git a/tests/qemuxml2argvdata/reboot-timeout-enabled.err b/tests/qemuxml2argvdata/reboot-timeout-enabled.err
new file mode 100644
index 0000000000..317b293168
--- /dev/null
+++ b/tests/qemuxml2argvdata/reboot-timeout-enabled.err
@@ -0,0 +1 @@
+unsupported configuration: reboot timeout is not supported by this QEMU binary
diff --git a/tests/qemuxml2argvdata/s390-no-parallel.err b/tests/qemuxml2argvdata/s390-no-parallel.err
new file mode 100644
index 0000000000..619b19dc28
--- /dev/null
+++ b/tests/qemuxml2argvdata/s390-no-parallel.err
@@ -0,0 +1 @@
+unsupported configuration: parallel ports are not supported
diff --git a/tests/qemuxml2argvdata/s390-panic-address.err b/tests/qemuxml2argvdata/s390-panic-address.err
new file mode 100644
index 0000000000..510baa9688
--- /dev/null
+++ b/tests/qemuxml2argvdata/s390-panic-address.err
@@ -0,0 +1 @@
+unsupported configuration: setting the panic device address is not supported for model 's390'
diff --git a/tests/qemuxml2argvdata/seclabel-device-duplicates.err b/tests/qemuxml2argvdata/seclabel-device-duplicates.err
new file mode 100644
index 0000000000..7fd8f77c2f
--- /dev/null
+++ b/tests/qemuxml2argvdata/seclabel-device-duplicates.err
@@ -0,0 +1 @@
+XML error: missing security model when using multiple labels
diff --git a/tests/qemuxml2argvdata/seclabel-multiple.err b/tests/qemuxml2argvdata/seclabel-multiple.err
new file mode 100644
index 0000000000..884a05c64e
--- /dev/null
+++ b/tests/qemuxml2argvdata/seclabel-multiple.err
@@ -0,0 +1 @@
+seclabel for model selinux is already provided
diff --git a/tests/qemuxml2argvdata/serial-unix-missing-source.err b/tests/qemuxml2argvdata/serial-unix-missing-source.err
new file mode 100644
index 0000000000..bfbefc8cce
--- /dev/null
+++ b/tests/qemuxml2argvdata/serial-unix-missing-source.err
@@ -0,0 +1 @@
+internal error: Missing source path attribute for char device
diff --git a/tests/qemuxml2argvdata/shmem-invalid-address.err b/tests/qemuxml2argvdata/shmem-invalid-address.err
new file mode 100644
index 0000000000..d32ec55f92
--- /dev/null
+++ b/tests/qemuxml2argvdata/shmem-invalid-address.err
@@ -0,0 +1 @@
+unsupported configuration: only 'pci' addresses are supported for the shared memory device
diff --git a/tests/qemuxml2argvdata/shmem-invalid-size.err b/tests/qemuxml2argvdata/shmem-invalid-size.err
new file mode 100644
index 0000000000..623bd8e5dd
--- /dev/null
+++ b/tests/qemuxml2argvdata/shmem-invalid-size.err
@@ -0,0 +1 @@
+XML error: shmem size must be a power of two
diff --git a/tests/qemuxml2argvdata/shmem-msi-only.err b/tests/qemuxml2argvdata/shmem-msi-only.err
new file mode 100644
index 0000000000..8a3a8d50cd
--- /dev/null
+++ b/tests/qemuxml2argvdata/shmem-msi-only.err
@@ -0,0 +1 @@
+XML error: msi option is only supported with a server
diff --git a/tests/qemuxml2argvdata/shmem-small-size.err b/tests/qemuxml2argvdata/shmem-small-size.err
new file mode 100644
index 0000000000..b5fcd8b4cf
--- /dev/null
+++ b/tests/qemuxml2argvdata/shmem-small-size.err
@@ -0,0 +1 @@
+XML error: shmem size must be at least 1 MiB (1024 KiB)
diff --git a/tests/qemuxml2argvdata/shmem.err b/tests/qemuxml2argvdata/shmem.err
new file mode 100644
index 0000000000..b9e128edf3
--- /dev/null
+++ b/tests/qemuxml2argvdata/shmem.err
@@ -0,0 +1 @@
+unsupported configuration: ivshmem device is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/smbios-date.err b/tests/qemuxml2argvdata/smbios-date.err
new file mode 100644
index 0000000000..cf4453df75
--- /dev/null
+++ b/tests/qemuxml2argvdata/smbios-date.err
@@ -0,0 +1 @@
+Invalid BIOS 'date' format
diff --git a/tests/qemuxml2argvdata/smbios-uuid-match.err b/tests/qemuxml2argvdata/smbios-uuid-match.err
new file mode 100644
index 0000000000..3d57796c9c
--- /dev/null
+++ b/tests/qemuxml2argvdata/smbios-uuid-match.err
@@ -0,0 +1 @@
+UUID mismatch between <uuid> and <sysinfo>
diff --git a/tests/qemuxml2argvdata/tpm-no-backend-invalid.err b/tests/qemuxml2argvdata/tpm-no-backend-invalid.err
new file mode 100644
index 0000000000..1825154d4c
--- /dev/null
+++ b/tests/qemuxml2argvdata/tpm-no-backend-invalid.err
@@ -0,0 +1 @@
+XML error: missing TPM device backend
diff --git a/tests/qemuxml2argvdata/tseg-explicit-size.x86_64-2.10.0.err b/tests/qemuxml2argvdata/tseg-explicit-size.x86_64-2.10.0.err
new file mode 100644
index 0000000000..82f8685a90
--- /dev/null
+++ b/tests/qemuxml2argvdata/tseg-explicit-size.x86_64-2.10.0.err
@@ -0,0 +1 @@
+unsupported configuration: Setting TSEG size is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/tseg-i440fx.x86_64-latest.err b/tests/qemuxml2argvdata/tseg-i440fx.x86_64-latest.err
new file mode 100644
index 0000000000..a0aa846d3c
--- /dev/null
+++ b/tests/qemuxml2argvdata/tseg-i440fx.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: SMM TSEG is only supported with q35 machine type
diff --git a/tests/qemuxml2argvdata/tseg-invalid-size.x86_64-latest.err b/tests/qemuxml2argvdata/tseg-invalid-size.x86_64-latest.err
new file mode 100644
index 0000000000..c4f6a649f8
--- /dev/null
+++ b/tests/qemuxml2argvdata/tseg-invalid-size.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: SMM TSEG size must be divisible by 1 MiB
diff --git a/tests/qemuxml2argvdata/usb-bus-missing.err b/tests/qemuxml2argvdata/usb-bus-missing.err
new file mode 100644
index 0000000000..41f5534eaf
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-bus-missing.err
@@ -0,0 +1 @@
+XML error: USB bus 1 requested but no controller with that index is present
diff --git a/tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.err b/tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.err
new file mode 100644
index 0000000000..7a71aa107d
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.err
@@ -0,0 +1 @@
+unsupported configuration: no model provided for USB controller
diff --git a/tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.err b/tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.err
new file mode 100644
index 0000000000..4940f896cc
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.err
@@ -0,0 +1 @@
+unsupported configuration: nec-usb-xhci not supported in this QEMU binary
diff --git a/tests/qemuxml2argvdata/usb-controller-qemu-xhci-limit.err b/tests/qemuxml2argvdata/usb-controller-qemu-xhci-limit.err
new file mode 100644
index 0000000000..49b2cec3c5
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-controller-qemu-xhci-limit.err
@@ -0,0 +1 @@
+unsupported configuration: 'qemu-xhci' controller only supports up to '15' ports
diff --git a/tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.err b/tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.err
new file mode 100644
index 0000000000..1b797dd343
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.err
@@ -0,0 +1 @@
+unsupported configuration: qemu-xhci not supported in this QEMU binary
diff --git a/tests/qemuxml2argvdata/usb-controller-xhci-limit.err b/tests/qemuxml2argvdata/usb-controller-xhci-limit.err
new file mode 100644
index 0000000000..fcd6505a83
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-controller-xhci-limit.err
@@ -0,0 +1 @@
+unsupported configuration: 'nec-xhci' controller only supports up to '15' ports
diff --git a/tests/qemuxml2argvdata/usb-hub-conflict.err b/tests/qemuxml2argvdata/usb-hub-conflict.err
new file mode 100644
index 0000000000..c2ed243842
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-hub-conflict.err
@@ -0,0 +1 @@
+XML error: Duplicate USB address bus 0 port 1
diff --git a/tests/qemuxml2argvdata/usb-hub-nonexistent.err b/tests/qemuxml2argvdata/usb-hub-nonexistent.err
new file mode 100644
index 0000000000..041f51da4b
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-hub-nonexistent.err
@@ -0,0 +1 @@
+XML error: there is no hub at port 1 in USB address bus: 0 port: 1.2.3
diff --git a/tests/qemuxml2argvdata/usb-ich9-no-companion.err b/tests/qemuxml2argvdata/usb-ich9-no-companion.err
new file mode 100644
index 0000000000..b794ac59e4
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-ich9-no-companion.err
@@ -0,0 +1 @@
+No master USB controller specified
diff --git a/tests/qemuxml2argvdata/usb-none-hub.err b/tests/qemuxml2argvdata/usb-none-hub.err
new file mode 100644
index 0000000000..d00a7005d4
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-none-hub.err
@@ -0,0 +1 @@
+unsupported configuration: Can't add USB hub: USB is disabled for this domain
diff --git a/tests/qemuxml2argvdata/usb-none-other.err b/tests/qemuxml2argvdata/usb-none-other.err
new file mode 100644
index 0000000000..d14c171155
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-none-other.err
@@ -0,0 +1 @@
+Can't add another USB controller: USB is disabled for this domain
diff --git a/tests/qemuxml2argvdata/usb-none-usbtablet.err b/tests/qemuxml2argvdata/usb-none-usbtablet.err
new file mode 100644
index 0000000000..af1ca0196c
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-none-usbtablet.err
@@ -0,0 +1 @@
+unsupported configuration: Can't add USB input device. USB bus is disabled
diff --git a/tests/qemuxml2argvdata/usb-ports-out-of-range.err b/tests/qemuxml2argvdata/usb-ports-out-of-range.err
new file mode 100644
index 0000000000..0db7c9981f
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-ports-out-of-range.err
@@ -0,0 +1 @@
+XML error: requested USB port 1.9 not present on USB bus 0
diff --git a/tests/qemuxml2argvdata/usb-too-long-port-path-invalid.err b/tests/qemuxml2argvdata/usb-too-long-port-path-invalid.err
new file mode 100644
index 0000000000..a4f19abb9b
--- /dev/null
+++ b/tests/qemuxml2argvdata/usb-too-long-port-path-invalid.err
@@ -0,0 +1 @@
+internal error: Cannot parse <address> 'port' attribute
diff --git a/tests/qemuxml2argvdata/vhost-user-fs-readonly.x86_64-latest.err b/tests/qemuxml2argvdata/vhost-user-fs-readonly.x86_64-latest.err
new file mode 100644
index 0000000000..fff45fac4b
--- /dev/null
+++ b/tests/qemuxml2argvdata/vhost-user-fs-readonly.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: virtiofs does not yet support read-only mode
diff --git a/tests/qemuxml2argvdata/vhost_queues-invalid.err b/tests/qemuxml2argvdata/vhost_queues-invalid.err
new file mode 100644
index 0000000000..e89358f0a3
--- /dev/null
+++ b/tests/qemuxml2argvdata/vhost_queues-invalid.err
@@ -0,0 +1 @@
+'queues' attribute must be positive number: -5
diff --git a/tests/qemuxml2argvdata/video-invalid-multiple-devices.err b/tests/qemuxml2argvdata/video-invalid-multiple-devices.err
new file mode 100644
index 0000000000..7fc20b2370
--- /dev/null
+++ b/tests/qemuxml2argvdata/video-invalid-multiple-devices.err
@@ -0,0 +1 @@
+unsupported configuration: domain configuration does not support 'video model' value 'qxl'
diff --git a/tests/qemuxml2argvdata/video-ramfb-display-device-pci-address.x86_64-latest.err b/tests/qemuxml2argvdata/video-ramfb-display-device-pci-address.x86_64-latest.err
new file mode 100644
index 0000000000..00e409e1db
--- /dev/null
+++ b/tests/qemuxml2argvdata/video-ramfb-display-device-pci-address.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: 'address' is not supported for 'ramfb' video devices
diff --git a/tests/qemuxml2argvdata/virtio-options-controller-ats.err b/tests/qemuxml2argvdata/virtio-options-controller-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-controller-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-controller-iommu.err b/tests/qemuxml2argvdata/virtio-options-controller-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-controller-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-controller-packed.err b/tests/qemuxml2argvdata/virtio-options-controller-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-controller-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-disk-ats.err b/tests/qemuxml2argvdata/virtio-options-disk-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-disk-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-disk-iommu.err b/tests/qemuxml2argvdata/virtio-options-disk-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-disk-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-disk-packed.err b/tests/qemuxml2argvdata/virtio-options-disk-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-disk-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-fs-ats.err b/tests/qemuxml2argvdata/virtio-options-fs-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-fs-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-fs-iommu.err b/tests/qemuxml2argvdata/virtio-options-fs-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-fs-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-fs-packed.err b/tests/qemuxml2argvdata/virtio-options-fs-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-fs-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-input-ats.err b/tests/qemuxml2argvdata/virtio-options-input-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-input-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-input-iommu.err b/tests/qemuxml2argvdata/virtio-options-input-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-input-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-input-packed.err b/tests/qemuxml2argvdata/virtio-options-input-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-input-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-memballoon-ats.err b/tests/qemuxml2argvdata/virtio-options-memballoon-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-memballoon-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-memballoon-iommu.err b/tests/qemuxml2argvdata/virtio-options-memballoon-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-memballoon-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-memballoon-packed.err b/tests/qemuxml2argvdata/virtio-options-memballoon-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-memballoon-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-net-ats.err b/tests/qemuxml2argvdata/virtio-options-net-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-net-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-net-iommu.err b/tests/qemuxml2argvdata/virtio-options-net-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-net-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-net-packed.err b/tests/qemuxml2argvdata/virtio-options-net-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-net-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-rng-ats.err b/tests/qemuxml2argvdata/virtio-options-rng-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-rng-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-rng-iommu.err b/tests/qemuxml2argvdata/virtio-options-rng-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-rng-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-rng-packed.err b/tests/qemuxml2argvdata/virtio-options-rng-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-rng-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-video-ats.err b/tests/qemuxml2argvdata/virtio-options-video-ats.err
new file mode 100644
index 0000000000..f1ae0949f6
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-video-ats.err
@@ -0,0 +1 @@
+unsupported configuration: the ats setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-video-iommu.err b/tests/qemuxml2argvdata/virtio-options-video-iommu.err
new file mode 100644
index 0000000000..08908544fb
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-video-iommu.err
@@ -0,0 +1 @@
+unsupported configuration: the iommu setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-options-video-packed.err b/tests/qemuxml2argvdata/virtio-options-video-packed.err
new file mode 100644
index 0000000000..b17ed8d359
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-options-video-packed.err
@@ -0,0 +1 @@
+unsupported configuration: the packed setting is not supported with this QEMU binary
diff --git a/tests/qemuxml2argvdata/virtio-rng-egd-crash.err b/tests/qemuxml2argvdata/virtio-rng-egd-crash.err
new file mode 100644
index 0000000000..bfbefc8cce
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-rng-egd-crash.err
@@ -0,0 +1 @@
+internal error: Missing source path attribute for char device
diff --git a/tests/qemuxml2argvdata/virtio-transitional-not-supported.x86_64-latest.err b/tests/qemuxml2argvdata/virtio-transitional-not-supported.x86_64-latest.err
new file mode 100644
index 0000000000..143adda939
--- /dev/null
+++ b/tests/qemuxml2argvdata/virtio-transitional-not-supported.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: virtio (non-)transitional models are not supported for input type=keyboard
diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
index e5841bc8e3..17be4bedfc 100644
--- a/tests/qemuxml2argvmock.c
+++ b/tests/qemuxml2argvmock.c
@@ -23,6 +23,7 @@
 #include "vircommand.h"
 #include "vircrypto.h"
 #include "virmock.h"
+#include "virlog.h"
 #include "virnetdev.h"
 #include "virnetdevip.h"
 #include "virnetdevtap.h"
@@ -91,6 +92,8 @@ virNumaNodesetIsAvailable(virBitmapPtr nodeset)
         if (virNumaNodeIsAvailable(bit))
             continue;
 
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "Mock: no numa node set is available at bit %li.", bit);
         return false;
     }
 
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index e93948e3fc..882a6837b0 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -565,6 +565,7 @@ testCompareXMLToArgv(const void *data)
     virDomainObjPtr vm = NULL;
     virDomainChrSourceDef monitor_chr;
     g_autoptr(virConnect) conn = NULL;
+    virError *err = NULL;
     char *log = NULL;
     g_autoptr(virCommand) cmd = NULL;
     qemuDomainObjPrivatePtr priv = NULL;
@@ -615,7 +616,13 @@ testCompareXMLToArgv(const void *data)
     if (!(vm->def = virDomainDefParseFile(info->infile,
                                           driver.xmlopt,
                                           NULL, parseFlags))) {
-        if (flags & FLAG_EXPECT_PARSE_ERROR)
+        err = virGetLastError();
+        if (!err) {
+            VIR_TEST_DEBUG("no error was reported for expected parse error");
+            goto cleanup;
+        }
+        if (flags & FLAG_EXPECT_PARSE_ERROR &&
+            virTestCompareToFile(err->message, info->errfile) >= 0)
             goto ok;
         goto cleanup;
     }
@@ -651,7 +658,13 @@ testCompareXMLToArgv(const void *data)
 
     if (!(cmd = testCompareXMLToArgvCreateArgs(&driver, vm, migrateURI, info,
                                                flags, false))) {
-        if (flags & FLAG_EXPECT_FAILURE)
+        err = virGetLastError();
+        if (!err) {
+            VIR_TEST_DEBUG("no error was reported for expected failure");
+            goto cleanup;
+        }
+        if (flags & FLAG_EXPECT_FAILURE &&
+            virTestCompareToFile(err->message, info->errfile) >= 0)
             goto ok;
         goto cleanup;
     }
@@ -704,6 +717,8 @@ testInfoSetPaths(struct testQemuInfo *info,
                                    abs_srcdir, info->name);
     info->outfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.args",
                                     abs_srcdir, info->name, suffix ? suffix : "");
+    info->errfile = g_strdup_printf("%s/qemuxml2argvdata/%s%s.err",
+                                      abs_srcdir, info->name, suffix ? suffix : "");
 }
 
 # define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
@@ -908,6 +923,7 @@ mymain(void)
     g_setenv("USER", "test", TRUE);
     g_setenv("LOGNAME", "test", TRUE);
     g_setenv("HOME", "/home/test", TRUE);
+    g_setenv("LC_ALL", "C", TRUE);
     g_unsetenv("TMPDIR");
     g_unsetenv("LD_PRELOAD");
     g_unsetenv("LD_LIBRARY_PATH");
@@ -1865,7 +1881,7 @@ mymain(void)
     DO_TEST_PARSE_ERROR("cpu-numa-disjoint", NONE);
     DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
     DO_TEST_FAILURE("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_RAM);
-    DO_TEST_PARSE_ERROR("cpu-numa-memshared", NONE);
+    DO_TEST_PARSE_ERROR("cpu-numa-memshared-1", NONE);
     DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE);
     DO_TEST("cpu-host-model", NONE);
     DO_TEST("cpu-host-model-vendor", NONE);
@@ -2092,7 +2108,7 @@ mymain(void)
             QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-htp-resize",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
@@ -2103,7 +2119,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_CAP_IBS);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-hpt-pagesize",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
@@ -2114,7 +2130,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_CAP_HTM */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-htm",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
@@ -2125,7 +2141,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-nested-hv",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
@@ -2136,7 +2152,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-ccf",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
@@ -2147,7 +2163,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_CFPC */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-cfpc",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
@@ -2158,7 +2174,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_CAP_IBS);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_SBBC */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-sbbc",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
@@ -2169,7 +2185,7 @@ mymain(void)
                         QEMU_CAPS_MACHINE_PSERIES_CAP_IBS);
 
     /* parse error: no QEMU_CAPS_MACHINE_PSERIES_IBS */
-    DO_TEST_PARSE_ERROR("pseries-features",
+    DO_TEST_PARSE_ERROR("pseries-features-ibs",
                         QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
                         QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT,
                         QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c
index 51ac59bade..0c4031e71b 100644
--- a/tests/testutilsqemu.c
+++ b/tests/testutilsqemu.c
@@ -795,5 +795,6 @@ testQemuInfoClear(struct testQemuInfo *info)
     VIR_FREE(info->infile);
     VIR_FREE(info->outfile);
     VIR_FREE(info->schemafile);
+    VIR_FREE(info->errfile);
     virObjectUnref(info->qemuCaps);
 }
diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h
index e7c5032012..66f9cef48e 100644
--- a/tests/testutilsqemu.h
+++ b/tests/testutilsqemu.h
@@ -58,6 +58,7 @@ struct testQemuInfo {
     const char *name;
     char *infile;
     char *outfile;
+    char *errfile;
     virQEMUCapsPtr qemuCaps;
     const char *migrateFrom;
     int migrateFd;
-- 
2.26.2




More information about the libvir-list mailing list