# Test exclusions for the locally rebuilt x86-64-v3 package set. # # Selecting x86-64-v3 changes every affected derivation, so the normal # nixpkgs binary cache cannot be used and upstream test suites run locally. # The jeeves builder uses /tmp/nix-builds so filesystem tests run on tmpfs # instead of ZFS with normalization=formD and utf8only=on; those tests remain # enabled. The remaining workarounds cover UDP readiness, resource-sensitive # parser and nested-worker races, and mismatched timeout clocks, plus # architecture-dependent floating-point differences whose risk we accept for # our workloads. Keep these exceptions visible until their causes are fixed. _final: prev: { gnutls = prev.gnutls.overrideAttrs (old: { # This test uses a fixed four-second sleep instead of checking UDP # readiness; the client saw no listener in the x86-64-v3 build. postPatch = (old.postPatch or "") + '' sed '2iexit 77' -i tests/serv-udp.sh ''; }); prometheus = prev.prometheus.overrideAttrs ( old: let assets = old.passthru.assets.overrideAttrs (assetsOld: { # CodeMirror's bounded synchronous parser can return an incomplete tree # when these cases run on a heavily loaded builder. postPatch = (assetsOld.postPatch or "") + '' substituteInPlace module/codemirror-promql/src/complete/hybrid.test.ts \ --replace-fail "it(value.title, () => {" \ "(value.title === 'autocomplete topk params 2' ? it.skip : it)(value.title, () => {" substituteInPlace module/codemirror-promql/src/parser/vector.test.ts \ --replace-fail "it(value.binaryExpr, () => {" \ "(value.binaryExpr === 'foo * on(test,blub) bar' ? it.skip : it)(value.binaryExpr, () => {" ''; }); in { postPatch = builtins.replaceStrings [ "${old.passthru.assets}" ] [ "${assets}" ] ( builtins.unsafeDiscardStringContext old.postPatch ); passthru = old.passthru // { inherit assets; }; } ); pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ (_pythonFinal: pythonPrev: { backrefs = pythonPrev.backrefs.overridePythonAttrs (old: { # regex measures its timeout in process CPU time, while this test used # wall time and could miss the timeout when a busy builder descheduled it. postPatch = (old.postPatch or "") + '' substituteInPlace tests/test_bregex.py \ --replace-fail "time.time()" "time.process_time()" ''; }); pytest-xdist = pythonPrev.pytest-xdist.overridePythonAttrs (old: { # The suite exercises its own worker pools. Run the outer suite with one # worker and allow inner workers more time on heavily loaded builders. postPatch = (old.postPatch or "") + '' substituteInPlace testing/test_remote.py \ --replace-fail "WAIT_TIMEOUT = 10.0" "WAIT_TIMEOUT = 60.0" ''; preCheck = builtins.replaceStrings [ "--numprocesses=$NIX_BUILD_CORES" ] [ "--numprocesses=1" ] ( old.preCheck or "" ); # This test deliberately crashes workers past the restart limit and # races while checking which replacement message was emitted. disabledTests = (old.disabledTests or [ ]) ++ [ "test_max_worker_restart_tests_queued" ]; }); scipy = pythonPrev.scipy.overridePythonAttrs (old: { # x86-64-v3 FFT implementations produce rounding differences outside # these tests' strict tolerances. We accept the numerical-precision # risk for our workloads. disabledTests = (old.disabledTests or [ ]) ++ [ "test_roundtrip_float32" "test_roundtrip_scaling" ]; }); }) ]; }