diff options
author | Robert Scott <code@humanleg.org.uk> | 2022-02-19 15:25:18 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-19 15:25:18 +0000 |
commit | b0cb2154744b31a1709067d532008ffd4896a3c1 (patch) | |
tree | e5b76338d2848d2b67760d3a9779a4a81c8c90d0 /pkgs/applications/virtualization/qemu | |
parent | 1af66969f854dd0377606561fb8e81fc83784b87 (diff) | |
parent | 5adc3817a0d658252131b3fe3df08ca134551ebd (diff) |
Merge pull request #144946 from risicle/ris-qemu-tests
qemu: enable some basic tests
Diffstat (limited to 'pkgs/applications/virtualization/qemu')
-rw-r--r-- | pkgs/applications/virtualization/qemu/default.nix | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 2ae0aca5845e0..ee923f4e0cd0a 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -2,7 +2,7 @@ , perl, pixman, vde2, alsa-lib, texinfo, flex , bison, lzo, snappy, libaio, libtasn1, gnutls, nettle, curl, ninja, meson, sigtool , makeWrapper, runtimeShell -, attr, libcap, libcap_ng +, attr, libcap, libcap_ng, socat , CoreServices, Cocoa, Hypervisor, rez, setfile , numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl , seccompSupport ? stdenv.isLinux, libseccomp @@ -31,6 +31,8 @@ ++ ["${stdenv.hostPlatform.qemuArch}-softmmu"]) else null) , nixosTestRunner ? false +, doCheck ? false +, qemu # for passthru.tests }: stdenv.mkDerivation rec { @@ -158,7 +160,6 @@ stdenv.mkDerivation rec { ++ lib.optional smbdSupport "--smbd=${samba}/bin/smbd" ++ lib.optional uringSupport "--enable-linux-io-uring"; - doCheck = false; # tries to access /dev dontWrapGApps = true; # QEMU attaches entitlements with codesign and strip removes those, @@ -182,6 +183,40 @@ stdenv.mkDerivation rec { ''; preBuild = "cd build"; + # tests can still timeout on slower systems + inherit doCheck; + checkInputs = [ socat ]; + preCheck = '' + # time limits are a little meagre for a build machine that's + # potentially under load. + substituteInPlace ../tests/unit/meson.build \ + --replace 'timeout: slow_tests' 'timeout: 50 * slow_tests' + substituteInPlace ../tests/qtest/meson.build \ + --replace 'timeout: slow_qtests' 'timeout: 50 * slow_qtests' + substituteInPlace ../tests/fp/meson.build \ + --replace 'timeout: 90)' 'timeout: 300)' + + # point tests towards correct binaries + substituteInPlace ../tests/unit/test-qga.c \ + --replace '/bin/echo' "$(type -P echo)" + substituteInPlace ../tests/unit/test-io-channel-command.c \ + --replace '/bin/socat' "$(type -P socat)" + + # combined with a long package name, some temp socket paths + # can end up exceeding max socket name len + substituteInPlace ../tests/qtest/bios-tables-test.c \ + --replace 'qemu-test_acpi_%s_tcg_%s' '%s_%s' + + # get-fsinfo attempts to access block devices, disallowed by sandbox + sed -i -e '/\/qga\/get-fsinfo/d' -e '/\/qga\/blacklist/d' \ + ../tests/unit/test-qga.c + '' + lib.optionalString stdenv.isDarwin '' + # skip test that stalls on darwin, perhaps due to subtle differences + # in fifo behaviour + substituteInPlace ../tests/unit/meson.build \ + --replace "'test-io-channel-command'" "#'test-io-channel-command'" + ''; + # Add a ‘qemu-kvm’ wrapper for compatibility/convenience. postInstall = '' ln -s $out/bin/qemu-system-${stdenv.hostPlatform.qemuArch} $out/bin/qemu-kvm @@ -189,6 +224,9 @@ stdenv.mkDerivation rec { passthru = { qemu-system-i386 = "bin/qemu-system-i386"; + tests = { + qemu-tests = qemu.override { doCheck = true; }; + }; }; # Builds in ~3h with 2 cores, and ~20m with a big-parallel builder. |