this derivation will be built: /nix/store/yknkn65qpv15c5iahz8c29kdazp1fzm2-python3.14-nixbot-tests.drv Failed to find a machine for remote build! derivation: yknkn65qpv15c5iahz8c29kdazp1fzm2-python3.14-nixbot-tests.drv required (system, features): (aarch64-linux, []) 1 available machines: (systems, maxjobs, supportedFeatures, mandatoryFeatures) ([aarch64-darwin, x86_64-darwin], 8, [big-parallel, recursive-nix], []) building '/nix/store/yknkn65qpv15c5iahz8c29kdazp1fzm2-python3.14-nixbot-tests.drv' python3.14-nixbot-tests> tribuchet: building on eliza python3.14-nixbot-tests> Sourcing python-remove-tests-dir-hook python3.14-nixbot-tests> Sourcing python-catch-conflicts-hook.sh python3.14-nixbot-tests> Sourcing python-remove-bin-bytecode-hook.sh python3.14-nixbot-tests> Sourcing pypa-build-hook python3.14-nixbot-tests> Using pypaBuildPhase python3.14-nixbot-tests> Sourcing python-runtime-deps-check-hook python3.14-nixbot-tests> Using pythonRuntimeDepsCheckHook python3.14-nixbot-tests> Sourcing pypa-install-hook python3.14-nixbot-tests> Using pypaInstallPhase python3.14-nixbot-tests> Sourcing python-imports-check-hook.sh python3.14-nixbot-tests> Using pythonImportsCheckPhase python3.14-nixbot-tests> Sourcing python-namespaces-hook python3.14-nixbot-tests> Sourcing python-catch-conflicts-hook.sh python3.14-nixbot-tests> Sourcing pytest-check-hook python3.14-nixbot-tests> Using pytestCheckPhase python3.14-nixbot-tests> Running phase: unpackPhase python3.14-nixbot-tests> unpacking source archive /nix/store/z0k5i2qscw8lsdl7528sb1k01a0asxdq-nixbot python3.14-nixbot-tests> source root is nixbot python3.14-nixbot-tests> setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml" python3.14-nixbot-tests> Running phase: patchPhase python3.14-nixbot-tests> Running phase: updateAutotoolsGnuConfigScriptsPhase python3.14-nixbot-tests> Running phase: configurePhase python3.14-nixbot-tests> no configure script, doing nothing python3.14-nixbot-tests> Running phase: buildPhase python3.14-nixbot-tests> Executing pypaBuildPhase python3.14-nixbot-tests> Creating a wheel... python3.14-nixbot-tests> pypa build flags: --no-isolation --outdir dist/ --wheel python3.14-nixbot-tests> * Getting build dependencies for wheel... python3.14-nixbot-tests> * Building wheel... python3.14-nixbot-tests> Successfully built nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished creating a wheel... python3.14-nixbot-tests> Finished executing pypaBuildPhase python3.14-nixbot-tests> Running phase: pythonRuntimeDepsCheckHook python3.14-nixbot-tests> Executing pythonRuntimeDepsCheck python3.14-nixbot-tests> Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished executing pythonRuntimeDepsCheck python3.14-nixbot-tests> Running phase: installPhase python3.14-nixbot-tests> Executing pypaInstallPhase python3.14-nixbot-tests> Successfully installed nixbot-0.0.1-py3-none-any.whl python3.14-nixbot-tests> Finished executing pypaInstallPhase python3.14-nixbot-tests> Running phase: pythonOutputDistPhase python3.14-nixbot-tests> Executing pythonOutputDistPhase python3.14-nixbot-tests> Finished executing pythonOutputDistPhase python3.14-nixbot-tests> Running phase: fixupPhase python3.14-nixbot-tests> shrinking RPATHs of ELF executables and libraries in /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests python3.14-nixbot-tests> checking for references to /build/ in /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests... python3.14-nixbot-tests> patching script interpreter paths in /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests python3.14-nixbot-tests> stripping (with command strip and flags -S -p) in /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests/lib /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests/bin python3.14-nixbot-tests> shrinking RPATHs of ELF executables and libraries in /nix/store/ix3c73i72lgwsbdjpn939dpi7gpx61v4-python3.14-nixbot-tests-dist python3.14-nixbot-tests> checking for references to /build/ in /nix/store/ix3c73i72lgwsbdjpn939dpi7gpx61v4-python3.14-nixbot-tests-dist... python3.14-nixbot-tests> patching script interpreter paths in /nix/store/ix3c73i72lgwsbdjpn939dpi7gpx61v4-python3.14-nixbot-tests-dist python3.14-nixbot-tests> Rewriting #!/nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 to #!/nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6 python3.14-nixbot-tests> wrapping `/nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests/bin/nixbot'... python3.14-nixbot-tests> Executing pythonRemoveTestsDir python3.14-nixbot-tests> Finished executing pythonRemoveTestsDir python3.14-nixbot-tests> Running phase: installCheckPhase python3.14-nixbot-tests> no Makefile or custom installCheckPhase, doing nothing python3.14-nixbot-tests> Running phase: pythonCatchConflictsPhase python3.14-nixbot-tests> Running phase: pythonRemoveBinBytecodePhase python3.14-nixbot-tests> Running phase: pythonImportsCheckPhase python3.14-nixbot-tests> Executing pythonImportsCheckPhase python3.14-nixbot-tests> Running phase: pytestCheckPhase python3.14-nixbot-tests> Executing pytestCheckPhase python3.14-nixbot-tests> pytest flags: -m pytest --numprocesses=24 python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> /nix/store/2xp5r99cnys85h806mpdw43bz48y05ds-python3.14-pytest-benchmark-5.2.3/lib/python3.14/site-packages/pytest_benchmark/logger.py:44: PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment. python3.14-nixbot-tests> warner(PytestBenchmarkWarning(text)) python3.14-nixbot-tests> ============================= test session starts ============================== python3.14-nixbot-tests> platform linux -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0 python3.14-nixbot-tests> benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) python3.14-nixbot-tests> rootdir: /build/nixbot python3.14-nixbot-tests> configfile: pyproject.toml python3.14-nixbot-tests> plugins: asyncio-1.4.0, timeout-2.4.0, xdist-3.8.0, benchmark-5.2.3, anyio-4.14.2 python3.14-nixbot-tests> asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function python3.14-nixbot-tests> timeout: 60.0s python3.14-nixbot-tests> timeout method: signal python3.14-nixbot-tests> timeout func_only: False python3.14-nixbot-tests> created: 24/24 workers python3.14-nixbot-tests> 24 workers [845 items] python3.14-nixbot-tests> python3.14-nixbot-tests> ................s..................ssssssss............................. [ 8%] python3.14-nixbot-tests> ........................................................................ [ 17%] python3.14-nixbot-tests> ........................................................................ [ 25%] python3.14-nixbot-tests> ........................................................................ [ 34%] python3.14-nixbot-tests> ..................................................s..................... [ 42%] python3.14-nixbot-tests> ..........F..................F.......................................... [ 51%] python3.14-nixbot-tests> ........................................................................ [ 59%] python3.14-nixbot-tests> .....................s..................................s............... [ 68%] python3.14-nixbot-tests> .......................................................F................ [ 76%] python3.14-nixbot-tests> ........................................................................ [ 85%] python3.14-nixbot-tests> .....................................................F.................. [ 93%] python3.14-nixbot-tests> ...............F...............................F..... [100%] python3.14-nixbot-tests> =================================== FAILURES =================================== python3.14-nixbot-tests> __________________________ test_prefetch_integration ___________________________ python3.14-nixbot-tests> [gw6] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0') python3.14-nixbot-tests> python3.14-nixbot-tests> @needs_nix python3.14-nixbot-tests> async def test_prefetch_integration(tmp_path: Path) -> None: python3.14-nixbot-tests> """A locked git input is copied to the store and gc-rooted; after python3.14-nixbot-tests> the input's source repo is gone, evaluation still succeeds purely python3.14-nixbot-tests> from the store (the sandboxed eval has no credentials for private python3.14-nixbot-tests> inputs).""" python3.14-nixbot-tests> dep = init_upstream( python3.14-nixbot-tests> tmp_path / "dep", python3.14-nixbot-tests> {"flake.nix": '{ outputs = { self }: { greeting = "hello"; }; }'}, python3.14-nixbot-tests> ) python3.14-nixbot-tests> repo = init_upstream( python3.14-nixbot-tests> tmp_path / "repo", python3.14-nixbot-tests> { python3.14-nixbot-tests> "flake.nix": f""" python3.14-nixbot-tests> {{ python3.14-nixbot-tests> inputs.dep.url = "git+file://{dep}"; python3.14-nixbot-tests> outputs = {{ self, dep }}: {{ python3.14-nixbot-tests> checks.x86_64-linux.ok = derivation {{ python3.14-nixbot-tests> name = "ok-" + dep.greeting; python3.14-nixbot-tests> system = "x86_64-linux"; python3.14-nixbot-tests> builder = "/bin/sh"; python3.14-nixbot-tests> args = [ "-c" "echo ok > $out" ]; python3.14-nixbot-tests> }}; python3.14-nixbot-tests> }}; python3.14-nixbot-tests> }} python3.14-nixbot-tests> """ python3.14-nixbot-tests> }, python3.14-nixbot-tests> ) python3.14-nixbot-tests> _nix_flake_lock(repo) python3.14-nixbot-tests> python3.14-nixbot-tests> gcroots = tmp_path / "gcroots" python3.14-nixbot-tests> await prefetch_flake_inputs(repo, BranchConfig(), gcroots) python3.14-nixbot-tests> python3.14-nixbot-tests> roots = list((gcroots / "inputs").iterdir()) python3.14-nixbot-tests> assert len(roots) == 1 python3.14-nixbot-tests> assert roots[0].is_symlink() python3.14-nixbot-tests> assert roots[0].resolve().is_dir() python3.14-nixbot-tests> python3.14-nixbot-tests> # The eval must not need the input's origin anymore. python3.14-nixbot-tests> shutil.rmtree(dep) python3.14-nixbot-tests> python3.14-nixbot-tests> if shutil.which("nix-eval-jobs") is None: python3.14-nixbot-tests> pytest.skip("nix-eval-jobs not available") python3.14-nixbot-tests> settings = EvalSettings( python3.14-nixbot-tests> gc_roots_dir=tmp_path / "eval-gcroots", sandbox=False, systemd_scope=False python3.14-nixbot-tests> ) python3.14-nixbot-tests> > result = await EvalRunner().run(repo, BranchConfig(), settings) python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_flake_prefetch.py:147: python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> nixbot/nix_eval.py:585: in run python3.14-nixbot-tests> return await self._spawn( python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> python3.14-nixbot-tests> self = python3.14-nixbot-tests> worktree_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/repo') python3.14-nixbot-tests> branch_config = BranchConfig(flake_dir='.', lock_file='flake.lock', attribute='checks', effects_on_pull_requests=False, effects_branches=[], build_branches=None, require_approval=True) python3.14-nixbot-tests> settings = EvalSettings(gc_roots_dir=PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/eval-gcroot...Path('/nix/var/nix/daemon-socket/socket'), extra_ro_paths=[], extra_args=[], eval_systems=[], legacy_attr_prefix=False) python3.14-nixbot-tests> preexec_fn = None, on_jobs = None, on_stderr_line = None, eval_cgroup = None python3.14-nixbot-tests> python3.14-nixbot-tests> async def _spawn( # noqa: PLR0913 python3.14-nixbot-tests> self, python3.14-nixbot-tests> worktree_path: Path, python3.14-nixbot-tests> branch_config: BranchConfig, python3.14-nixbot-tests> settings: EvalSettings, python3.14-nixbot-tests> preexec_fn: Callable[[], None] | None = None, python3.14-nixbot-tests> on_jobs: JobBatchCallback | None = None, python3.14-nixbot-tests> on_stderr_line: StderrLineCallback | None = None, python3.14-nixbot-tests> eval_cgroup: Path | None = None, python3.14-nixbot-tests> ) -> EvalResult: python3.14-nixbot-tests> cmd = build_full_command(worktree_path, branch_config, settings) python3.14-nixbot-tests> logger.info( python3.14-nixbot-tests> "starting evaluation", python3.14-nixbot-tests> extra={"worktree": str(worktree_path), "argv0": cmd[0]}, python3.14-nixbot-tests> ) python3.14-nixbot-tests> t0 = time.monotonic() python3.14-nixbot-tests> proc = await asyncio.create_subprocess_exec( python3.14-nixbot-tests> *cmd, python3.14-nixbot-tests> cwd=worktree_path, python3.14-nixbot-tests> stdout=asyncio.subprocess.PIPE, python3.14-nixbot-tests> stderr=asyncio.subprocess.PIPE, python3.14-nixbot-tests> preexec_fn=preexec_fn, python3.14-nixbot-tests> # Own process group so a timeout can kill the whole tree. python3.14-nixbot-tests> start_new_session=True, python3.14-nixbot-tests> limit=STREAM_LIMIT, python3.14-nixbot-tests> # Proxy/TLS/NIX_* must reach the evaluator: flake input python3.14-nixbot-tests> # fetching fails in proxy/custom-CA deployments otherwise. python3.14-nixbot-tests> env={ python3.14-nixbot-tests> **passthrough_env(), python3.14-nixbot-tests> "CLICOLOR_FORCE": "1", python3.14-nixbot-tests> "PATH": os.environ.get("PATH", "/usr/bin:/bin"), python3.14-nixbot-tests> # Fallback to /tmp when no `bwrap` python3.14-nixbot-tests> "HOME": os.environ.get("HOME", "/tmp"), # noqa: S108 python3.14-nixbot-tests> }, python3.14-nixbot-tests> ) python3.14-nixbot-tests> assert proc.stdout is not None # noqa: S101 python3.14-nixbot-tests> assert proc.stderr is not None # noqa: S101 python3.14-nixbot-tests> python3.14-nixbot-tests> jobs: list[NixEvalJob] = [] python3.14-nixbot-tests> parse_errors: list[str] = [] python3.14-nixbot-tests> python3.14-nixbot-tests> try: python3.14-nixbot-tests> async with asyncio.timeout(settings.timeout): python3.14-nixbot-tests> _, stderr_bytes = await asyncio.gather( python3.14-nixbot-tests> _read_job_stream(proc.stdout, jobs, parse_errors, on_jobs), python3.14-nixbot-tests> _read_stderr_tail(proc.stderr, on_line=on_stderr_line), python3.14-nixbot-tests> ) python3.14-nixbot-tests> returncode = await proc.wait() python3.14-nixbot-tests> duration_ms = int((time.monotonic() - t0) * 1000) python3.14-nixbot-tests> except BaseException as e: python3.14-nixbot-tests> # Timeout, cancellation, or a reader bug: kill the evaluator python3.14-nixbot-tests> # instead of leaking it (possibly blocked on a full pipe). python3.14-nixbot-tests> _kill_process_tree(proc) python3.14-nixbot-tests> await proc.wait() python3.14-nixbot-tests> if isinstance(e, TimeoutError): python3.14-nixbot-tests> msg = f"evaluation timed out after {settings.timeout:.0f} seconds" python3.14-nixbot-tests> raise EvalError(msg) from None python3.14-nixbot-tests> raise python3.14-nixbot-tests> stderr_text = stderr_bytes.decode(errors="replace") python3.14-nixbot-tests> python3.14-nixbot-tests> if returncode != 0: python3.14-nixbot-tests> tail = "\n".join(stderr_text.splitlines()[-50:]) python3.14-nixbot-tests> # No stderr substring match: that would misclassify evals python3.14-nixbot-tests> # whose trace merely mentions "out of memory". python3.14-nixbot-tests> if returncode in OOM_RETURN_CODES or cgroup_oom_killed(eval_cgroup): python3.14-nixbot-tests> msg = ( python3.14-nixbot-tests> "evaluation ran out of memory (cgroup limit " python3.14-nixbot-tests> f"{settings.memory_limit_mib} MiB, " python3.14-nixbot-tests> f"{settings.worker_count} x {settings.max_memory_size_mib} " python3.14-nixbot-tests> "MiB workers); this is a permanent failure, reduce " python3.14-nixbot-tests> f"evaluation memory usage:\n{tail}" python3.14-nixbot-tests> ) python3.14-nixbot-tests> raise EvalOOMError(msg) python3.14-nixbot-tests> msg = f"nix-eval-jobs failed with exit code {returncode}:\n{tail}" python3.14-nixbot-tests> > raise EvalError(msg) python3.14-nixbot-tests> E nixbot.nix_eval.EvalError: nix-eval-jobs failed with exit code 1: python3.14-nixbot-tests> E warning: Git tree '/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/repo' is dirty python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 93 ms (attempt 1/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 72 ms (attempt 2/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 224 ms (attempt 3/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 64 ms (attempt 4/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org python3.14-nixbot-tests> E warning: Git tree '/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/repo' is dirty python3.14-nixbot-tests> E error: while starting worker, evaluation worker crashed with signal 7 (Bus error); enable coredumps for a backtrace python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/nix_eval.py:672: EvalError python3.14-nixbot-tests> ----------------------------- Captured stderr call ----------------------------- python3.14-nixbot-tests> warning: you don't have Internet access; disabling some network-dependent features python3.14-nixbot-tests> warning: creating lock file "/build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/repo/flake.lock": python3.14-nixbot-tests> • Added input 'dep': python3.14-nixbot-tests> 'git+file:///build/pytest-of-nixbld/pytest-0/popen-gw6/test_prefetch_integration0/dep?ref=refs/heads/main&rev=b032898e336ba5b2904698936cd35f8810a3b4f8' (2026-09-23) python3.14-nixbot-tests> ______________________________ test_full_pipeline ______________________________ python3.14-nixbot-tests> [gw23] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> flake = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/flake0') python3.14-nixbot-tests> tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/test_full_pipeline0') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_full_pipeline(flake: Path, tmp_path: Path) -> None: python3.14-nixbot-tests> > result, executor = await run_pipeline(flake, tmp_path) python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_pipeline.py:142: python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> nixbot/tests/test_pipeline.py:135: in run_pipeline python3.14-nixbot-tests> eval_result = await EvalRunner().run(flake, BranchConfig(), settings) python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> nixbot/nix_eval.py:585: in run python3.14-nixbot-tests> return await self._spawn( python3.14-nixbot-tests> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python3.14-nixbot-tests> python3.14-nixbot-tests> self = python3.14-nixbot-tests> worktree_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/flake0') python3.14-nixbot-tests> branch_config = BranchConfig(flake_dir='.', lock_file='flake.lock', attribute='checks', effects_on_pull_requests=False, effects_branches=[], build_branches=None, require_approval=True) python3.14-nixbot-tests> settings = EvalSettings(gc_roots_dir=PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/test_full_pipeline0/gcroots'), timeou...Path('/nix/var/nix/daemon-socket/socket'), extra_ro_paths=[], extra_args=[], eval_systems=[], legacy_attr_prefix=False) python3.14-nixbot-tests> preexec_fn = None, on_jobs = None, on_stderr_line = None, eval_cgroup = None python3.14-nixbot-tests> python3.14-nixbot-tests> async def _spawn( # noqa: PLR0913 python3.14-nixbot-tests> self, python3.14-nixbot-tests> worktree_path: Path, python3.14-nixbot-tests> branch_config: BranchConfig, python3.14-nixbot-tests> settings: EvalSettings, python3.14-nixbot-tests> preexec_fn: Callable[[], None] | None = None, python3.14-nixbot-tests> on_jobs: JobBatchCallback | None = None, python3.14-nixbot-tests> on_stderr_line: StderrLineCallback | None = None, python3.14-nixbot-tests> eval_cgroup: Path | None = None, python3.14-nixbot-tests> ) -> EvalResult: python3.14-nixbot-tests> cmd = build_full_command(worktree_path, branch_config, settings) python3.14-nixbot-tests> logger.info( python3.14-nixbot-tests> "starting evaluation", python3.14-nixbot-tests> extra={"worktree": str(worktree_path), "argv0": cmd[0]}, python3.14-nixbot-tests> ) python3.14-nixbot-tests> t0 = time.monotonic() python3.14-nixbot-tests> proc = await asyncio.create_subprocess_exec( python3.14-nixbot-tests> *cmd, python3.14-nixbot-tests> cwd=worktree_path, python3.14-nixbot-tests> stdout=asyncio.subprocess.PIPE, python3.14-nixbot-tests> stderr=asyncio.subprocess.PIPE, python3.14-nixbot-tests> preexec_fn=preexec_fn, python3.14-nixbot-tests> # Own process group so a timeout can kill the whole tree. python3.14-nixbot-tests> start_new_session=True, python3.14-nixbot-tests> limit=STREAM_LIMIT, python3.14-nixbot-tests> # Proxy/TLS/NIX_* must reach the evaluator: flake input python3.14-nixbot-tests> # fetching fails in proxy/custom-CA deployments otherwise. python3.14-nixbot-tests> env={ python3.14-nixbot-tests> **passthrough_env(), python3.14-nixbot-tests> "CLICOLOR_FORCE": "1", python3.14-nixbot-tests> "PATH": os.environ.get("PATH", "/usr/bin:/bin"), python3.14-nixbot-tests> # Fallback to /tmp when no `bwrap` python3.14-nixbot-tests> "HOME": os.environ.get("HOME", "/tmp"), # noqa: S108 python3.14-nixbot-tests> }, python3.14-nixbot-tests> ) python3.14-nixbot-tests> assert proc.stdout is not None # noqa: S101 python3.14-nixbot-tests> assert proc.stderr is not None # noqa: S101 python3.14-nixbot-tests> python3.14-nixbot-tests> jobs: list[NixEvalJob] = [] python3.14-nixbot-tests> parse_errors: list[str] = [] python3.14-nixbot-tests> python3.14-nixbot-tests> try: python3.14-nixbot-tests> async with asyncio.timeout(settings.timeout): python3.14-nixbot-tests> _, stderr_bytes = await asyncio.gather( python3.14-nixbot-tests> _read_job_stream(proc.stdout, jobs, parse_errors, on_jobs), python3.14-nixbot-tests> _read_stderr_tail(proc.stderr, on_line=on_stderr_line), python3.14-nixbot-tests> ) python3.14-nixbot-tests> returncode = await proc.wait() python3.14-nixbot-tests> duration_ms = int((time.monotonic() - t0) * 1000) python3.14-nixbot-tests> except BaseException as e: python3.14-nixbot-tests> # Timeout, cancellation, or a reader bug: kill the evaluator python3.14-nixbot-tests> # instead of leaking it (possibly blocked on a full pipe). python3.14-nixbot-tests> _kill_process_tree(proc) python3.14-nixbot-tests> await proc.wait() python3.14-nixbot-tests> if isinstance(e, TimeoutError): python3.14-nixbot-tests> msg = f"evaluation timed out after {settings.timeout:.0f} seconds" python3.14-nixbot-tests> raise EvalError(msg) from None python3.14-nixbot-tests> raise python3.14-nixbot-tests> stderr_text = stderr_bytes.decode(errors="replace") python3.14-nixbot-tests> python3.14-nixbot-tests> if returncode != 0: python3.14-nixbot-tests> tail = "\n".join(stderr_text.splitlines()[-50:]) python3.14-nixbot-tests> # No stderr substring match: that would misclassify evals python3.14-nixbot-tests> # whose trace merely mentions "out of memory". python3.14-nixbot-tests> if returncode in OOM_RETURN_CODES or cgroup_oom_killed(eval_cgroup): python3.14-nixbot-tests> msg = ( python3.14-nixbot-tests> "evaluation ran out of memory (cgroup limit " python3.14-nixbot-tests> f"{settings.memory_limit_mib} MiB, " python3.14-nixbot-tests> f"{settings.worker_count} x {settings.max_memory_size_mib} " python3.14-nixbot-tests> "MiB workers); this is a permanent failure, reduce " python3.14-nixbot-tests> f"evaluation memory usage:\n{tail}" python3.14-nixbot-tests> ) python3.14-nixbot-tests> raise EvalOOMError(msg) python3.14-nixbot-tests> msg = f"nix-eval-jobs failed with exit code {returncode}:\n{tail}" python3.14-nixbot-tests> > raise EvalError(msg) python3.14-nixbot-tests> E nixbot.nix_eval.EvalError: nix-eval-jobs failed with exit code 1: python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 14 ms (attempt 1/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 88 ms (attempt 2/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 360 ms (attempt 3/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org; retrying in 765 ms (attempt 4/5) python3.14-nixbot-tests> E warning: unable to download 'https://cache.nixos.org/nix-cache-info': Could not resolve hostname (6) Could not resolve host: cache.nixos.org python3.14-nixbot-tests> E error: while evaluating 'checks.aarch64-linux.brokendep', evaluation worker crashed with signal 7 (Bus error); enable coredumps for a backtrace python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/nix_eval.py:672: EvalError python3.14-nixbot-tests> ________________________ test_cached_skip_on_second_run ________________________ python3.14-nixbot-tests> [gw23] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> flake = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/flake0') python3.14-nixbot-tests> tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw23/test_cached_skip_on_second_run0') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_cached_skip_on_second_run(flake: Path, tmp_path: Path) -> None: python3.14-nixbot-tests> # First run built base/dependent (test ordering within module); python3.14-nixbot-tests> # a second eval marks them local and the scheduler skips them. python3.14-nixbot-tests> result, executor = await run_pipeline(flake, tmp_path) python3.14-nixbot-tests> system = current_system() python3.14-nixbot-tests> statuses = {r.attr: r.status for r in result.results} python3.14-nixbot-tests> > assert statuses[f"checks.{system}.base"] == AttributeStatus.skipped_local python3.14-nixbot-tests> E AssertionError: assert == python3.14-nixbot-tests> E python3.14-nixbot-tests> E - skipped_local python3.14-nixbot-tests> E + succeeded python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_pipeline.py:200: AssertionError python3.14-nixbot-tests> __________________ test_inflight_share_fans_out_final_status ___________________ python3.14-nixbot-tests> [gw1] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> make_env = .make at 0xffffed6d6140> python3.14-nixbot-tests> upstream = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw1/test_inflight_share_fans_out_f0/upstream') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_inflight_share_fans_out_final_status( python3.14-nixbot-tests> make_env: EnvFactory, upstream: Path python3.14-nixbot-tests> ) -> None: python3.14-nixbot-tests> sha = add_commit(upstream, "share") python3.14-nixbot-tests> git(upstream, "branch", "copy", "main") python3.14-nixbot-tests> executor = FakeExecutor(gate=asyncio.Event()) python3.14-nixbot-tests> orchestrator, reporter, project = await make_env( python3.14-nixbot-tests> FakeEvalRunner([mk_job("a")]), python3.14-nixbot-tests> executor, python3.14-nixbot-tests> "share", python3.14-nixbot-tests> ) python3.14-nixbot-tests> task = asyncio.create_task( python3.14-nixbot-tests> orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="main", commit_sha=sha) python3.14-nixbot-tests> ) python3.14-nixbot-tests> ) python3.14-nixbot-tests> await asyncio.wait_for(executor.started.wait(), timeout=10) python3.14-nixbot-tests> build2 = await orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="copy", commit_sha=sha) python3.14-nixbot-tests> ) python3.14-nixbot-tests> assert executor.gate is not None python3.14-nixbot-tests> executor.gate.set() python3.14-nixbot-tests> build1 = await task python3.14-nixbot-tests> assert build1 is not None python3.14-nixbot-tests> assert build2 is not None python3.14-nixbot-tests> assert build1.id_ == build2.id_ python3.14-nixbot-tests> finished = [e for e in reporter.events if e[0] == "finished"] python3.14-nixbot-tests> > assert len(finished) == 2 # one final status per context python3.14-nixbot-tests> ^^^^^^^^^^^^^^^^^^^^^^^^^ python3.14-nixbot-tests> E AssertionError: assert 1 == 2 python3.14-nixbot-tests> E + where 1 = len([('finished', 27, 'succeeded', 1)]) python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_orchestrator.py:1047: AssertionError python3.14-nixbot-tests> _________________ test_linked_context_reported_on_eval_failure _________________ python3.14-nixbot-tests> [gw1] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> make_env = .make at 0xffffed6d6350> python3.14-nixbot-tests> upstream = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw1/test_linked_context_reported_o0/upstream') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_linked_context_reported_on_eval_failure( python3.14-nixbot-tests> make_env: EnvFactory, upstream: Path python3.14-nixbot-tests> ) -> None: python3.14-nixbot-tests> sha = add_commit(upstream, "lef") python3.14-nixbot-tests> git(upstream, "branch", "lef-copy", "main") python3.14-nixbot-tests> python3.14-nixbot-tests> eval_runner = FakeEvalRunner([], block=asyncio.Event(), error=EvalError("boom")) python3.14-nixbot-tests> orchestrator, reporter, project = await make_env(eval_runner, FakeExecutor(), "lef") python3.14-nixbot-tests> task = asyncio.create_task( python3.14-nixbot-tests> orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="main", commit_sha=sha) python3.14-nixbot-tests> ) python3.14-nixbot-tests> ) python3.14-nixbot-tests> await asyncio.wait_for(eval_runner.started.wait(), timeout=10) python3.14-nixbot-tests> build2 = await orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="lef-copy", commit_sha=sha) python3.14-nixbot-tests> ) python3.14-nixbot-tests> assert eval_runner.block is not None python3.14-nixbot-tests> eval_runner.block.set() python3.14-nixbot-tests> build1 = await task python3.14-nixbot-tests> assert build1 is not None python3.14-nixbot-tests> assert build2 is not None python3.14-nixbot-tests> assert build1.id_ == build2.id_ python3.14-nixbot-tests> finished = [e for e in reporter.events if e[0] == "finished"] python3.14-nixbot-tests> > assert len(finished) == 2 python3.14-nixbot-tests> E AssertionError: assert 1 == 2 python3.14-nixbot-tests> E + where 1 = len([('finished', 43, 'failed', 0)]) python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_orchestrator.py:1505: AssertionError python3.14-nixbot-tests> ------------------------------ Captured log call ------------------------------- python3.14-nixbot-tests> WARNING nixbot.build_run:build_run.py:162 evaluation failed python3.14-nixbot-tests> ____________ test_cancel_during_eval_resolves_linked_eval_contexts _____________ python3.14-nixbot-tests> [gw1] linux -- Python 3.14.6 /nix/store/41m77i1296n33p6liin8ynr6wh3h6b7m-python3-3.14.6/bin/python3.14 python3.14-nixbot-tests> python3.14-nixbot-tests> make_env = .make at 0xffffed612980> python3.14-nixbot-tests> upstream = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw1/test_cancel_during_eval_resolv0/upstream') python3.14-nixbot-tests> python3.14-nixbot-tests> async def test_cancel_during_eval_resolves_linked_eval_contexts( python3.14-nixbot-tests> make_env: EnvFactory, upstream: Path python3.14-nixbot-tests> ) -> None: python3.14-nixbot-tests> """Cancelling a build mid-eval must resolve the nix-eval context of python3.14-nixbot-tests> every linked event, not only the primary one.""" python3.14-nixbot-tests> python3.14-nixbot-tests> add_commit(upstream, "linked-cancel") python3.14-nixbot-tests> sha = git(upstream, "rev-parse", "HEAD") python3.14-nixbot-tests> eval_runner = FakeEvalRunner([mk_job("a")], block=asyncio.Event()) python3.14-nixbot-tests> orchestrator, reporter, project = await make_env( python3.14-nixbot-tests> eval_runner, python3.14-nixbot-tests> FakeExecutor(), python3.14-nixbot-tests> name="linked-cancel", python3.14-nixbot-tests> ) python3.14-nixbot-tests> task1 = asyncio.create_task( python3.14-nixbot-tests> orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="main", commit_sha=sha) python3.14-nixbot-tests> ) python3.14-nixbot-tests> ) python3.14-nixbot-tests> await eval_runner.started.wait() python3.14-nixbot-tests> build2 = await orchestrator.handle_change_event( python3.14-nixbot-tests> ChangeEvent(repo=project, branch="main", commit_sha=sha, pr_number=4) python3.14-nixbot-tests> ) python3.14-nixbot-tests> assert build2 is not None python3.14-nixbot-tests> orchestrator.cancel_events[build2.id_].set() python3.14-nixbot-tests> await task1 python3.14-nixbot-tests> cancelled_evals = [e for e in reporter.events if e[0] == "eval-cancelled"] python3.14-nixbot-tests> assert len(cancelled_evals) == 2 python3.14-nixbot-tests> finished = [e for e in reporter.events if e[0] == "finished"] python3.14-nixbot-tests> > assert len(finished) == 2 python3.14-nixbot-tests> E AssertionError: assert 1 == 2 python3.14-nixbot-tests> E + where 1 = len([('finished', 69, 'cancelled', 0)]) python3.14-nixbot-tests> python3.14-nixbot-tests> nixbot/tests/test_orchestrator.py:2403: AssertionError python3.14-nixbot-tests> =========================== short test summary info ============================ python3.14-nixbot-tests> FAILED nixbot/tests/test_flake_prefetch.py::test_prefetch_integration - nixbo... python3.14-nixbot-tests> FAILED nixbot/tests/test_pipeline.py::test_full_pipeline - nixbot.nix_eval.Ev... python3.14-nixbot-tests> FAILED nixbot/tests/test_pipeline.py::test_cached_skip_on_second_run - Assert... python3.14-nixbot-tests> FAILED nixbot/tests/test_orchestrator.py::test_inflight_share_fans_out_final_status python3.14-nixbot-tests> FAILED nixbot/tests/test_orchestrator.py::test_linked_context_reported_on_eval_failure python3.14-nixbot-tests> FAILED nixbot/tests/test_orchestrator.py::test_cancel_during_eval_resolves_linked_eval_contexts python3.14-nixbot-tests> ================== 6 failed, 827 passed, 12 skipped in 31.83s ================== error: Cannot build '/nix/store/yknkn65qpv15c5iahz8c29kdazp1fzm2-python3.14-nixbot-tests.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/bsqgiravy19l2n0x49wvh5nm7qcxpjby-python3.14-nixbot-tests /nix/store/ix3c73i72lgwsbdjpn939dpi7gpx61v4-python3.14-nixbot-tests-dist Last 25 log lines: > ) > ) > await eval_runner.started.wait() > build2 = await orchestrator.handle_change_event( > ChangeEvent(repo=project, branch="main", commit_sha=sha, pr_number=4) > ) > assert build2 is not None > orchestrator.cancel_events[build2.id_].set() > await task1 > cancelled_evals = [e for e in reporter.events if e[0] == "eval-cancelled"] > assert len(cancelled_evals) == 2 > finished = [e for e in reporter.events if e[0] == "finished"] > > assert len(finished) == 2 > E AssertionError: assert 1 == 2 > E + where 1 = len([('finished', 69, 'cancelled', 0)]) > > nixbot/tests/test_orchestrator.py:2403: AssertionError > =========================== short test summary info ============================ > FAILED nixbot/tests/test_flake_prefetch.py::test_prefetch_integration - nixbo... > FAILED nixbot/tests/test_pipeline.py::test_full_pipeline - nixbot.nix_eval.Ev... > FAILED nixbot/tests/test_pipeline.py::test_cached_skip_on_second_run - Assert... > FAILED nixbot/tests/test_orchestrator.py::test_inflight_share_fans_out_final_status > FAILED nixbot/tests/test_orchestrator.py::test_linked_context_reported_on_eval_failure > FAILED nixbot/tests/test_orchestrator.py::test_cancel_during_eval_resolves_linked_eval_contexts > ================== 6 failed, 827 passed, 12 skipped in 31.83s ================== For full logs, run: nix log /nix/store/yknkn65qpv15c5iahz8c29kdazp1fzm2-python3.14-nixbot-tests.drv