python3.14-nixbot-tests
checks.aarch64-darwin.nixbot-tests
· build #448
· raw
1tribuchet: building on mac022Sourcing python-remove-tests-dir-hook3Sourcing python-catch-conflicts-hook.sh4Sourcing python-remove-bin-bytecode-hook.sh5Sourcing pypa-build-hook6Using pypaBuildPhase7Sourcing python-runtime-deps-check-hook8Using pythonRuntimeDepsCheckHook9Sourcing pypa-install-hook10Using pypaInstallPhase11Sourcing python-imports-check-hook.sh12Using pythonImportsCheckPhase13Sourcing python-namespaces-hook14Sourcing python-catch-conflicts-hook.sh15Sourcing pytest-check-hook16Using pytestCheckPhase
unpackPhase
17unpacking source archive /nix/store/yjsbkbl4ml5mrbr7q74n108mh6hngwxi-nixbot18source root is nixbot19setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml"configurePhase
20no configure script, doing nothingbuildPhase
21Executing pypaBuildPhase22Creating a wheel...23pypa build flags: --no-isolation --outdir dist/ --wheel24* Getting build dependencies for wheel...25* Building wheel...26Successfully built nixbot-0.0.1-py3-none-any.whl27Finished creating a wheel...28Finished executing pypaBuildPhasepythonRuntimeDepsCheckHook
29Executing pythonRuntimeDepsCheck30Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl31Finished executing pythonRuntimeDepsCheckinstallPhase
32Executing pypaInstallPhase33Successfully installed nixbot-0.0.1-py3-none-any.whl34Finished executing pypaInstallPhasepythonOutputDistPhase
35Executing pythonOutputDistPhase36Finished executing pythonOutputDistPhasefixupPhase
37checking for references to /private/var/tb/3/scratch/d22a12221cec2c5e/build/ in /nix/store/k3bap8irlvf2izwy452bhiivhzg04f1w-python3.14-nixbot-tests...38patching script interpreter paths in /nix/store/k3bap8irlvf2izwy452bhiivhzg04f1w-python3.14-nixbot-tests39stripping (with command strip and flags -S) in /nix/store/k3bap8irlvf2izwy452bhiivhzg04f1w-python3.14-nixbot-tests/lib /nix/store/k3bap8irlvf2izwy452bhiivhzg04f1w-python3.14-nixbot-tests/bin40checking for references to /private/var/tb/3/scratch/d22a12221cec2c5e/build/ in /nix/store/zn5lqx35qdzd4p874lcxp7yffav3iyc0-python3.14-nixbot-tests-dist...41patching script interpreter paths in /nix/store/zn5lqx35qdzd4p874lcxp7yffav3iyc0-python3.14-nixbot-tests-dist42Rewriting #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14 to #!/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.643wrapping `/nix/store/k3bap8irlvf2izwy452bhiivhzg04f1w-python3.14-nixbot-tests/bin/nixbot'...44Executing pythonRemoveTestsDir45Finished executing pythonRemoveTestsDirinstallCheckPhase
46no Makefile or custom installCheckPhase, doing nothingpythonImportsCheckPhase
47Executing pythonImportsCheckPhasepytestCheckPhase
48Executing pytestCheckPhase49pytest flags: -m pytest --numprocesses=2450/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.51 warner(PytestBenchmarkWarning(text))52/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.53 warner(PytestBenchmarkWarning(text))54/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.55 warner(PytestBenchmarkWarning(text))56/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.57 warner(PytestBenchmarkWarning(text))58/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.59 warner(PytestBenchmarkWarning(text))60/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.61 warner(PytestBenchmarkWarning(text))62/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.63 warner(PytestBenchmarkWarning(text))64/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.65 warner(PytestBenchmarkWarning(text))66/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.67 warner(PytestBenchmarkWarning(text))68/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.69 warner(PytestBenchmarkWarning(text))70/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.71 warner(PytestBenchmarkWarning(text))72/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.73 warner(PytestBenchmarkWarning(text))74/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.75 warner(PytestBenchmarkWarning(text))76/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.77 warner(PytestBenchmarkWarning(text))78/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.79 warner(PytestBenchmarkWarning(text))80/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.81 warner(PytestBenchmarkWarning(text))82/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.83 warner(PytestBenchmarkWarning(text))84/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.85 warner(PytestBenchmarkWarning(text))86/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.87 warner(PytestBenchmarkWarning(text))88/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.89 warner(PytestBenchmarkWarning(text))90/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.91 warner(PytestBenchmarkWarning(text))92/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.93 warner(PytestBenchmarkWarning(text))94/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.95 warner(PytestBenchmarkWarning(text))96/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.97 warner(PytestBenchmarkWarning(text))98/nix/store/kfbmrm2rads9m3za8am89kll1xmzlbra-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.99 warner(PytestBenchmarkWarning(text))100============================= test session starts ==============================101platform darwin -- Python 3.14.6, pytest-9.1.1, pluggy-1.6.0102benchmark: 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)103rootdir: /private/var/tb/3/scratch/d22a12221cec2c5e/build/nixbot104configfile: pyproject.toml105plugins: asyncio-1.4.0, timeout-2.4.0, xdist-3.8.0, benchmark-5.2.3, anyio-4.14.2106asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function107timeout: 60.0s108timeout method: signal109timeout func_only: False110created: 24/24 workers11124 workers [869 items]112113.......ss.........ssss.ssss.....sssss......ssss.....s................... [ 8%]114...s.................................................................... [ 16%]115........................................................................ [ 24%]116........................................................................ [ 33%]117...................................................................s.... [ 41%]118......Loop <_UnixSelectorEventLoop running=False closed=True debug=False> that handles pid 80049 is closed119.........ssss..................................................... [ 49%]120..............................sEEEEEE.EE..EEEEEEEEEEEEEE...EEEEEEEEEEEEE [ 57%]121EEEEEE.EEEEEEEEEEEEEEEEEEEEEEEE.E.EEEEEEEEEEE.EE.EEEEEE...E..EEEEEEEEE.E [ 66%]122E.EEEEEEEEEEEEEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE. [ 74%]123EEEEEEEEEEEEEEEEEEEs.E.EE.EEEEEEEEEE.EEEEEEEEEE.EEEEEEEE.E.E.E.sEE.EEEEE [ 82%]124..EEE.E.......EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 91%]125EEEEEEEEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 99%]126EEEEE [100%]127==================================== ERRORS ====================================128_________________ ERROR at setup of test_repo_list_and_toggle __________________129[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14130131fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>132request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>133134 @pytest.hookimpl(wrapper=True)135 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:136 if (137 fixturedef.argname == "event_loop_policy"138 and fixturedef.func.__module__ != __name__139 ):140 warnings.warn(141 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),142 )143 asyncio_mode = _get_asyncio_mode(request.config)144 if not _is_asyncio_fixture_function(fixturedef.func):145 if asyncio_mode == Mode.STRICT:146 # Ignore async fixtures without explicit asyncio mark in strict mode147 # This applies to pytest_trio fixtures, for example148 return (yield)149 if not _is_coroutine_or_asyncgen(fixturedef.func):150> return (yield)151 ^^^^^152153/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 154_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 155nixbot/tests/conftest.py:33: in postgres_dsn156 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:157 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^158/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__159 return next(self.gen)160 ^^^^^^^^^^^^^^161_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 162163tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')164dbname = 'cli'165166 @contextlib.contextmanager167 def ephemeral_postgres(168 tmp_path_factory: pytest.TempPathFactory, dbname: str169 ) -> Iterator[str]:170 """Throwaway Postgres on a unix socket with migrations applied."""171 datadir = tmp_path_factory.mktemp("pgdata")172 sockdir = tmp_path_factory.mktemp("pgsock")173 subprocess.run( # noqa: S603174 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],175 check=True,176 capture_output=True,177 )178 proc = subprocess.Popen( # noqa: S603179 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],180 stdout=subprocess.DEVNULL,181 stderr=subprocess.DEVNULL,182 )183 try:184 deadline = time.monotonic() + 30185 while (186 subprocess.run( # noqa: S603187 ["pg_isready", "-h", str(sockdir), "-U", "test"],188 check=False,189 capture_output=True,190 ).returncode191 != 0192 ):193 # The socket appears before recovery finishes; createdb would194 # fail with "the database system is starting up".195 if time.monotonic() > deadline:196 msg = "postgres did not start"197> raise RuntimeError(msg)198E RuntimeError: postgres did not start199200nixbot/tests/support.py:319: RuntimeError201__________________ ERROR at setup of test_build_list_and_view __________________202[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14203204request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>205tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')206207 @pytest.fixture(scope="module")208 def postgres_dsn(209 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory210 ) -> Iterator[str]:211 if shutil.which("initdb") is None:212 pytest.skip("postgresql not available")213 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")214> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:215 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^216217nixbot/tests/conftest.py:33: 218_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 219/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__220 return next(self.gen)221 ^^^^^^^^^^^^^^222_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 223224tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')225dbname = 'cli'226227 @contextlib.contextmanager228 def ephemeral_postgres(229 tmp_path_factory: pytest.TempPathFactory, dbname: str230 ) -> Iterator[str]:231 """Throwaway Postgres on a unix socket with migrations applied."""232 datadir = tmp_path_factory.mktemp("pgdata")233 sockdir = tmp_path_factory.mktemp("pgsock")234 subprocess.run( # noqa: S603235 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],236 check=True,237 capture_output=True,238 )239 proc = subprocess.Popen( # noqa: S603240 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],241 stdout=subprocess.DEVNULL,242 stderr=subprocess.DEVNULL,243 )244 try:245 deadline = time.monotonic() + 30246 while (247 subprocess.run( # noqa: S603248 ["pg_isready", "-h", str(sockdir), "-U", "test"],249 check=False,250 capture_output=True,251 ).returncode252 != 0253 ):254 # The socket appears before recovery finishes; createdb would255 # fail with "the database system is starting up".256 if time.monotonic() > deadline:257 msg = "postgres did not start"258> raise RuntimeError(msg)259E RuntimeError: postgres did not start260261nixbot/tests/support.py:319: RuntimeError262_________________ ERROR at setup of test_build_restart_cancel __________________263[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14264265request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>266tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')267268 @pytest.fixture(scope="module")269 def postgres_dsn(270 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory271 ) -> Iterator[str]:272 if shutil.which("initdb") is None:273 pytest.skip("postgresql not available")274 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")275> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:276 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^277278nixbot/tests/conftest.py:33: 279_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 280/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__281 return next(self.gen)282 ^^^^^^^^^^^^^^283_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 284285tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')286dbname = 'cli'287288 @contextlib.contextmanager289 def ephemeral_postgres(290 tmp_path_factory: pytest.TempPathFactory, dbname: str291 ) -> Iterator[str]:292 """Throwaway Postgres on a unix socket with migrations applied."""293 datadir = tmp_path_factory.mktemp("pgdata")294 sockdir = tmp_path_factory.mktemp("pgsock")295 subprocess.run( # noqa: S603296 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],297 check=True,298 capture_output=True,299 )300 proc = subprocess.Popen( # noqa: S603301 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],302 stdout=subprocess.DEVNULL,303 stderr=subprocess.DEVNULL,304 )305 try:306 deadline = time.monotonic() + 30307 while (308 subprocess.run( # noqa: S603309 ["pg_isready", "-h", str(sockdir), "-U", "test"],310 check=False,311 capture_output=True,312 ).returncode313 != 0314 ):315 # The socket appears before recovery finishes; createdb would316 # fail with "the database system is starting up".317 if time.monotonic() > deadline:318 msg = "postgres did not start"319> raise RuntimeError(msg)320E RuntimeError: postgres did not start321322nixbot/tests/support.py:319: RuntimeError323_______________ ERROR at setup of test_log_summary_attr_and_drv ________________324[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14325326request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>327tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')328329 @pytest.fixture(scope="module")330 def postgres_dsn(331 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory332 ) -> Iterator[str]:333 if shutil.which("initdb") is None:334 pytest.skip("postgresql not available")335 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")336> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:337 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^338339nixbot/tests/conftest.py:33: 340_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 341/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__342 return next(self.gen)343 ^^^^^^^^^^^^^^344_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 345346tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')347dbname = 'cli'348349 @contextlib.contextmanager350 def ephemeral_postgres(351 tmp_path_factory: pytest.TempPathFactory, dbname: str352 ) -> Iterator[str]:353 """Throwaway Postgres on a unix socket with migrations applied."""354 datadir = tmp_path_factory.mktemp("pgdata")355 sockdir = tmp_path_factory.mktemp("pgsock")356 subprocess.run( # noqa: S603357 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],358 check=True,359 capture_output=True,360 )361 proc = subprocess.Popen( # noqa: S603362 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],363 stdout=subprocess.DEVNULL,364 stderr=subprocess.DEVNULL,365 )366 try:367 deadline = time.monotonic() + 30368 while (369 subprocess.run( # noqa: S603370 ["pg_isready", "-h", str(sockdir), "-U", "test"],371 check=False,372 capture_output=True,373 ).returncode374 != 0375 ):376 # The socket appears before recovery finishes; createdb would377 # fail with "the database system is starting up".378 if time.monotonic() > deadline:379 msg = "postgres did not start"380> raise RuntimeError(msg)381E RuntimeError: postgres did not start382383nixbot/tests/support.py:319: RuntimeError384_______________ ERROR at setup of test_repo_and_build_inference ________________385[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14386387request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>388tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')389390 @pytest.fixture(scope="module")391 def postgres_dsn(392 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory393 ) -> Iterator[str]:394 if shutil.which("initdb") is None:395 pytest.skip("postgresql not available")396 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")397> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:398 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^399400nixbot/tests/conftest.py:33: 401_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 402/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__403 return next(self.gen)404 ^^^^^^^^^^^^^^405_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 406407tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')408dbname = 'cli'409410 @contextlib.contextmanager411 def ephemeral_postgres(412 tmp_path_factory: pytest.TempPathFactory, dbname: str413 ) -> Iterator[str]:414 """Throwaway Postgres on a unix socket with migrations applied."""415 datadir = tmp_path_factory.mktemp("pgdata")416 sockdir = tmp_path_factory.mktemp("pgsock")417 subprocess.run( # noqa: S603418 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],419 check=True,420 capture_output=True,421 )422 proc = subprocess.Popen( # noqa: S603423 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],424 stdout=subprocess.DEVNULL,425 stderr=subprocess.DEVNULL,426 )427 try:428 deadline = time.monotonic() + 30429 while (430 subprocess.run( # noqa: S603431 ["pg_isready", "-h", str(sockdir), "-U", "test"],432 check=False,433 capture_output=True,434 ).returncode435 != 0436 ):437 # The socket appears before recovery finishes; createdb would438 # fail with "the database system is starting up".439 if time.monotonic() > deadline:440 msg = "postgres did not start"441> raise RuntimeError(msg)442E RuntimeError: postgres did not start443444nixbot/tests/support.py:319: RuntimeError445______________________ ERROR at setup of test_auth_status ______________________446[gw14] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14447448request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>449tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')450451 @pytest.fixture(scope="module")452 def postgres_dsn(453 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory454 ) -> Iterator[str]:455 if shutil.which("initdb") is None:456 pytest.skip("postgresql not available")457 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")458> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:459 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^460461nixbot/tests/conftest.py:33: 462_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 463/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__464 return next(self.gen)465 ^^^^^^^^^^^^^^466_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 467468tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw14'), _retention_count=3, _retention_policy='all')469dbname = 'cli'470471 @contextlib.contextmanager472 def ephemeral_postgres(473 tmp_path_factory: pytest.TempPathFactory, dbname: str474 ) -> Iterator[str]:475 """Throwaway Postgres on a unix socket with migrations applied."""476 datadir = tmp_path_factory.mktemp("pgdata")477 sockdir = tmp_path_factory.mktemp("pgsock")478 subprocess.run( # noqa: S603479 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],480 check=True,481 capture_output=True,482 )483 proc = subprocess.Popen( # noqa: S603484 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],485 stdout=subprocess.DEVNULL,486 stderr=subprocess.DEVNULL,487 )488 try:489 deadline = time.monotonic() + 30490 while (491 subprocess.run( # noqa: S603492 ["pg_isready", "-h", str(sockdir), "-U", "test"],493 check=False,494 capture_output=True,495 ).returncode496 != 0497 ):498 # The socket appears before recovery finishes; createdb would499 # fail with "the database system is starting up".500 if time.monotonic() > deadline:501 msg = "postgres did not start"502> raise RuntimeError(msg)503E RuntimeError: postgres did not start504505nixbot/tests/support.py:319: RuntimeError506____________________ ERROR at setup of test_full_lifecycle _____________________507[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14508509self = <Coroutine test_full_lifecycle>510511 def setup(self) -> None:512 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"513 if runner_fixture_id not in self.fixturenames:514 self.fixturenames.append(runner_fixture_id)515 # When loop factories are configured, resolve the loop factory516 # fixture early so that a factory variant change cascades cache517 # invalidation before any async fixture checks its cache.518 hook_caller = self.config.hook.pytest_asyncio_loop_factories519 if hook_caller.get_hookimpls():520 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)521> return super().setup()522 ^^^^^^^^^^^^^^^523524/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 525_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 526/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup527 return (yield)528 ^^^^^529nixbot/tests/conftest.py:33: in postgres_dsn530 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:531 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^532/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__533 return next(self.gen)534 ^^^^^^^^^^^^^^535_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 536537tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')538dbname = 'orchestrator'539540 @contextlib.contextmanager541 def ephemeral_postgres(542 tmp_path_factory: pytest.TempPathFactory, dbname: str543 ) -> Iterator[str]:544 """Throwaway Postgres on a unix socket with migrations applied."""545 datadir = tmp_path_factory.mktemp("pgdata")546 sockdir = tmp_path_factory.mktemp("pgsock")547 subprocess.run( # noqa: S603548 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],549 check=True,550 capture_output=True,551 )552 proc = subprocess.Popen( # noqa: S603553 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],554 stdout=subprocess.DEVNULL,555 stderr=subprocess.DEVNULL,556 )557 try:558 deadline = time.monotonic() + 30559 while (560 subprocess.run( # noqa: S603561 ["pg_isready", "-h", str(sockdir), "-U", "test"],562 check=False,563 capture_output=True,564 ).returncode565 != 0566 ):567 # The socket appears before recovery finishes; createdb would568 # fail with "the database system is starting up".569 if time.monotonic() > deadline:570 msg = "postgres did not start"571> raise RuntimeError(msg)572E RuntimeError: postgres did not start573574nixbot/tests/support.py:319: RuntimeError575__________________ ERROR at setup of test_failure_aggregation __________________576[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14577578self = <Coroutine test_failure_aggregation>579580 def setup(self) -> None:581 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"582 if runner_fixture_id not in self.fixturenames:583 self.fixturenames.append(runner_fixture_id)584 # When loop factories are configured, resolve the loop factory585 # fixture early so that a factory variant change cascades cache586 # invalidation before any async fixture checks its cache.587 hook_caller = self.config.hook.pytest_asyncio_loop_factories588 if hook_caller.get_hookimpls():589 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)590> return super().setup()591 ^^^^^^^^^^^^^^^592593/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 594_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595nixbot/tests/conftest.py:33: in postgres_dsn596 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:597 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^598/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__599 return next(self.gen)600 ^^^^^^^^^^^^^^601_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 602603tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')604dbname = 'orchestrator'605606 @contextlib.contextmanager607 def ephemeral_postgres(608 tmp_path_factory: pytest.TempPathFactory, dbname: str609 ) -> Iterator[str]:610 """Throwaway Postgres on a unix socket with migrations applied."""611 datadir = tmp_path_factory.mktemp("pgdata")612 sockdir = tmp_path_factory.mktemp("pgsock")613 subprocess.run( # noqa: S603614 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],615 check=True,616 capture_output=True,617 )618 proc = subprocess.Popen( # noqa: S603619 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],620 stdout=subprocess.DEVNULL,621 stderr=subprocess.DEVNULL,622 )623 try:624 deadline = time.monotonic() + 30625 while (626 subprocess.run( # noqa: S603627 ["pg_isready", "-h", str(sockdir), "-U", "test"],628 check=False,629 capture_output=True,630 ).returncode631 != 0632 ):633 # The socket appears before recovery finishes; createdb would634 # fail with "the database system is starting up".635 if time.monotonic() > deadline:636 msg = "postgres did not start"637> raise RuntimeError(msg)638E RuntimeError: postgres did not start639640nixbot/tests/support.py:319: RuntimeError641____________________ ERROR at setup of test_tree_hash_reuse ____________________642[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14643644self = <Coroutine test_tree_hash_reuse>645646 def setup(self) -> None:647 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"648 if runner_fixture_id not in self.fixturenames:649 self.fixturenames.append(runner_fixture_id)650 # When loop factories are configured, resolve the loop factory651 # fixture early so that a factory variant change cascades cache652 # invalidation before any async fixture checks its cache.653 hook_caller = self.config.hook.pytest_asyncio_loop_factories654 if hook_caller.get_hookimpls():655 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)656> return super().setup()657 ^^^^^^^^^^^^^^^658659/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 660_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 661nixbot/tests/conftest.py:33: in postgres_dsn662 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:663 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^664/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__665 return next(self.gen)666 ^^^^^^^^^^^^^^667_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 668669tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')670dbname = 'orchestrator'671672 @contextlib.contextmanager673 def ephemeral_postgres(674 tmp_path_factory: pytest.TempPathFactory, dbname: str675 ) -> Iterator[str]:676 """Throwaway Postgres on a unix socket with migrations applied."""677 datadir = tmp_path_factory.mktemp("pgdata")678 sockdir = tmp_path_factory.mktemp("pgsock")679 subprocess.run( # noqa: S603680 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],681 check=True,682 capture_output=True,683 )684 proc = subprocess.Popen( # noqa: S603685 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],686 stdout=subprocess.DEVNULL,687 stderr=subprocess.DEVNULL,688 )689 try:690 deadline = time.monotonic() + 30691 while (692 subprocess.run( # noqa: S603693 ["pg_isready", "-h", str(sockdir), "-U", "test"],694 check=False,695 capture_output=True,696 ).returncode697 != 0698 ):699 # The socket appears before recovery finishes; createdb would700 # fail with "the database system is starting up".701 if time.monotonic() > deadline:702 msg = "postgres did not start"703> raise RuntimeError(msg)704E RuntimeError: postgres did not start705706nixbot/tests/support.py:319: RuntimeError707_______ ERROR at setup of test_control_buttons_hidden_without_permission _______708[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14709710fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>711request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>712713 @pytest.hookimpl(wrapper=True)714 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:715 if (716 fixturedef.argname == "event_loop_policy"717 and fixturedef.func.__module__ != __name__718 ):719 warnings.warn(720 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),721 )722 asyncio_mode = _get_asyncio_mode(request.config)723 if not _is_asyncio_fixture_function(fixturedef.func):724 if asyncio_mode == Mode.STRICT:725 # Ignore async fixtures without explicit asyncio mark in strict mode726 # This applies to pytest_trio fixtures, for example727 return (yield)728 if not _is_coroutine_or_asyncgen(fixturedef.func):729> return (yield)730 ^^^^^731732/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 733_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 734nixbot/tests/conftest.py:33: in postgres_dsn735 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:736 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^737/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__738 return next(self.gen)739 ^^^^^^^^^^^^^^740_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 741742tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')743dbname = 'control'744745 @contextlib.contextmanager746 def ephemeral_postgres(747 tmp_path_factory: pytest.TempPathFactory, dbname: str748 ) -> Iterator[str]:749 """Throwaway Postgres on a unix socket with migrations applied."""750 datadir = tmp_path_factory.mktemp("pgdata")751 sockdir = tmp_path_factory.mktemp("pgsock")752 subprocess.run( # noqa: S603753 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],754 check=True,755 capture_output=True,756 )757 proc = subprocess.Popen( # noqa: S603758 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],759 stdout=subprocess.DEVNULL,760 stderr=subprocess.DEVNULL,761 )762 try:763 deadline = time.monotonic() + 30764 while (765 subprocess.run( # noqa: S603766 ["pg_isready", "-h", str(sockdir), "-U", "test"],767 check=False,768 capture_output=True,769 ).returncode770 != 0771 ):772 # The socket appears before recovery finishes; createdb would773 # fail with "the database system is starting up".774 if time.monotonic() > deadline:775 msg = "postgres did not start"776> raise RuntimeError(msg)777E RuntimeError: postgres did not start778779nixbot/tests/support.py:319: RuntimeError780___________ ERROR at setup of test_resume_skips_terminal_attributes ____________781[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14782783self = <Coroutine test_resume_skips_terminal_attributes>784785 def setup(self) -> None:786 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"787 if runner_fixture_id not in self.fixturenames:788 self.fixturenames.append(runner_fixture_id)789 # When loop factories are configured, resolve the loop factory790 # fixture early so that a factory variant change cascades cache791 # invalidation before any async fixture checks its cache.792 hook_caller = self.config.hook.pytest_asyncio_loop_factories793 if hook_caller.get_hookimpls():794 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)795> return super().setup()796 ^^^^^^^^^^^^^^^797798/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 799_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 800/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup801 return (yield)802 ^^^^^803nixbot/tests/conftest.py:33: in postgres_dsn804 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:805 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^806/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__807 return next(self.gen)808 ^^^^^^^^^^^^^^809_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 810811tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')812dbname = 'recovery'813814 @contextlib.contextmanager815 def ephemeral_postgres(816 tmp_path_factory: pytest.TempPathFactory, dbname: str817 ) -> Iterator[str]:818 """Throwaway Postgres on a unix socket with migrations applied."""819 datadir = tmp_path_factory.mktemp("pgdata")820 sockdir = tmp_path_factory.mktemp("pgsock")821 subprocess.run( # noqa: S603822 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],823 check=True,824 capture_output=True,825 )826 proc = subprocess.Popen( # noqa: S603827 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],828 stdout=subprocess.DEVNULL,829 stderr=subprocess.DEVNULL,830 )831 try:832 deadline = time.monotonic() + 30833 while (834 subprocess.run( # noqa: S603835 ["pg_isready", "-h", str(sockdir), "-U", "test"],836 check=False,837 capture_output=True,838 ).returncode839 != 0840 ):841 # The socket appears before recovery finishes; createdb would842 # fail with "the database system is starting up".843 if time.monotonic() > deadline:844 msg = "postgres did not start"845> raise RuntimeError(msg)846E RuntimeError: postgres did not start847848nixbot/tests/support.py:319: RuntimeError849_____________ ERROR at setup of test_admin_can_restart_and_cancel ______________850[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14851852request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>853tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')854855 @pytest.fixture(scope="module")856 def postgres_dsn(857 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory858 ) -> Iterator[str]:859 if shutil.which("initdb") is None:860 pytest.skip("postgresql not available")861 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")862> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:863 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^864865nixbot/tests/conftest.py:33: 866_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 867/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__868 return next(self.gen)869 ^^^^^^^^^^^^^^870_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 871872tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')873dbname = 'control'874875 @contextlib.contextmanager876 def ephemeral_postgres(877 tmp_path_factory: pytest.TempPathFactory, dbname: str878 ) -> Iterator[str]:879 """Throwaway Postgres on a unix socket with migrations applied."""880 datadir = tmp_path_factory.mktemp("pgdata")881 sockdir = tmp_path_factory.mktemp("pgsock")882 subprocess.run( # noqa: S603883 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],884 check=True,885 capture_output=True,886 )887 proc = subprocess.Popen( # noqa: S603888 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],889 stdout=subprocess.DEVNULL,890 stderr=subprocess.DEVNULL,891 )892 try:893 deadline = time.monotonic() + 30894 while (895 subprocess.run( # noqa: S603896 ["pg_isready", "-h", str(sockdir), "-U", "test"],897 check=False,898 capture_output=True,899 ).returncode900 != 0901 ):902 # The socket appears before recovery finishes; createdb would903 # fail with "the database system is starting up".904 if time.monotonic() > deadline:905 msg = "postgres did not start"906> raise RuntimeError(msg)907E RuntimeError: postgres did not start908909nixbot/tests/support.py:319: RuntimeError910____________ ERROR at setup of test_eval_reuse_from_cancelled_build ____________911[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14912913self = <Coroutine test_eval_reuse_from_cancelled_build>914915 def setup(self) -> None:916 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"917 if runner_fixture_id not in self.fixturenames:918 self.fixturenames.append(runner_fixture_id)919 # When loop factories are configured, resolve the loop factory920 # fixture early so that a factory variant change cascades cache921 # invalidation before any async fixture checks its cache.922 hook_caller = self.config.hook.pytest_asyncio_loop_factories923 if hook_caller.get_hookimpls():924 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)925> return super().setup()926 ^^^^^^^^^^^^^^^927928/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 929_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 930nixbot/tests/conftest.py:33: in postgres_dsn931 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:932 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^933/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__934 return next(self.gen)935 ^^^^^^^^^^^^^^936_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 937938tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')939dbname = 'orchestrator'940941 @contextlib.contextmanager942 def ephemeral_postgres(943 tmp_path_factory: pytest.TempPathFactory, dbname: str944 ) -> Iterator[str]:945 """Throwaway Postgres on a unix socket with migrations applied."""946 datadir = tmp_path_factory.mktemp("pgdata")947 sockdir = tmp_path_factory.mktemp("pgsock")948 subprocess.run( # noqa: S603949 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],950 check=True,951 capture_output=True,952 )953 proc = subprocess.Popen( # noqa: S603954 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],955 stdout=subprocess.DEVNULL,956 stderr=subprocess.DEVNULL,957 )958 try:959 deadline = time.monotonic() + 30960 while (961 subprocess.run( # noqa: S603962 ["pg_isready", "-h", str(sockdir), "-U", "test"],963 check=False,964 capture_output=True,965 ).returncode966 != 0967 ):968 # The socket appears before recovery finishes; createdb would969 # fail with "the database system is starting up".970 if time.monotonic() > deadline:971 msg = "postgres did not start"972> raise RuntimeError(msg)973E RuntimeError: postgres did not start974975nixbot/tests/support.py:319: RuntimeError976_____________ ERROR at setup of test_pr_author_can_control_own_pr ______________977[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14978979request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>980tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')981982 @pytest.fixture(scope="module")983 def postgres_dsn(984 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory985 ) -> Iterator[str]:986 if shutil.which("initdb") is None:987 pytest.skip("postgresql not available")988 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")989> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:990 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^991992nixbot/tests/conftest.py:33: 993_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 994/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__995 return next(self.gen)996 ^^^^^^^^^^^^^^997_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 998999tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')1000dbname = 'control'10011002 @contextlib.contextmanager1003 def ephemeral_postgres(1004 tmp_path_factory: pytest.TempPathFactory, dbname: str1005 ) -> Iterator[str]:1006 """Throwaway Postgres on a unix socket with migrations applied."""1007 datadir = tmp_path_factory.mktemp("pgdata")1008 sockdir = tmp_path_factory.mktemp("pgsock")1009 subprocess.run( # noqa: S6031010 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1011 check=True,1012 capture_output=True,1013 )1014 proc = subprocess.Popen( # noqa: S6031015 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1016 stdout=subprocess.DEVNULL,1017 stderr=subprocess.DEVNULL,1018 )1019 try:1020 deadline = time.monotonic() + 301021 while (1022 subprocess.run( # noqa: S6031023 ["pg_isready", "-h", str(sockdir), "-U", "test"],1024 check=False,1025 capture_output=True,1026 ).returncode1027 != 01028 ):1029 # The socket appears before recovery finishes; createdb would1030 # fail with "the database system is starting up".1031 if time.monotonic() > deadline:1032 msg = "postgres did not start"1033> raise RuntimeError(msg)1034E RuntimeError: postgres did not start10351036nixbot/tests/support.py:319: RuntimeError1037_______ ERROR at setup of test_scheduled_worktree_id_distinct_per_effect _______1038[gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1410391040fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>1041request = <SubRequest 'postgres_dsn' for <Function test_scheduled_worktree_id_distinct_per_effect>>10421043 @pytest.hookimpl(wrapper=True)1044 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:1045 if (1046 fixturedef.argname == "event_loop_policy"1047 and fixturedef.func.__module__ != __name__1048 ):1049 warnings.warn(1050 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),1051 )1052 asyncio_mode = _get_asyncio_mode(request.config)1053 if not _is_asyncio_fixture_function(fixturedef.func):1054 if asyncio_mode == Mode.STRICT:1055 # Ignore async fixtures without explicit asyncio mark in strict mode1056 # This applies to pytest_trio fixtures, for example1057 return (yield)1058 if not _is_coroutine_or_asyncgen(fixturedef.func):1059> return (yield)1060 ^^^^^10611062/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 1063_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1064nixbot/tests/conftest.py:33: in postgres_dsn1065 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1066 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1067/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1068 return next(self.gen)1069 ^^^^^^^^^^^^^^1070_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 10711072tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')1073dbname = 'service'10741075 @contextlib.contextmanager1076 def ephemeral_postgres(1077 tmp_path_factory: pytest.TempPathFactory, dbname: str1078 ) -> Iterator[str]:1079 """Throwaway Postgres on a unix socket with migrations applied."""1080 datadir = tmp_path_factory.mktemp("pgdata")1081 sockdir = tmp_path_factory.mktemp("pgsock")1082 subprocess.run( # noqa: S6031083 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1084 check=True,1085 capture_output=True,1086 )1087 proc = subprocess.Popen( # noqa: S6031088 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1089 stdout=subprocess.DEVNULL,1090 stderr=subprocess.DEVNULL,1091 )1092 try:1093 deadline = time.monotonic() + 301094 while (1095 subprocess.run( # noqa: S6031096 ["pg_isready", "-h", str(sockdir), "-U", "test"],1097 check=False,1098 capture_output=True,1099 ).returncode1100 != 01101 ):1102 # The socket appears before recovery finishes; createdb would1103 # fail with "the database system is starting up".1104 if time.monotonic() > deadline:1105 msg = "postgres did not start"1106> raise RuntimeError(msg)1107E RuntimeError: postgres did not start11081109nixbot/tests/support.py:319: RuntimeError1110_________________ ERROR at setup of test_settle_already_built __________________1111[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1411121113self = <Coroutine test_settle_already_built>11141115 def setup(self) -> None:1116 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1117 if runner_fixture_id not in self.fixturenames:1118 self.fixturenames.append(runner_fixture_id)1119 # When loop factories are configured, resolve the loop factory1120 # fixture early so that a factory variant change cascades cache1121 # invalidation before any async fixture checks its cache.1122 hook_caller = self.config.hook.pytest_asyncio_loop_factories1123 if hook_caller.get_hookimpls():1124 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1125> return super().setup()1126 ^^^^^^^^^^^^^^^11271128/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1129_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1130nixbot/tests/conftest.py:33: in postgres_dsn1131 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1132 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1133/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1134 return next(self.gen)1135 ^^^^^^^^^^^^^^1136_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 11371138tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1139dbname = 'recovery'11401141 @contextlib.contextmanager1142 def ephemeral_postgres(1143 tmp_path_factory: pytest.TempPathFactory, dbname: str1144 ) -> Iterator[str]:1145 """Throwaway Postgres on a unix socket with migrations applied."""1146 datadir = tmp_path_factory.mktemp("pgdata")1147 sockdir = tmp_path_factory.mktemp("pgsock")1148 subprocess.run( # noqa: S6031149 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1150 check=True,1151 capture_output=True,1152 )1153 proc = subprocess.Popen( # noqa: S6031154 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1155 stdout=subprocess.DEVNULL,1156 stderr=subprocess.DEVNULL,1157 )1158 try:1159 deadline = time.monotonic() + 301160 while (1161 subprocess.run( # noqa: S6031162 ["pg_isready", "-h", str(sockdir), "-U", "test"],1163 check=False,1164 capture_output=True,1165 ).returncode1166 != 01167 ):1168 # The socket appears before recovery finishes; createdb would1169 # fail with "the database system is starting up".1170 if time.monotonic() > deadline:1171 msg = "postgres did not start"1172> raise RuntimeError(msg)1173E RuntimeError: postgres did not start11741175nixbot/tests/support.py:319: RuntimeError1176_______ ERROR at setup of test_scheduled_worktree_id_sanitizes_traversal _______1177[gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1411781179request = <SubRequest 'postgres_dsn' for <Function test_scheduled_worktree_id_distinct_per_effect>>1180tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')11811182 @pytest.fixture(scope="module")1183 def postgres_dsn(1184 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1185 ) -> Iterator[str]:1186 if shutil.which("initdb") is None:1187 pytest.skip("postgresql not available")1188 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1189> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1190 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^11911192nixbot/tests/conftest.py:33: 1193_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1194/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1195 return next(self.gen)1196 ^^^^^^^^^^^^^^1197_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 11981199tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')1200dbname = 'service'12011202 @contextlib.contextmanager1203 def ephemeral_postgres(1204 tmp_path_factory: pytest.TempPathFactory, dbname: str1205 ) -> Iterator[str]:1206 """Throwaway Postgres on a unix socket with migrations applied."""1207 datadir = tmp_path_factory.mktemp("pgdata")1208 sockdir = tmp_path_factory.mktemp("pgsock")1209 subprocess.run( # noqa: S6031210 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1211 check=True,1212 capture_output=True,1213 )1214 proc = subprocess.Popen( # noqa: S6031215 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1216 stdout=subprocess.DEVNULL,1217 stderr=subprocess.DEVNULL,1218 )1219 try:1220 deadline = time.monotonic() + 301221 while (1222 subprocess.run( # noqa: S6031223 ["pg_isready", "-h", str(sockdir), "-U", "test"],1224 check=False,1225 capture_output=True,1226 ).returncode1227 != 01228 ):1229 # The socket appears before recovery finishes; createdb would1230 # fail with "the database system is starting up".1231 if time.monotonic() > deadline:1232 msg = "postgres did not start"1233> raise RuntimeError(msg)1234E RuntimeError: postgres did not start12351236nixbot/tests/support.py:319: RuntimeError1237__ ERROR at setup of test_repo_writer_can_control_without_admin_or_authorship __1238[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1412391240request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>1241tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')12421243 @pytest.fixture(scope="module")1244 def postgres_dsn(1245 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1246 ) -> Iterator[str]:1247 if shutil.which("initdb") is None:1248 pytest.skip("postgresql not available")1249 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1250> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1251 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12521253nixbot/tests/conftest.py:33: 1254_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1255/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1256 return next(self.gen)1257 ^^^^^^^^^^^^^^1258_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 12591260tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')1261dbname = 'control'12621263 @contextlib.contextmanager1264 def ephemeral_postgres(1265 tmp_path_factory: pytest.TempPathFactory, dbname: str1266 ) -> Iterator[str]:1267 """Throwaway Postgres on a unix socket with migrations applied."""1268 datadir = tmp_path_factory.mktemp("pgdata")1269 sockdir = tmp_path_factory.mktemp("pgsock")1270 subprocess.run( # noqa: S6031271 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1272 check=True,1273 capture_output=True,1274 )1275 proc = subprocess.Popen( # noqa: S6031276 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1277 stdout=subprocess.DEVNULL,1278 stderr=subprocess.DEVNULL,1279 )1280 try:1281 deadline = time.monotonic() + 301282 while (1283 subprocess.run( # noqa: S6031284 ["pg_isready", "-h", str(sockdir), "-U", "test"],1285 check=False,1286 capture_output=True,1287 ).returncode1288 != 01289 ):1290 # The socket appears before recovery finishes; createdb would1291 # fail with "the database system is starting up".1292 if time.monotonic() > deadline:1293 msg = "postgres did not start"1294> raise RuntimeError(msg)1295E RuntimeError: postgres did not start12961297nixbot/tests/support.py:319: RuntimeError1298___________ ERROR at setup of test_eval_reuse_skipped_when_drvs_gone ___________1299[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1413001301self = <Coroutine test_eval_reuse_skipped_when_drvs_gone>13021303 def setup(self) -> None:1304 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1305 if runner_fixture_id not in self.fixturenames:1306 self.fixturenames.append(runner_fixture_id)1307 # When loop factories are configured, resolve the loop factory1308 # fixture early so that a factory variant change cascades cache1309 # invalidation before any async fixture checks its cache.1310 hook_caller = self.config.hook.pytest_asyncio_loop_factories1311 if hook_caller.get_hookimpls():1312 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1313> return super().setup()1314 ^^^^^^^^^^^^^^^13151316/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1317_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1318nixbot/tests/conftest.py:33: in postgres_dsn1319 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1320 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1321/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1322 return next(self.gen)1323 ^^^^^^^^^^^^^^1324_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 13251326tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')1327dbname = 'orchestrator'13281329 @contextlib.contextmanager1330 def ephemeral_postgres(1331 tmp_path_factory: pytest.TempPathFactory, dbname: str1332 ) -> Iterator[str]:1333 """Throwaway Postgres on a unix socket with migrations applied."""1334 datadir = tmp_path_factory.mktemp("pgdata")1335 sockdir = tmp_path_factory.mktemp("pgsock")1336 subprocess.run( # noqa: S6031337 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1338 check=True,1339 capture_output=True,1340 )1341 proc = subprocess.Popen( # noqa: S6031342 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1343 stdout=subprocess.DEVNULL,1344 stderr=subprocess.DEVNULL,1345 )1346 try:1347 deadline = time.monotonic() + 301348 while (1349 subprocess.run( # noqa: S6031350 ["pg_isready", "-h", str(sockdir), "-U", "test"],1351 check=False,1352 capture_output=True,1353 ).returncode1354 != 01355 ):1356 # The socket appears before recovery finishes; createdb would1357 # fail with "the database system is starting up".1358 if time.monotonic() > deadline:1359 msg = "postgres did not start"1360> raise RuntimeError(msg)1361E RuntimeError: postgres did not start13621363nixbot/tests/support.py:319: RuntimeError1364_________ ERROR at setup of test_approve_pr_requires_writer_not_author _________1365[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1413661367request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>1368tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')13691370 @pytest.fixture(scope="module")1371 def postgres_dsn(1372 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1373 ) -> Iterator[str]:1374 if shutil.which("initdb") is None:1375 pytest.skip("postgresql not available")1376 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1377> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1378 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^13791380nixbot/tests/conftest.py:33: 1381_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1382/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1383 return next(self.gen)1384 ^^^^^^^^^^^^^^1385_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 13861387tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')1388dbname = 'control'13891390 @contextlib.contextmanager1391 def ephemeral_postgres(1392 tmp_path_factory: pytest.TempPathFactory, dbname: str1393 ) -> Iterator[str]:1394 """Throwaway Postgres on a unix socket with migrations applied."""1395 datadir = tmp_path_factory.mktemp("pgdata")1396 sockdir = tmp_path_factory.mktemp("pgsock")1397 subprocess.run( # noqa: S6031398 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1399 check=True,1400 capture_output=True,1401 )1402 proc = subprocess.Popen( # noqa: S6031403 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1404 stdout=subprocess.DEVNULL,1405 stderr=subprocess.DEVNULL,1406 )1407 try:1408 deadline = time.monotonic() + 301409 while (1410 subprocess.run( # noqa: S6031411 ["pg_isready", "-h", str(sockdir), "-U", "test"],1412 check=False,1413 capture_output=True,1414 ).returncode1415 != 01416 ):1417 # The socket appears before recovery finishes; createdb would1418 # fail with "the database system is starting up".1419 if time.monotonic() > deadline:1420 msg = "postgres did not start"1421> raise RuntimeError(msg)1422E RuntimeError: postgres did not start14231424nixbot/tests/support.py:319: RuntimeError1425___________________ ERROR at setup of test_retention_cleanup ___________________1426[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1414271428self = <Coroutine test_retention_cleanup>14291430 def setup(self) -> None:1431 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1432 if runner_fixture_id not in self.fixturenames:1433 self.fixturenames.append(runner_fixture_id)1434 # When loop factories are configured, resolve the loop factory1435 # fixture early so that a factory variant change cascades cache1436 # invalidation before any async fixture checks its cache.1437 hook_caller = self.config.hook.pytest_asyncio_loop_factories1438 if hook_caller.get_hookimpls():1439 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1440> return super().setup()1441 ^^^^^^^^^^^^^^^14421443/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1444_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1445nixbot/tests/conftest.py:33: in postgres_dsn1446 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1447 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1448/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1449 return next(self.gen)1450 ^^^^^^^^^^^^^^1451_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14521453tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1454dbname = 'recovery'14551456 @contextlib.contextmanager1457 def ephemeral_postgres(1458 tmp_path_factory: pytest.TempPathFactory, dbname: str1459 ) -> Iterator[str]:1460 """Throwaway Postgres on a unix socket with migrations applied."""1461 datadir = tmp_path_factory.mktemp("pgdata")1462 sockdir = tmp_path_factory.mktemp("pgsock")1463 subprocess.run( # noqa: S6031464 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1465 check=True,1466 capture_output=True,1467 )1468 proc = subprocess.Popen( # noqa: S6031469 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1470 stdout=subprocess.DEVNULL,1471 stderr=subprocess.DEVNULL,1472 )1473 try:1474 deadline = time.monotonic() + 301475 while (1476 subprocess.run( # noqa: S6031477 ["pg_isready", "-h", str(sockdir), "-U", "test"],1478 check=False,1479 capture_output=True,1480 ).returncode1481 != 01482 ):1483 # The socket appears before recovery finishes; createdb would1484 # fail with "the database system is starting up".1485 if time.monotonic() > deadline:1486 msg = "postgres did not start"1487> raise RuntimeError(msg)1488E RuntimeError: postgres did not start14891490nixbot/tests/support.py:319: RuntimeError1491________________ ERROR at setup of test_resolve_credential_path ________________1492[gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1414931494request = <SubRequest 'postgres_dsn' for <Function test_scheduled_worktree_id_distinct_per_effect>>1495tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')14961497 @pytest.fixture(scope="module")1498 def postgres_dsn(1499 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1500 ) -> Iterator[str]:1501 if shutil.which("initdb") is None:1502 pytest.skip("postgresql not available")1503 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1504> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1505 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^15061507nixbot/tests/conftest.py:33: 1508_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1509/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1510 return next(self.gen)1511 ^^^^^^^^^^^^^^1512_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 15131514tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')1515dbname = 'service'15161517 @contextlib.contextmanager1518 def ephemeral_postgres(1519 tmp_path_factory: pytest.TempPathFactory, dbname: str1520 ) -> Iterator[str]:1521 """Throwaway Postgres on a unix socket with migrations applied."""1522 datadir = tmp_path_factory.mktemp("pgdata")1523 sockdir = tmp_path_factory.mktemp("pgsock")1524 subprocess.run( # noqa: S6031525 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1526 check=True,1527 capture_output=True,1528 )1529 proc = subprocess.Popen( # noqa: S6031530 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1531 stdout=subprocess.DEVNULL,1532 stderr=subprocess.DEVNULL,1533 )1534 try:1535 deadline = time.monotonic() + 301536 while (1537 subprocess.run( # noqa: S6031538 ["pg_isready", "-h", str(sockdir), "-U", "test"],1539 check=False,1540 capture_output=True,1541 ).returncode1542 != 01543 ):1544 # The socket appears before recovery finishes; createdb would1545 # fail with "the database system is starting up".1546 if time.monotonic() > deadline:1547 msg = "postgres did not start"1548> raise RuntimeError(msg)1549E RuntimeError: postgres did not start15501551nixbot/tests/support.py:319: RuntimeError1552__________ ERROR at setup of test_main_push_promotes_reused_pr_build ___________1553[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1415541555self = <Coroutine test_main_push_promotes_reused_pr_build>15561557 def setup(self) -> None:1558 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1559 if runner_fixture_id not in self.fixturenames:1560 self.fixturenames.append(runner_fixture_id)1561 # When loop factories are configured, resolve the loop factory1562 # fixture early so that a factory variant change cascades cache1563 # invalidation before any async fixture checks its cache.1564 hook_caller = self.config.hook.pytest_asyncio_loop_factories1565 if hook_caller.get_hookimpls():1566 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1567> return super().setup()1568 ^^^^^^^^^^^^^^^15691570/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1571_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1572nixbot/tests/conftest.py:33: in postgres_dsn1573 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1574 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1575/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1576 return next(self.gen)1577 ^^^^^^^^^^^^^^1578_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 15791580tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')1581dbname = 'orchestrator'15821583 @contextlib.contextmanager1584 def ephemeral_postgres(1585 tmp_path_factory: pytest.TempPathFactory, dbname: str1586 ) -> Iterator[str]:1587 """Throwaway Postgres on a unix socket with migrations applied."""1588 datadir = tmp_path_factory.mktemp("pgdata")1589 sockdir = tmp_path_factory.mktemp("pgsock")1590 subprocess.run( # noqa: S6031591 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1592 check=True,1593 capture_output=True,1594 )1595 proc = subprocess.Popen( # noqa: S6031596 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1597 stdout=subprocess.DEVNULL,1598 stderr=subprocess.DEVNULL,1599 )1600 try:1601 deadline = time.monotonic() + 301602 while (1603 subprocess.run( # noqa: S6031604 ["pg_isready", "-h", str(sockdir), "-U", "test"],1605 check=False,1606 capture_output=True,1607 ).returncode1608 != 01609 ):1610 # The socket appears before recovery finishes; createdb would1611 # fail with "the database system is starting up".1612 if time.monotonic() > deadline:1613 msg = "postgres did not start"1614> raise RuntimeError(msg)1615E RuntimeError: postgres did not start16161617nixbot/tests/support.py:319: RuntimeError1618_______________ ERROR at setup of test_cancel_all_requires_admin _______________1619[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1416201621request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>1622tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')16231624 @pytest.fixture(scope="module")1625 def postgres_dsn(1626 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1627 ) -> Iterator[str]:1628 if shutil.which("initdb") is None:1629 pytest.skip("postgresql not available")1630 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1631> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1632 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^16331634nixbot/tests/conftest.py:33: 1635_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1636/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1637 return next(self.gen)1638 ^^^^^^^^^^^^^^1639_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 16401641tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')1642dbname = 'control'16431644 @contextlib.contextmanager1645 def ephemeral_postgres(1646 tmp_path_factory: pytest.TempPathFactory, dbname: str1647 ) -> Iterator[str]:1648 """Throwaway Postgres on a unix socket with migrations applied."""1649 datadir = tmp_path_factory.mktemp("pgdata")1650 sockdir = tmp_path_factory.mktemp("pgsock")1651 subprocess.run( # noqa: S6031652 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1653 check=True,1654 capture_output=True,1655 )1656 proc = subprocess.Popen( # noqa: S6031657 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1658 stdout=subprocess.DEVNULL,1659 stderr=subprocess.DEVNULL,1660 )1661 try:1662 deadline = time.monotonic() + 301663 while (1664 subprocess.run( # noqa: S6031665 ["pg_isready", "-h", str(sockdir), "-U", "test"],1666 check=False,1667 capture_output=True,1668 ).returncode1669 != 01670 ):1671 # The socket appears before recovery finishes; createdb would1672 # fail with "the database system is starting up".1673 if time.monotonic() > deadline:1674 msg = "postgres did not start"1675> raise RuntimeError(msg)1676E RuntimeError: postgres did not start16771678nixbot/tests/support.py:319: RuntimeError1679___________ ERROR at setup of test_build_service_accepts_asyncpg_dsn ___________1680[gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1416811682self = <Coroutine test_build_service_accepts_asyncpg_dsn>16831684 def setup(self) -> None:1685 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1686 if runner_fixture_id not in self.fixturenames:1687 self.fixturenames.append(runner_fixture_id)1688 # When loop factories are configured, resolve the loop factory1689 # fixture early so that a factory variant change cascades cache1690 # invalidation before any async fixture checks its cache.1691 hook_caller = self.config.hook.pytest_asyncio_loop_factories1692 if hook_caller.get_hookimpls():1693 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1694> return super().setup()1695 ^^^^^^^^^^^^^^^16961697/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1698_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1699nixbot/tests/conftest.py:33: in postgres_dsn1700 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1701 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1702/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1703 return next(self.gen)1704 ^^^^^^^^^^^^^^1705_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 17061707tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')1708dbname = 'service'17091710 @contextlib.contextmanager1711 def ephemeral_postgres(1712 tmp_path_factory: pytest.TempPathFactory, dbname: str1713 ) -> Iterator[str]:1714 """Throwaway Postgres on a unix socket with migrations applied."""1715 datadir = tmp_path_factory.mktemp("pgdata")1716 sockdir = tmp_path_factory.mktemp("pgsock")1717 subprocess.run( # noqa: S6031718 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1719 check=True,1720 capture_output=True,1721 )1722 proc = subprocess.Popen( # noqa: S6031723 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1724 stdout=subprocess.DEVNULL,1725 stderr=subprocess.DEVNULL,1726 )1727 try:1728 deadline = time.monotonic() + 301729 while (1730 subprocess.run( # noqa: S6031731 ["pg_isready", "-h", str(sockdir), "-U", "test"],1732 check=False,1733 capture_output=True,1734 ).returncode1735 != 01736 ):1737 # The socket appears before recovery finishes; createdb would1738 # fail with "the database system is starting up".1739 if time.monotonic() > deadline:1740 msg = "postgres did not start"1741> raise RuntimeError(msg)1742E RuntimeError: postgres did not start17431744nixbot/tests/support.py:319: RuntimeError1745____ ERROR at setup of test_resume_includes_interrupted_building_attributes ____1746[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1417471748self = <Coroutine test_resume_includes_interrupted_building_attributes>17491750 def setup(self) -> None:1751 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1752 if runner_fixture_id not in self.fixturenames:1753 self.fixturenames.append(runner_fixture_id)1754 # When loop factories are configured, resolve the loop factory1755 # fixture early so that a factory variant change cascades cache1756 # invalidation before any async fixture checks its cache.1757 hook_caller = self.config.hook.pytest_asyncio_loop_factories1758 if hook_caller.get_hookimpls():1759 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1760> return super().setup()1761 ^^^^^^^^^^^^^^^17621763/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1764_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1765nixbot/tests/conftest.py:33: in postgres_dsn1766 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1767 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1768/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1769 return next(self.gen)1770 ^^^^^^^^^^^^^^1771_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 17721773tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...tch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1774dbname = 'recovery'17751776 @contextlib.contextmanager1777 def ephemeral_postgres(1778 tmp_path_factory: pytest.TempPathFactory, dbname: str1779 ) -> Iterator[str]:1780 """Throwaway Postgres on a unix socket with migrations applied."""1781 datadir = tmp_path_factory.mktemp("pgdata")1782 sockdir = tmp_path_factory.mktemp("pgsock")1783 subprocess.run( # noqa: S6031784 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1785 check=True,1786 capture_output=True,1787 )1788 proc = subprocess.Popen( # noqa: S6031789 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1790 stdout=subprocess.DEVNULL,1791 stderr=subprocess.DEVNULL,1792 )1793 try:1794 deadline = time.monotonic() + 301795 while (1796 subprocess.run( # noqa: S6031797 ["pg_isready", "-h", str(sockdir), "-U", "test"],1798 check=False,1799 capture_output=True,1800 ).returncode1801 != 01802 ):1803 # The socket appears before recovery finishes; createdb would1804 # fail with "the database system is starting up".1805 if time.monotonic() > deadline:1806 msg = "postgres did not start"1807> raise RuntimeError(msg)1808E RuntimeError: postgres did not start18091810nixbot/tests/support.py:319: RuntimeError1811______________ ERROR at setup of test_merge_conflict_fails_build _______________1812[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1418131814self = <Coroutine test_merge_conflict_fails_build>18151816 def setup(self) -> None:1817 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1818 if runner_fixture_id not in self.fixturenames:1819 self.fixturenames.append(runner_fixture_id)1820 # When loop factories are configured, resolve the loop factory1821 # fixture early so that a factory variant change cascades cache1822 # invalidation before any async fixture checks its cache.1823 hook_caller = self.config.hook.pytest_asyncio_loop_factories1824 if hook_caller.get_hookimpls():1825 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1826> return super().setup()1827 ^^^^^^^^^^^^^^^18281829/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1830_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1831nixbot/tests/conftest.py:33: in postgres_dsn1832 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1833 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1834/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1835 return next(self.gen)1836 ^^^^^^^^^^^^^^1837_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 18381839tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')1840dbname = 'orchestrator'18411842 @contextlib.contextmanager1843 def ephemeral_postgres(1844 tmp_path_factory: pytest.TempPathFactory, dbname: str1845 ) -> Iterator[str]:1846 """Throwaway Postgres on a unix socket with migrations applied."""1847 datadir = tmp_path_factory.mktemp("pgdata")1848 sockdir = tmp_path_factory.mktemp("pgsock")1849 subprocess.run( # noqa: S6031850 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1851 check=True,1852 capture_output=True,1853 )1854 proc = subprocess.Popen( # noqa: S6031855 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1856 stdout=subprocess.DEVNULL,1857 stderr=subprocess.DEVNULL,1858 )1859 try:1860 deadline = time.monotonic() + 301861 while (1862 subprocess.run( # noqa: S6031863 ["pg_isready", "-h", str(sockdir), "-U", "test"],1864 check=False,1865 capture_output=True,1866 ).returncode1867 != 01868 ):1869 # The socket appears before recovery finishes; createdb would1870 # fail with "the database system is starting up".1871 if time.monotonic() > deadline:1872 msg = "postgres did not start"1873> raise RuntimeError(msg)1874E RuntimeError: postgres did not start18751876nixbot/tests/support.py:319: RuntimeError1877_____ ERROR at setup of test_cancel_all_cancels_pending_and_running_builds _____1878[gw4] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1418791880request = <SubRequest 'postgres_dsn' for <Function test_control_buttons_hidden_without_permission>>1881tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')18821883 @pytest.fixture(scope="module")1884 def postgres_dsn(1885 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1886 ) -> Iterator[str]:1887 if shutil.which("initdb") is None:1888 pytest.skip("postgresql not available")1889 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1890> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1891 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^18921893nixbot/tests/conftest.py:33: 1894_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1895/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1896 return next(self.gen)1897 ^^^^^^^^^^^^^^1898_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 18991900tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw4'), _retention_count=3, _retention_policy='all')1901dbname = 'control'19021903 @contextlib.contextmanager1904 def ephemeral_postgres(1905 tmp_path_factory: pytest.TempPathFactory, dbname: str1906 ) -> Iterator[str]:1907 """Throwaway Postgres on a unix socket with migrations applied."""1908 datadir = tmp_path_factory.mktemp("pgdata")1909 sockdir = tmp_path_factory.mktemp("pgsock")1910 subprocess.run( # noqa: S6031911 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1912 check=True,1913 capture_output=True,1914 )1915 proc = subprocess.Popen( # noqa: S6031916 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1917 stdout=subprocess.DEVNULL,1918 stderr=subprocess.DEVNULL,1919 )1920 try:1921 deadline = time.monotonic() + 301922 while (1923 subprocess.run( # noqa: S6031924 ["pg_isready", "-h", str(sockdir), "-U", "test"],1925 check=False,1926 capture_output=True,1927 ).returncode1928 != 01929 ):1930 # The socket appears before recovery finishes; createdb would1931 # fail with "the database system is starting up".1932 if time.monotonic() > deadline:1933 msg = "postgres did not start"1934> raise RuntimeError(msg)1935E RuntimeError: postgres did not start19361937nixbot/tests/support.py:319: RuntimeError1938________ ERROR at setup of test_visibility_fetcher_and_cache_ttl_wired _________1939[gw6] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1419401941self = <Coroutine test_visibility_fetcher_and_cache_ttl_wired>19421943 def setup(self) -> None:1944 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1945 if runner_fixture_id not in self.fixturenames:1946 self.fixturenames.append(runner_fixture_id)1947 # When loop factories are configured, resolve the loop factory1948 # fixture early so that a factory variant change cascades cache1949 # invalidation before any async fixture checks its cache.1950 hook_caller = self.config.hook.pytest_asyncio_loop_factories1951 if hook_caller.get_hookimpls():1952 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1953> return super().setup()1954 ^^^^^^^^^^^^^^^19551956/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1957_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1958nixbot/tests/conftest.py:33: in postgres_dsn1959 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1960 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1961/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1962 return next(self.gen)1963 ^^^^^^^^^^^^^^1964_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 19651966tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw6'), _retention_count=3, _retention_policy='all')1967dbname = 'service'19681969 @contextlib.contextmanager1970 def ephemeral_postgres(1971 tmp_path_factory: pytest.TempPathFactory, dbname: str1972 ) -> Iterator[str]:1973 """Throwaway Postgres on a unix socket with migrations applied."""1974 datadir = tmp_path_factory.mktemp("pgdata")1975 sockdir = tmp_path_factory.mktemp("pgsock")1976 subprocess.run( # noqa: S6031977 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1978 check=True,1979 capture_output=True,1980 )1981 proc = subprocess.Popen( # noqa: S6031982 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1983 stdout=subprocess.DEVNULL,1984 stderr=subprocess.DEVNULL,1985 )1986 try:1987 deadline = time.monotonic() + 301988 while (1989 subprocess.run( # noqa: S6031990 ["pg_isready", "-h", str(sockdir), "-U", "test"],1991 check=False,1992 capture_output=True,1993 ).returncode1994 != 01995 ):1996 # The socket appears before recovery finishes; createdb would1997 # fail with "the database system is starting up".1998 if time.monotonic() > deadline:1999 msg = "postgres did not start"2000> raise RuntimeError(msg)loading 18,788 hidden lines…
20789 ["pg_isready", "-h", str(sockdir), "-U", "test"],20790 check=False,20791 capture_output=True,20792 ).returncode20793 != 020794 ):20795 # The socket appears before recovery finishes; createdb would20796 # fail with "the database system is starting up".20797 if time.monotonic() > deadline:20798 msg = "postgres did not start"20799> raise RuntimeError(msg)20800E RuntimeError: postgres did not start2080120802nixbot/tests/support.py:319: RuntimeError20803_________________ ERROR at setup of test_workload_identity_api _________________20804[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142080520806request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>20807tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2080820809 @pytest.fixture(scope="module")20810 def postgres_dsn(20811 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory20812 ) -> Iterator[str]:20813 if shutil.which("initdb") is None:20814 pytest.skip("postgresql not available")20815 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")20816> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20817 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2081820819nixbot/tests/conftest.py:33: 20820_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20821/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20822 return next(self.gen)20823 ^^^^^^^^^^^^^^20824_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2082520826tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')20827dbname = 'web'2082820829 @contextlib.contextmanager20830 def ephemeral_postgres(20831 tmp_path_factory: pytest.TempPathFactory, dbname: str20832 ) -> Iterator[str]:20833 """Throwaway Postgres on a unix socket with migrations applied."""20834 datadir = tmp_path_factory.mktemp("pgdata")20835 sockdir = tmp_path_factory.mktemp("pgsock")20836 subprocess.run( # noqa: S60320837 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20838 check=True,20839 capture_output=True,20840 )20841 proc = subprocess.Popen( # noqa: S60320842 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20843 stdout=subprocess.DEVNULL,20844 stderr=subprocess.DEVNULL,20845 )20846 try:20847 deadline = time.monotonic() + 3020848 while (20849 subprocess.run( # noqa: S60320850 ["pg_isready", "-h", str(sockdir), "-U", "test"],20851 check=False,20852 capture_output=True,20853 ).returncode20854 != 020855 ):20856 # The socket appears before recovery finishes; createdb would20857 # fail with "the database system is starting up".20858 if time.monotonic() > deadline:20859 msg = "postgres did not start"20860> raise RuntimeError(msg)20861E RuntimeError: postgres did not start2086220863nixbot/tests/support.py:319: RuntimeError20864_____________ ERROR at setup of test_logout_revokes_session_cookie _____________20865[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142086620867request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>20868tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2086920870 @pytest.fixture(scope="module")20871 def postgres_dsn(20872 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory20873 ) -> Iterator[str]:20874 if shutil.which("initdb") is None:20875 pytest.skip("postgresql not available")20876 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")20877> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20878 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2087920880nixbot/tests/conftest.py:33: 20881_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20882/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20883 return next(self.gen)20884 ^^^^^^^^^^^^^^20885_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2088620887tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')20888dbname = 'web'2088920890 @contextlib.contextmanager20891 def ephemeral_postgres(20892 tmp_path_factory: pytest.TempPathFactory, dbname: str20893 ) -> Iterator[str]:20894 """Throwaway Postgres on a unix socket with migrations applied."""20895 datadir = tmp_path_factory.mktemp("pgdata")20896 sockdir = tmp_path_factory.mktemp("pgsock")20897 subprocess.run( # noqa: S60320898 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20899 check=True,20900 capture_output=True,20901 )20902 proc = subprocess.Popen( # noqa: S60320903 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20904 stdout=subprocess.DEVNULL,20905 stderr=subprocess.DEVNULL,20906 )20907 try:20908 deadline = time.monotonic() + 3020909 while (20910 subprocess.run( # noqa: S60320911 ["pg_isready", "-h", str(sockdir), "-U", "test"],20912 check=False,20913 capture_output=True,20914 ).returncode20915 != 020916 ):20917 # The socket appears before recovery finishes; createdb would20918 # fail with "the database system is starting up".20919 if time.monotonic() > deadline:20920 msg = "postgres did not start"20921> raise RuntimeError(msg)20922E RuntimeError: postgres did not start2092320924nixbot/tests/support.py:319: RuntimeError20925__________ ERROR at setup of test_effect_dep_failure_skips_dependent ___________20926[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142092720928self = <Coroutine test_effect_dep_failure_skips_dependent>2092920930 def setup(self) -> None:20931 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20932 if runner_fixture_id not in self.fixturenames:20933 self.fixturenames.append(runner_fixture_id)20934 # When loop factories are configured, resolve the loop factory20935 # fixture early so that a factory variant change cascades cache20936 # invalidation before any async fixture checks its cache.20937 hook_caller = self.config.hook.pytest_asyncio_loop_factories20938 if hook_caller.get_hookimpls():20939 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20940> return super().setup()20941 ^^^^^^^^^^^^^^^2094220943/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20944_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20945nixbot/tests/conftest.py:33: in postgres_dsn20946 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20947 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20948/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20949 return next(self.gen)20950 ^^^^^^^^^^^^^^20951_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2095220953tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20954dbname = 'orchestrator'2095520956 @contextlib.contextmanager20957 def ephemeral_postgres(20958 tmp_path_factory: pytest.TempPathFactory, dbname: str20959 ) -> Iterator[str]:20960 """Throwaway Postgres on a unix socket with migrations applied."""20961 datadir = tmp_path_factory.mktemp("pgdata")20962 sockdir = tmp_path_factory.mktemp("pgsock")20963 subprocess.run( # noqa: S60320964 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20965 check=True,20966 capture_output=True,20967 )20968 proc = subprocess.Popen( # noqa: S60320969 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20970 stdout=subprocess.DEVNULL,20971 stderr=subprocess.DEVNULL,20972 )20973 try:20974 deadline = time.monotonic() + 3020975 while (20976 subprocess.run( # noqa: S60320977 ["pg_isready", "-h", str(sockdir), "-U", "test"],20978 check=False,20979 capture_output=True,20980 ).returncode20981 != 020982 ):20983 # The socket appears before recovery finishes; createdb would20984 # fail with "the database system is starting up".20985 if time.monotonic() > deadline:20986 msg = "postgres did not start"20987> raise RuntimeError(msg)20988E RuntimeError: postgres did not start2098920990nixbot/tests/support.py:319: RuntimeError20991______________ ERROR at setup of test_gitlab_nested_group_routes _______________20992[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142099320994request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>20995tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2099620997 @pytest.fixture(scope="module")20998 def postgres_dsn(20999 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21000 ) -> Iterator[str]:21001 if shutil.which("initdb") is None:21002 pytest.skip("postgresql not available")21003 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21004> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21005 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2100621007nixbot/tests/conftest.py:33: 21008_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21009/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21010 return next(self.gen)21011 ^^^^^^^^^^^^^^21012_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2101321014tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21015dbname = 'web'2101621017 @contextlib.contextmanager21018 def ephemeral_postgres(21019 tmp_path_factory: pytest.TempPathFactory, dbname: str21020 ) -> Iterator[str]:21021 """Throwaway Postgres on a unix socket with migrations applied."""21022 datadir = tmp_path_factory.mktemp("pgdata")21023 sockdir = tmp_path_factory.mktemp("pgsock")21024 subprocess.run( # noqa: S60321025 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21026 check=True,21027 capture_output=True,21028 )21029 proc = subprocess.Popen( # noqa: S60321030 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21031 stdout=subprocess.DEVNULL,21032 stderr=subprocess.DEVNULL,21033 )21034 try:21035 deadline = time.monotonic() + 3021036 while (21037 subprocess.run( # noqa: S60321038 ["pg_isready", "-h", str(sockdir), "-U", "test"],21039 check=False,21040 capture_output=True,21041 ).returncode21042 != 021043 ):21044 # The socket appears before recovery finishes; createdb would21045 # fail with "the database system is starting up".21046 if time.monotonic() > deadline:21047 msg = "postgres did not start"21048> raise RuntimeError(msg)21049E RuntimeError: postgres did not start2105021051nixbot/tests/support.py:319: RuntimeError21052___________ ERROR at setup of test_scheduled_run_viewer_renders_ansi ___________21053[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142105421055request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21056tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2105721058 @pytest.fixture(scope="module")21059 def postgres_dsn(21060 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21061 ) -> Iterator[str]:21062 if shutil.which("initdb") is None:21063 pytest.skip("postgresql not available")21064 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21065> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21066 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2106721068nixbot/tests/conftest.py:33: 21069_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21070/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21071 return next(self.gen)21072 ^^^^^^^^^^^^^^21073_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2107421075tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21076dbname = 'web'2107721078 @contextlib.contextmanager21079 def ephemeral_postgres(21080 tmp_path_factory: pytest.TempPathFactory, dbname: str21081 ) -> Iterator[str]:21082 """Throwaway Postgres on a unix socket with migrations applied."""21083 datadir = tmp_path_factory.mktemp("pgdata")21084 sockdir = tmp_path_factory.mktemp("pgsock")21085 subprocess.run( # noqa: S60321086 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21087 check=True,21088 capture_output=True,21089 )21090 proc = subprocess.Popen( # noqa: S60321091 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21092 stdout=subprocess.DEVNULL,21093 stderr=subprocess.DEVNULL,21094 )21095 try:21096 deadline = time.monotonic() + 3021097 while (21098 subprocess.run( # noqa: S60321099 ["pg_isready", "-h", str(sockdir), "-U", "test"],21100 check=False,21101 capture_output=True,21102 ).returncode21103 != 021104 ):21105 # The socket appears before recovery finishes; createdb would21106 # fail with "the database system is starting up".21107 if time.monotonic() > deadline:21108 msg = "postgres did not start"21109> raise RuntimeError(msg)21110E RuntimeError: postgres did not start2111121112nixbot/tests/support.py:319: RuntimeError21113______ ERROR at setup of test_lock_serializes_builds_without_interleaving ______21114[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142111521116self = <Coroutine test_lock_serializes_builds_without_interleaving>2111721118 def setup(self) -> None:21119 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21120 if runner_fixture_id not in self.fixturenames:21121 self.fixturenames.append(runner_fixture_id)21122 # When loop factories are configured, resolve the loop factory21123 # fixture early so that a factory variant change cascades cache21124 # invalidation before any async fixture checks its cache.21125 hook_caller = self.config.hook.pytest_asyncio_loop_factories21126 if hook_caller.get_hookimpls():21127 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21128> return super().setup()21129 ^^^^^^^^^^^^^^^2113021131/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21132_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21133nixbot/tests/conftest.py:33: in postgres_dsn21134 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21135 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21136/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21137 return next(self.gen)21138 ^^^^^^^^^^^^^^21139_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2114021141tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21142dbname = 'orchestrator'2114321144 @contextlib.contextmanager21145 def ephemeral_postgres(21146 tmp_path_factory: pytest.TempPathFactory, dbname: str21147 ) -> Iterator[str]:21148 """Throwaway Postgres on a unix socket with migrations applied."""21149 datadir = tmp_path_factory.mktemp("pgdata")21150 sockdir = tmp_path_factory.mktemp("pgsock")21151 subprocess.run( # noqa: S60321152 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21153 check=True,21154 capture_output=True,21155 )21156 proc = subprocess.Popen( # noqa: S60321157 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21158 stdout=subprocess.DEVNULL,21159 stderr=subprocess.DEVNULL,21160 )21161 try:21162 deadline = time.monotonic() + 3021163 while (21164 subprocess.run( # noqa: S60321165 ["pg_isready", "-h", str(sockdir), "-U", "test"],21166 check=False,21167 capture_output=True,21168 ).returncode21169 != 021170 ):21171 # The socket appears before recovery finishes; createdb would21172 # fail with "the database system is starting up".21173 if time.monotonic() > deadline:21174 msg = "postgres did not start"21175> raise RuntimeError(msg)21176E RuntimeError: postgres did not start2117721178nixbot/tests/support.py:319: RuntimeError21179________ ERROR at setup of test_scheduled_run_viewer_cross_project_404 _________21180[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142118121182request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21183tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2118421185 @pytest.fixture(scope="module")21186 def postgres_dsn(21187 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21188 ) -> Iterator[str]:21189 if shutil.which("initdb") is None:21190 pytest.skip("postgresql not available")21191 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21192> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21193 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2119421195nixbot/tests/conftest.py:33: 21196_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21197/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21198 return next(self.gen)21199 ^^^^^^^^^^^^^^21200_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2120121202tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21203dbname = 'web'2120421205 @contextlib.contextmanager21206 def ephemeral_postgres(21207 tmp_path_factory: pytest.TempPathFactory, dbname: str21208 ) -> Iterator[str]:21209 """Throwaway Postgres on a unix socket with migrations applied."""21210 datadir = tmp_path_factory.mktemp("pgdata")21211 sockdir = tmp_path_factory.mktemp("pgsock")21212 subprocess.run( # noqa: S60321213 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21214 check=True,21215 capture_output=True,21216 )21217 proc = subprocess.Popen( # noqa: S60321218 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21219 stdout=subprocess.DEVNULL,21220 stderr=subprocess.DEVNULL,21221 )21222 try:21223 deadline = time.monotonic() + 3021224 while (21225 subprocess.run( # noqa: S60321226 ["pg_isready", "-h", str(sockdir), "-U", "test"],21227 check=False,21228 capture_output=True,21229 ).returncode21230 != 021231 ):21232 # The socket appears before recovery finishes; createdb would21233 # fail with "the database system is starting up".21234 if time.monotonic() > deadline:21235 msg = "postgres did not start"21236> raise RuntimeError(msg)21237E RuntimeError: postgres did not start2123821239nixbot/tests/support.py:319: RuntimeError21240_______ ERROR at setup of test_scheduled_run_log_unavailable_placeholder _______21241[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142124221243request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21244tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2124521246 @pytest.fixture(scope="module")21247 def postgres_dsn(21248 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21249 ) -> Iterator[str]:21250 if shutil.which("initdb") is None:21251 pytest.skip("postgresql not available")21252 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21253> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21254 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2125521256nixbot/tests/conftest.py:33: 21257_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21258/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21259 return next(self.gen)21260 ^^^^^^^^^^^^^^21261_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2126221263tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21264dbname = 'web'2126521266 @contextlib.contextmanager21267 def ephemeral_postgres(21268 tmp_path_factory: pytest.TempPathFactory, dbname: str21269 ) -> Iterator[str]:21270 """Throwaway Postgres on a unix socket with migrations applied."""21271 datadir = tmp_path_factory.mktemp("pgdata")21272 sockdir = tmp_path_factory.mktemp("pgsock")21273 subprocess.run( # noqa: S60321274 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21275 check=True,21276 capture_output=True,21277 )21278 proc = subprocess.Popen( # noqa: S60321279 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21280 stdout=subprocess.DEVNULL,21281 stderr=subprocess.DEVNULL,21282 )21283 try:21284 deadline = time.monotonic() + 3021285 while (21286 subprocess.run( # noqa: S60321287 ["pg_isready", "-h", str(sockdir), "-U", "test"],21288 check=False,21289 capture_output=True,21290 ).returncode21291 != 021292 ):21293 # The socket appears before recovery finishes; createdb would21294 # fail with "the database system is starting up".21295 if time.monotonic() > deadline:21296 msg = "postgres did not start"21297> raise RuntimeError(msg)21298E RuntimeError: postgres did not start2129921300nixbot/tests/support.py:319: RuntimeError21301___________ ERROR at setup of test_effect_dep_cycle_fails_discovery ____________21302[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142130321304self = <Coroutine test_effect_dep_cycle_fails_discovery>2130521306 def setup(self) -> None:21307 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21308 if runner_fixture_id not in self.fixturenames:21309 self.fixturenames.append(runner_fixture_id)21310 # When loop factories are configured, resolve the loop factory21311 # fixture early so that a factory variant change cascades cache21312 # invalidation before any async fixture checks its cache.21313 hook_caller = self.config.hook.pytest_asyncio_loop_factories21314 if hook_caller.get_hookimpls():21315 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21316> return super().setup()21317 ^^^^^^^^^^^^^^^2131821319/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21320_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21321nixbot/tests/conftest.py:33: in postgres_dsn21322 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21323 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21324/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21325 return next(self.gen)21326 ^^^^^^^^^^^^^^21327_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2132821329tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21330dbname = 'orchestrator'2133121332 @contextlib.contextmanager21333 def ephemeral_postgres(21334 tmp_path_factory: pytest.TempPathFactory, dbname: str21335 ) -> Iterator[str]:21336 """Throwaway Postgres on a unix socket with migrations applied."""21337 datadir = tmp_path_factory.mktemp("pgdata")21338 sockdir = tmp_path_factory.mktemp("pgsock")21339 subprocess.run( # noqa: S60321340 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21341 check=True,21342 capture_output=True,21343 )21344 proc = subprocess.Popen( # noqa: S60321345 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21346 stdout=subprocess.DEVNULL,21347 stderr=subprocess.DEVNULL,21348 )21349 try:21350 deadline = time.monotonic() + 3021351 while (21352 subprocess.run( # noqa: S60321353 ["pg_isready", "-h", str(sockdir), "-U", "test"],21354 check=False,21355 capture_output=True,21356 ).returncode21357 != 021358 ):21359 # The socket appears before recovery finishes; createdb would21360 # fail with "the database system is starting up".21361 if time.monotonic() > deadline:21362 msg = "postgres did not start"21363> raise RuntimeError(msg)21364E RuntimeError: postgres did not start2136521366nixbot/tests/support.py:319: RuntimeError21367________ ERROR at setup of test_scheduled_run_viewer_waiting_before_log ________21368[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142136921370request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21371tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2137221373 @pytest.fixture(scope="module")21374 def postgres_dsn(21375 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21376 ) -> Iterator[str]:21377 if shutil.which("initdb") is None:21378 pytest.skip("postgresql not available")21379 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21380> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21381 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2138221383nixbot/tests/conftest.py:33: 21384_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21385/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21386 return next(self.gen)21387 ^^^^^^^^^^^^^^21388_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2138921390tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21391dbname = 'web'2139221393 @contextlib.contextmanager21394 def ephemeral_postgres(21395 tmp_path_factory: pytest.TempPathFactory, dbname: str21396 ) -> Iterator[str]:21397 """Throwaway Postgres on a unix socket with migrations applied."""21398 datadir = tmp_path_factory.mktemp("pgdata")21399 sockdir = tmp_path_factory.mktemp("pgsock")21400 subprocess.run( # noqa: S60321401 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21402 check=True,21403 capture_output=True,21404 )21405 proc = subprocess.Popen( # noqa: S60321406 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21407 stdout=subprocess.DEVNULL,21408 stderr=subprocess.DEVNULL,21409 )21410 try:21411 deadline = time.monotonic() + 3021412 while (21413 subprocess.run( # noqa: S60321414 ["pg_isready", "-h", str(sockdir), "-U", "test"],21415 check=False,21416 capture_output=True,21417 ).returncode21418 != 021419 ):21420 # The socket appears before recovery finishes; createdb would21421 # fail with "the database system is starting up".21422 if time.monotonic() > deadline:21423 msg = "postgres did not start"21424> raise RuntimeError(msg)21425E RuntimeError: postgres did not start2142621427nixbot/tests/support.py:319: RuntimeError21428_________ ERROR at setup of test_failed_effect_reports_failure_status __________21429[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142143021431self = <Coroutine test_failed_effect_reports_failure_status>2143221433 def setup(self) -> None:21434 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21435 if runner_fixture_id not in self.fixturenames:21436 self.fixturenames.append(runner_fixture_id)21437 # When loop factories are configured, resolve the loop factory21438 # fixture early so that a factory variant change cascades cache21439 # invalidation before any async fixture checks its cache.21440 hook_caller = self.config.hook.pytest_asyncio_loop_factories21441 if hook_caller.get_hookimpls():21442 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21443> return super().setup()21444 ^^^^^^^^^^^^^^^2144521446/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21447_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21448nixbot/tests/conftest.py:33: in postgres_dsn21449 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21450 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21451/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21452 return next(self.gen)21453 ^^^^^^^^^^^^^^21454_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2145521456tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21457dbname = 'orchestrator'2145821459 @contextlib.contextmanager21460 def ephemeral_postgres(21461 tmp_path_factory: pytest.TempPathFactory, dbname: str21462 ) -> Iterator[str]:21463 """Throwaway Postgres on a unix socket with migrations applied."""21464 datadir = tmp_path_factory.mktemp("pgdata")21465 sockdir = tmp_path_factory.mktemp("pgsock")21466 subprocess.run( # noqa: S60321467 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21468 check=True,21469 capture_output=True,21470 )21471 proc = subprocess.Popen( # noqa: S60321472 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21473 stdout=subprocess.DEVNULL,21474 stderr=subprocess.DEVNULL,21475 )21476 try:21477 deadline = time.monotonic() + 3021478 while (21479 subprocess.run( # noqa: S60321480 ["pg_isready", "-h", str(sockdir), "-U", "test"],21481 check=False,21482 capture_output=True,21483 ).returncode21484 != 021485 ):21486 # The socket appears before recovery finishes; createdb would21487 # fail with "the database system is starting up".21488 if time.monotonic() > deadline:21489 msg = "postgres did not start"21490> raise RuntimeError(msg)21491E RuntimeError: postgres did not start2149221493nixbot/tests/support.py:319: RuntimeError21494_________ ERROR at setup of test_project_tabs_link_builds_and_effects __________21495[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142149621497request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21498tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2149921500 @pytest.fixture(scope="module")21501 def postgres_dsn(21502 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21503 ) -> Iterator[str]:21504 if shutil.which("initdb") is None:21505 pytest.skip("postgresql not available")21506 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21507> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21508 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2150921510nixbot/tests/conftest.py:33: 21511_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21512/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21513 return next(self.gen)21514 ^^^^^^^^^^^^^^21515_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2151621517tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21518dbname = 'web'2151921520 @contextlib.contextmanager21521 def ephemeral_postgres(21522 tmp_path_factory: pytest.TempPathFactory, dbname: str21523 ) -> Iterator[str]:21524 """Throwaway Postgres on a unix socket with migrations applied."""21525 datadir = tmp_path_factory.mktemp("pgdata")21526 sockdir = tmp_path_factory.mktemp("pgsock")21527 subprocess.run( # noqa: S60321528 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21529 check=True,21530 capture_output=True,21531 )21532 proc = subprocess.Popen( # noqa: S60321533 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21534 stdout=subprocess.DEVNULL,21535 stderr=subprocess.DEVNULL,21536 )21537 try:21538 deadline = time.monotonic() + 3021539 while (21540 subprocess.run( # noqa: S60321541 ["pg_isready", "-h", str(sockdir), "-U", "test"],21542 check=False,21543 capture_output=True,21544 ).returncode21545 != 021546 ):21547 # The socket appears before recovery finishes; createdb would21548 # fail with "the database system is starting up".21549 if time.monotonic() > deadline:21550 msg = "postgres did not start"21551> raise RuntimeError(msg)21552E RuntimeError: postgres did not start2155321554nixbot/tests/support.py:319: RuntimeError21555_ ERROR at setup of test_failing_badge_counts_effects_whose_latest_run_failed __21556[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142155721558request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21559tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2156021561 @pytest.fixture(scope="module")21562 def postgres_dsn(21563 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21564 ) -> Iterator[str]:21565 if shutil.which("initdb") is None:21566 pytest.skip("postgresql not available")21567 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21568> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21569 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2157021571nixbot/tests/conftest.py:33: 21572_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21573/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21574 return next(self.gen)21575 ^^^^^^^^^^^^^^21576_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2157721578tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21579dbname = 'web'2158021581 @contextlib.contextmanager21582 def ephemeral_postgres(21583 tmp_path_factory: pytest.TempPathFactory, dbname: str21584 ) -> Iterator[str]:21585 """Throwaway Postgres on a unix socket with migrations applied."""21586 datadir = tmp_path_factory.mktemp("pgdata")21587 sockdir = tmp_path_factory.mktemp("pgsock")21588 subprocess.run( # noqa: S60321589 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21590 check=True,21591 capture_output=True,21592 )21593 proc = subprocess.Popen( # noqa: S60321594 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21595 stdout=subprocess.DEVNULL,21596 stderr=subprocess.DEVNULL,21597 )21598 try:21599 deadline = time.monotonic() + 3021600 while (21601 subprocess.run( # noqa: S60321602 ["pg_isready", "-h", str(sockdir), "-U", "test"],21603 check=False,21604 capture_output=True,21605 ).returncode21606 != 021607 ):21608 # The socket appears before recovery finishes; createdb would21609 # fail with "the database system is starting up".21610 if time.monotonic() > deadline:21611 msg = "postgres did not start"21612> raise RuntimeError(msg)21613E RuntimeError: postgres did not start2161421615nixbot/tests/support.py:319: RuntimeError21616________ ERROR at setup of test_post_process_error_does_not_wedge_build ________21617[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142161821619self = <Coroutine test_post_process_error_does_not_wedge_build>2162021621 def setup(self) -> None:21622 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21623 if runner_fixture_id not in self.fixturenames:21624 self.fixturenames.append(runner_fixture_id)21625 # When loop factories are configured, resolve the loop factory21626 # fixture early so that a factory variant change cascades cache21627 # invalidation before any async fixture checks its cache.21628 hook_caller = self.config.hook.pytest_asyncio_loop_factories21629 if hook_caller.get_hookimpls():21630 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21631> return super().setup()21632 ^^^^^^^^^^^^^^^2163321634/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21635_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21636nixbot/tests/conftest.py:33: in postgres_dsn21637 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21638 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21639/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21640 return next(self.gen)21641 ^^^^^^^^^^^^^^21642_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2164321644tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21645dbname = 'orchestrator'2164621647 @contextlib.contextmanager21648 def ephemeral_postgres(21649 tmp_path_factory: pytest.TempPathFactory, dbname: str21650 ) -> Iterator[str]:21651 """Throwaway Postgres on a unix socket with migrations applied."""21652 datadir = tmp_path_factory.mktemp("pgdata")21653 sockdir = tmp_path_factory.mktemp("pgsock")21654 subprocess.run( # noqa: S60321655 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21656 check=True,21657 capture_output=True,21658 )21659 proc = subprocess.Popen( # noqa: S60321660 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21661 stdout=subprocess.DEVNULL,21662 stderr=subprocess.DEVNULL,21663 )21664 try:21665 deadline = time.monotonic() + 3021666 while (21667 subprocess.run( # noqa: S60321668 ["pg_isready", "-h", str(sockdir), "-U", "test"],21669 check=False,21670 capture_output=True,21671 ).returncode21672 != 021673 ):21674 # The socket appears before recovery finishes; createdb would21675 # fail with "the database system is starting up".21676 if time.monotonic() > deadline:21677 msg = "postgres did not start"21678> raise RuntimeError(msg)21679E RuntimeError: postgres did not start2168021681nixbot/tests/support.py:319: RuntimeError21682__________ ERROR at setup of test_old_schedule_history_url_redirects ___________21683[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142168421685request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21686tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2168721688 @pytest.fixture(scope="module")21689 def postgres_dsn(21690 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21691 ) -> Iterator[str]:21692 if shutil.which("initdb") is None:21693 pytest.skip("postgresql not available")21694 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21695> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21696 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2169721698nixbot/tests/conftest.py:33: 21699_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21700/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21701 return next(self.gen)21702 ^^^^^^^^^^^^^^21703_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2170421705tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21706dbname = 'web'2170721708 @contextlib.contextmanager21709 def ephemeral_postgres(21710 tmp_path_factory: pytest.TempPathFactory, dbname: str21711 ) -> Iterator[str]:21712 """Throwaway Postgres on a unix socket with migrations applied."""21713 datadir = tmp_path_factory.mktemp("pgdata")21714 sockdir = tmp_path_factory.mktemp("pgsock")21715 subprocess.run( # noqa: S60321716 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21717 check=True,21718 capture_output=True,21719 )21720 proc = subprocess.Popen( # noqa: S60321721 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21722 stdout=subprocess.DEVNULL,21723 stderr=subprocess.DEVNULL,21724 )21725 try:21726 deadline = time.monotonic() + 3021727 while (21728 subprocess.run( # noqa: S60321729 ["pg_isready", "-h", str(sockdir), "-U", "test"],21730 check=False,21731 capture_output=True,21732 ).returncode21733 != 021734 ):21735 # The socket appears before recovery finishes; createdb would21736 # fail with "the database system is starting up".21737 if time.monotonic() > deadline:21738 msg = "postgres did not start"21739> raise RuntimeError(msg)21740E RuntimeError: postgres did not start2174121742nixbot/tests/support.py:319: RuntimeError21743__________ ERROR at setup of test_project_effects_filter_and_paginate __________21744[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142174521746request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21747tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2174821749 @pytest.fixture(scope="module")21750 def postgres_dsn(21751 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21752 ) -> Iterator[str]:21753 if shutil.which("initdb") is None:21754 pytest.skip("postgresql not available")21755 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21756> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21757 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2175821759nixbot/tests/conftest.py:33: 21760_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21761/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21762 return next(self.gen)21763 ^^^^^^^^^^^^^^21764_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2176521766tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21767dbname = 'web'2176821769 @contextlib.contextmanager21770 def ephemeral_postgres(21771 tmp_path_factory: pytest.TempPathFactory, dbname: str21772 ) -> Iterator[str]:21773 """Throwaway Postgres on a unix socket with migrations applied."""21774 datadir = tmp_path_factory.mktemp("pgdata")21775 sockdir = tmp_path_factory.mktemp("pgsock")21776 subprocess.run( # noqa: S60321777 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21778 check=True,21779 capture_output=True,21780 )21781 proc = subprocess.Popen( # noqa: S60321782 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21783 stdout=subprocess.DEVNULL,21784 stderr=subprocess.DEVNULL,21785 )21786 try:21787 deadline = time.monotonic() + 3021788 while (21789 subprocess.run( # noqa: S60321790 ["pg_isready", "-h", str(sockdir), "-U", "test"],21791 check=False,21792 capture_output=True,21793 ).returncode21794 != 021795 ):21796 # The socket appears before recovery finishes; createdb would21797 # fail with "the database system is starting up".21798 if time.monotonic() > deadline:21799 msg = "postgres did not start"21800> raise RuntimeError(msg)21801E RuntimeError: postgres did not start2180221803nixbot/tests/support.py:319: RuntimeError21804_______ ERROR at setup of test_unexpected_eval_path_error_settles_build ________21805[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142180621807self = <Coroutine test_unexpected_eval_path_error_settles_build>2180821809 def setup(self) -> None:21810 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21811 if runner_fixture_id not in self.fixturenames:21812 self.fixturenames.append(runner_fixture_id)21813 # When loop factories are configured, resolve the loop factory21814 # fixture early so that a factory variant change cascades cache21815 # invalidation before any async fixture checks its cache.21816 hook_caller = self.config.hook.pytest_asyncio_loop_factories21817 if hook_caller.get_hookimpls():21818 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21819> return super().setup()21820 ^^^^^^^^^^^^^^^2182121822/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21823_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21824nixbot/tests/conftest.py:33: in postgres_dsn21825 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21826 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21827/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21828 return next(self.gen)21829 ^^^^^^^^^^^^^^21830_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2183121832tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21833dbname = 'orchestrator'2183421835 @contextlib.contextmanager21836 def ephemeral_postgres(21837 tmp_path_factory: pytest.TempPathFactory, dbname: str21838 ) -> Iterator[str]:21839 """Throwaway Postgres on a unix socket with migrations applied."""21840 datadir = tmp_path_factory.mktemp("pgdata")21841 sockdir = tmp_path_factory.mktemp("pgsock")21842 subprocess.run( # noqa: S60321843 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21844 check=True,21845 capture_output=True,21846 )21847 proc = subprocess.Popen( # noqa: S60321848 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21849 stdout=subprocess.DEVNULL,21850 stderr=subprocess.DEVNULL,21851 )21852 try:21853 deadline = time.monotonic() + 3021854 while (21855 subprocess.run( # noqa: S60321856 ["pg_isready", "-h", str(sockdir), "-U", "test"],21857 check=False,21858 capture_output=True,21859 ).returncode21860 != 021861 ):21862 # The socket appears before recovery finishes; createdb would21863 # fail with "the database system is starting up".21864 if time.monotonic() > deadline:21865 msg = "postgres did not start"21866> raise RuntimeError(msg)21867E RuntimeError: postgres did not start2186821869nixbot/tests/support.py:319: RuntimeError21870_________ ERROR at setup of test_scheduled_run_stream_replays_history __________21871[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142187221873request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21874tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2187521876 @pytest.fixture(scope="module")21877 def postgres_dsn(21878 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21879 ) -> Iterator[str]:21880 if shutil.which("initdb") is None:21881 pytest.skip("postgresql not available")21882 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21883> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21884 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2188521886nixbot/tests/conftest.py:33: 21887_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21888/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21889 return next(self.gen)21890 ^^^^^^^^^^^^^^21891_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2189221893tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21894dbname = 'web'2189521896 @contextlib.contextmanager21897 def ephemeral_postgres(21898 tmp_path_factory: pytest.TempPathFactory, dbname: str21899 ) -> Iterator[str]:21900 """Throwaway Postgres on a unix socket with migrations applied."""21901 datadir = tmp_path_factory.mktemp("pgdata")21902 sockdir = tmp_path_factory.mktemp("pgsock")21903 subprocess.run( # noqa: S60321904 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21905 check=True,21906 capture_output=True,21907 )21908 proc = subprocess.Popen( # noqa: S60321909 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21910 stdout=subprocess.DEVNULL,21911 stderr=subprocess.DEVNULL,21912 )21913 try:21914 deadline = time.monotonic() + 3021915 while (21916 subprocess.run( # noqa: S60321917 ["pg_isready", "-h", str(sockdir), "-U", "test"],21918 check=False,21919 capture_output=True,21920 ).returncode21921 != 021922 ):21923 # The socket appears before recovery finishes; createdb would21924 # fail with "the database system is starting up".21925 if time.monotonic() > deadline:21926 msg = "postgres did not start"21927> raise RuntimeError(msg)21928E RuntimeError: postgres did not start2192921930nixbot/tests/support.py:319: RuntimeError21931___________ ERROR at setup of test_scheduled_run_notify_build_events ___________21932[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142193321934request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>21935tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2193621937 @pytest.fixture(scope="module")21938 def postgres_dsn(21939 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory21940 ) -> Iterator[str]:21941 if shutil.which("initdb") is None:21942 pytest.skip("postgresql not available")21943 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")21944> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21945 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2194621947nixbot/tests/conftest.py:33: 21948_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21949/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21950 return next(self.gen)21951 ^^^^^^^^^^^^^^21952_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2195321954tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')21955dbname = 'web'2195621957 @contextlib.contextmanager21958 def ephemeral_postgres(21959 tmp_path_factory: pytest.TempPathFactory, dbname: str21960 ) -> Iterator[str]:21961 """Throwaway Postgres on a unix socket with migrations applied."""21962 datadir = tmp_path_factory.mktemp("pgdata")21963 sockdir = tmp_path_factory.mktemp("pgsock")21964 subprocess.run( # noqa: S60321965 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21966 check=True,21967 capture_output=True,21968 )21969 proc = subprocess.Popen( # noqa: S60321970 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21971 stdout=subprocess.DEVNULL,21972 stderr=subprocess.DEVNULL,21973 )21974 try:21975 deadline = time.monotonic() + 3021976 while (21977 subprocess.run( # noqa: S60321978 ["pg_isready", "-h", str(sockdir), "-U", "test"],21979 check=False,21980 capture_output=True,21981 ).returncode21982 != 021983 ):21984 # The socket appears before recovery finishes; createdb would21985 # fail with "the database system is starting up".21986 if time.monotonic() > deadline:21987 msg = "postgres did not start"21988> raise RuntimeError(msg)21989E RuntimeError: postgres did not start2199021991nixbot/tests/support.py:319: RuntimeError21992____ ERROR at setup of test_reuse_empty_succeeded_build_posts_eval_success _____21993[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142199421995self = <Coroutine test_reuse_empty_succeeded_build_posts_eval_success>2199621997 def setup(self) -> None:21998 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21999 if runner_fixture_id not in self.fixturenames:22000 self.fixturenames.append(runner_fixture_id)22001 # When loop factories are configured, resolve the loop factory22002 # fixture early so that a factory variant change cascades cache22003 # invalidation before any async fixture checks its cache.22004 hook_caller = self.config.hook.pytest_asyncio_loop_factories22005 if hook_caller.get_hookimpls():22006 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22007> return super().setup()22008 ^^^^^^^^^^^^^^^2200922010/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22011_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22012nixbot/tests/conftest.py:33: in postgres_dsn22013 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22014 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22015/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22016 return next(self.gen)22017 ^^^^^^^^^^^^^^22018_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2201922020tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22021dbname = 'orchestrator'2202222023 @contextlib.contextmanager22024 def ephemeral_postgres(22025 tmp_path_factory: pytest.TempPathFactory, dbname: str22026 ) -> Iterator[str]:22027 """Throwaway Postgres on a unix socket with migrations applied."""22028 datadir = tmp_path_factory.mktemp("pgdata")22029 sockdir = tmp_path_factory.mktemp("pgsock")22030 subprocess.run( # noqa: S60322031 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22032 check=True,22033 capture_output=True,22034 )22035 proc = subprocess.Popen( # noqa: S60322036 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22037 stdout=subprocess.DEVNULL,22038 stderr=subprocess.DEVNULL,22039 )22040 try:22041 deadline = time.monotonic() + 3022042 while (22043 subprocess.run( # noqa: S60322044 ["pg_isready", "-h", str(sockdir), "-U", "test"],22045 check=False,22046 capture_output=True,22047 ).returncode22048 != 022049 ):22050 # The socket appears before recovery finishes; createdb would22051 # fail with "the database system is starting up".22052 if time.monotonic() > deadline:22053 msg = "postgres did not start"22054> raise RuntimeError(msg)22055E RuntimeError: postgres did not start2205622057nixbot/tests/support.py:319: RuntimeError22058_________________ ERROR at setup of test_api_log_toc_and_text __________________22059[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142206022061request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>22062tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2206322064 @pytest.fixture(scope="module")22065 def postgres_dsn(22066 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory22067 ) -> Iterator[str]:22068 if shutil.which("initdb") is None:22069 pytest.skip("postgresql not available")22070 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")22071> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22072 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2207322074nixbot/tests/conftest.py:33: 22075_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22076/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22077 return next(self.gen)22078 ^^^^^^^^^^^^^^22079_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2208022081tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')22082dbname = 'web'2208322084 @contextlib.contextmanager22085 def ephemeral_postgres(22086 tmp_path_factory: pytest.TempPathFactory, dbname: str22087 ) -> Iterator[str]:22088 """Throwaway Postgres on a unix socket with migrations applied."""22089 datadir = tmp_path_factory.mktemp("pgdata")22090 sockdir = tmp_path_factory.mktemp("pgsock")22091 subprocess.run( # noqa: S60322092 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22093 check=True,22094 capture_output=True,22095 )22096 proc = subprocess.Popen( # noqa: S60322097 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22098 stdout=subprocess.DEVNULL,22099 stderr=subprocess.DEVNULL,22100 )22101 try:22102 deadline = time.monotonic() + 3022103 while (22104 subprocess.run( # noqa: S60322105 ["pg_isready", "-h", str(sockdir), "-U", "test"],22106 check=False,22107 capture_output=True,22108 ).returncode22109 != 022110 ):22111 # The socket appears before recovery finishes; createdb would22112 # fail with "the database system is starting up".22113 if time.monotonic() > deadline:22114 msg = "postgres did not start"22115> raise RuntimeError(msg)22116E RuntimeError: postgres did not start2211722118nixbot/tests/support.py:319: RuntimeError22119__ ERROR at setup of test_stale_event_reusing_old_build_does_not_cancel_newer __22120[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142212122122self = <Coroutine test_stale_event_reusing_old_build_does_not_cancel_newer>2212322124 def setup(self) -> None:22125 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22126 if runner_fixture_id not in self.fixturenames:22127 self.fixturenames.append(runner_fixture_id)22128 # When loop factories are configured, resolve the loop factory22129 # fixture early so that a factory variant change cascades cache22130 # invalidation before any async fixture checks its cache.22131 hook_caller = self.config.hook.pytest_asyncio_loop_factories22132 if hook_caller.get_hookimpls():22133 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22134> return super().setup()22135 ^^^^^^^^^^^^^^^2213622137/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22138_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22139nixbot/tests/conftest.py:33: in postgres_dsn22140 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22141 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22142/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22143 return next(self.gen)22144 ^^^^^^^^^^^^^^22145_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2214622147tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22148dbname = 'orchestrator'2214922150 @contextlib.contextmanager22151 def ephemeral_postgres(22152 tmp_path_factory: pytest.TempPathFactory, dbname: str22153 ) -> Iterator[str]:22154 """Throwaway Postgres on a unix socket with migrations applied."""22155 datadir = tmp_path_factory.mktemp("pgdata")22156 sockdir = tmp_path_factory.mktemp("pgsock")22157 subprocess.run( # noqa: S60322158 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22159 check=True,22160 capture_output=True,22161 )22162 proc = subprocess.Popen( # noqa: S60322163 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22164 stdout=subprocess.DEVNULL,22165 stderr=subprocess.DEVNULL,22166 )22167 try:22168 deadline = time.monotonic() + 3022169 while (22170 subprocess.run( # noqa: S60322171 ["pg_isready", "-h", str(sockdir), "-U", "test"],22172 check=False,22173 capture_output=True,22174 ).returncode22175 != 022176 ):22177 # The socket appears before recovery finishes; createdb would22178 # fail with "the database system is starting up".22179 if time.monotonic() > deadline:22180 msg = "postgres did not start"22181> raise RuntimeError(msg)22182E RuntimeError: postgres did not start2218322184nixbot/tests/support.py:319: RuntimeError22185_____________ ERROR at setup of test_api_log_toc_flat_log_fallback _____________22186[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142218722188request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>22189tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2219022191 @pytest.fixture(scope="module")22192 def postgres_dsn(22193 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory22194 ) -> Iterator[str]:22195 if shutil.which("initdb") is None:22196 pytest.skip("postgresql not available")22197 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")22198> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22199 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2220022201nixbot/tests/conftest.py:33: 22202_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22203/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22204 return next(self.gen)22205 ^^^^^^^^^^^^^^22206_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2220722208tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')22209dbname = 'web'2221022211 @contextlib.contextmanager22212 def ephemeral_postgres(22213 tmp_path_factory: pytest.TempPathFactory, dbname: str22214 ) -> Iterator[str]:22215 """Throwaway Postgres on a unix socket with migrations applied."""22216 datadir = tmp_path_factory.mktemp("pgdata")22217 sockdir = tmp_path_factory.mktemp("pgsock")22218 subprocess.run( # noqa: S60322219 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22220 check=True,22221 capture_output=True,22222 )22223 proc = subprocess.Popen( # noqa: S60322224 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22225 stdout=subprocess.DEVNULL,22226 stderr=subprocess.DEVNULL,22227 )22228 try:22229 deadline = time.monotonic() + 3022230 while (22231 subprocess.run( # noqa: S60322232 ["pg_isready", "-h", str(sockdir), "-U", "test"],22233 check=False,22234 capture_output=True,22235 ).returncode22236 != 022237 ):22238 # The socket appears before recovery finishes; createdb would22239 # fail with "the database system is starting up".22240 if time.monotonic() > deadline:22241 msg = "postgres did not start"22242> raise RuntimeError(msg)22243E RuntimeError: postgres did not start2224422245nixbot/tests/support.py:319: RuntimeError22246______ ERROR at setup of test_reuse_for_default_branch_push_runs_effects _______22247[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142224822249self = <Coroutine test_reuse_for_default_branch_push_runs_effects>2225022251 def setup(self) -> None:22252 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22253 if runner_fixture_id not in self.fixturenames:22254 self.fixturenames.append(runner_fixture_id)22255 # When loop factories are configured, resolve the loop factory22256 # fixture early so that a factory variant change cascades cache22257 # invalidation before any async fixture checks its cache.22258 hook_caller = self.config.hook.pytest_asyncio_loop_factories22259 if hook_caller.get_hookimpls():22260 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22261> return super().setup()22262 ^^^^^^^^^^^^^^^2226322264/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22265_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22266nixbot/tests/conftest.py:33: in postgres_dsn22267 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22268 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22269/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22270 return next(self.gen)22271 ^^^^^^^^^^^^^^22272_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2227322274tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22275dbname = 'orchestrator'2227622277 @contextlib.contextmanager22278 def ephemeral_postgres(22279 tmp_path_factory: pytest.TempPathFactory, dbname: str22280 ) -> Iterator[str]:22281 """Throwaway Postgres on a unix socket with migrations applied."""22282 datadir = tmp_path_factory.mktemp("pgdata")22283 sockdir = tmp_path_factory.mktemp("pgsock")22284 subprocess.run( # noqa: S60322285 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22286 check=True,22287 capture_output=True,22288 )22289 proc = subprocess.Popen( # noqa: S60322290 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22291 stdout=subprocess.DEVNULL,22292 stderr=subprocess.DEVNULL,22293 )22294 try:22295 deadline = time.monotonic() + 3022296 while (22297 subprocess.run( # noqa: S60322298 ["pg_isready", "-h", str(sockdir), "-U", "test"],22299 check=False,22300 capture_output=True,22301 ).returncode22302 != 022303 ):22304 # The socket appears before recovery finishes; createdb would22305 # fail with "the database system is starting up".22306 if time.monotonic() > deadline:22307 msg = "postgres did not start"22308> raise RuntimeError(msg)22309E RuntimeError: postgres did not start2231022311nixbot/tests/support.py:319: RuntimeError22312__________________ ERROR at setup of test_api_log_stream_json __________________22313[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142231422315request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>22316tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2231722318 @pytest.fixture(scope="module")22319 def postgres_dsn(22320 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory22321 ) -> Iterator[str]:22322 if shutil.which("initdb") is None:22323 pytest.skip("postgresql not available")22324 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")22325> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22326 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2232722328nixbot/tests/conftest.py:33: 22329_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22330/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22331 return next(self.gen)22332 ^^^^^^^^^^^^^^22333_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2233422335tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')22336dbname = 'web'2233722338 @contextlib.contextmanager22339 def ephemeral_postgres(22340 tmp_path_factory: pytest.TempPathFactory, dbname: str22341 ) -> Iterator[str]:22342 """Throwaway Postgres on a unix socket with migrations applied."""22343 datadir = tmp_path_factory.mktemp("pgdata")22344 sockdir = tmp_path_factory.mktemp("pgsock")22345 subprocess.run( # noqa: S60322346 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22347 check=True,22348 capture_output=True,22349 )22350 proc = subprocess.Popen( # noqa: S60322351 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22352 stdout=subprocess.DEVNULL,22353 stderr=subprocess.DEVNULL,22354 )22355 try:22356 deadline = time.monotonic() + 3022357 while (22358 subprocess.run( # noqa: S60322359 ["pg_isready", "-h", str(sockdir), "-U", "test"],22360 check=False,22361 capture_output=True,22362 ).returncode22363 != 022364 ):22365 # The socket appears before recovery finishes; createdb would22366 # fail with "the database system is starting up".22367 if time.monotonic() > deadline:22368 msg = "postgres did not start"22369> raise RuntimeError(msg)22370E RuntimeError: postgres did not start2237122372nixbot/tests/support.py:319: RuntimeError22373_______________ ERROR at setup of test_build_eval_stats_surface ________________22374[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142237522376request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>22377tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2237822379 @pytest.fixture(scope="module")22380 def postgres_dsn(22381 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory22382 ) -> Iterator[str]:22383 if shutil.which("initdb") is None:22384 pytest.skip("postgresql not available")22385 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")22386> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22387 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2238822389nixbot/tests/conftest.py:33: 22390_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22391/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22392 return next(self.gen)22393 ^^^^^^^^^^^^^^22394_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2239522396tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')22397dbname = 'web'2239822399 @contextlib.contextmanager22400 def ephemeral_postgres(22401 tmp_path_factory: pytest.TempPathFactory, dbname: str22402 ) -> Iterator[str]:22403 """Throwaway Postgres on a unix socket with migrations applied."""22404 datadir = tmp_path_factory.mktemp("pgdata")22405 sockdir = tmp_path_factory.mktemp("pgsock")22406 subprocess.run( # noqa: S60322407 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22408 check=True,22409 capture_output=True,22410 )22411 proc = subprocess.Popen( # noqa: S60322412 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22413 stdout=subprocess.DEVNULL,22414 stderr=subprocess.DEVNULL,22415 )22416 try:22417 deadline = time.monotonic() + 3022418 while (22419 subprocess.run( # noqa: S60322420 ["pg_isready", "-h", str(sockdir), "-U", "test"],22421 check=False,22422 capture_output=True,22423 ).returncode22424 != 022425 ):22426 # The socket appears before recovery finishes; createdb would22427 # fail with "the database system is starting up".22428 if time.monotonic() > deadline:22429 msg = "postgres did not start"22430> raise RuntimeError(msg)22431E RuntimeError: postgres did not start2243222433nixbot/tests/support.py:319: RuntimeError22434__ ERROR at setup of test_tag_reusing_deployed_build_delivers_its_own_effects __22435[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142243622437self = <Coroutine test_tag_reusing_deployed_build_delivers_its_own_effects>2243822439 def setup(self) -> None:22440 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22441 if runner_fixture_id not in self.fixturenames:22442 self.fixturenames.append(runner_fixture_id)22443 # When loop factories are configured, resolve the loop factory22444 # fixture early so that a factory variant change cascades cache22445 # invalidation before any async fixture checks its cache.22446 hook_caller = self.config.hook.pytest_asyncio_loop_factories22447 if hook_caller.get_hookimpls():22448 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22449> return super().setup()22450 ^^^^^^^^^^^^^^^2245122452/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22453_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22454nixbot/tests/conftest.py:33: in postgres_dsn22455 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22456 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22457/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22458 return next(self.gen)22459 ^^^^^^^^^^^^^^22460_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2246122462tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22463dbname = 'orchestrator'2246422465 @contextlib.contextmanager22466 def ephemeral_postgres(22467 tmp_path_factory: pytest.TempPathFactory, dbname: str22468 ) -> Iterator[str]:22469 """Throwaway Postgres on a unix socket with migrations applied."""22470 datadir = tmp_path_factory.mktemp("pgdata")22471 sockdir = tmp_path_factory.mktemp("pgsock")22472 subprocess.run( # noqa: S60322473 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22474 check=True,22475 capture_output=True,22476 )22477 proc = subprocess.Popen( # noqa: S60322478 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22479 stdout=subprocess.DEVNULL,22480 stderr=subprocess.DEVNULL,22481 )22482 try:22483 deadline = time.monotonic() + 3022484 while (22485 subprocess.run( # noqa: S60322486 ["pg_isready", "-h", str(sockdir), "-U", "test"],22487 check=False,22488 capture_output=True,22489 ).returncode22490 != 022491 ):22492 # The socket appears before recovery finishes; createdb would22493 # fail with "the database system is starting up".22494 if time.monotonic() > deadline:22495 msg = "postgres did not start"22496> raise RuntimeError(msg)22497E RuntimeError: postgres did not start2249822499nixbot/tests/support.py:319: RuntimeError22500__ ERROR at setup of test_tag_attached_to_in_flight_build_delivers_on_success __22501[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142250222503self = <Coroutine test_tag_attached_to_in_flight_build_delivers_on_success>2250422505 def setup(self) -> None:22506 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22507 if runner_fixture_id not in self.fixturenames:22508 self.fixturenames.append(runner_fixture_id)22509 # When loop factories are configured, resolve the loop factory22510 # fixture early so that a factory variant change cascades cache22511 # invalidation before any async fixture checks its cache.22512 hook_caller = self.config.hook.pytest_asyncio_loop_factories22513 if hook_caller.get_hookimpls():22514 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22515> return super().setup()22516 ^^^^^^^^^^^^^^^2251722518/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22519_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22520nixbot/tests/conftest.py:33: in postgres_dsn22521 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22522 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22523/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22524 return next(self.gen)22525 ^^^^^^^^^^^^^^22526_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2252722528tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22529dbname = 'orchestrator'2253022531 @contextlib.contextmanager22532 def ephemeral_postgres(22533 tmp_path_factory: pytest.TempPathFactory, dbname: str22534 ) -> Iterator[str]:22535 """Throwaway Postgres on a unix socket with migrations applied."""22536 datadir = tmp_path_factory.mktemp("pgdata")22537 sockdir = tmp_path_factory.mktemp("pgsock")22538 subprocess.run( # noqa: S60322539 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22540 check=True,22541 capture_output=True,22542 )22543 proc = subprocess.Popen( # noqa: S60322544 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22545 stdout=subprocess.DEVNULL,22546 stderr=subprocess.DEVNULL,22547 )22548 try:22549 deadline = time.monotonic() + 3022550 while (22551 subprocess.run( # noqa: S60322552 ["pg_isready", "-h", str(sockdir), "-U", "test"],22553 check=False,22554 capture_output=True,22555 ).returncode22556 != 022557 ):22558 # The socket appears before recovery finishes; createdb would22559 # fail with "the database system is starting up".22560 if time.monotonic() > deadline:22561 msg = "postgres did not start"22562> raise RuntimeError(msg)22563E RuntimeError: postgres did not start2256422565nixbot/tests/support.py:319: RuntimeError22566______ ERROR at setup of test_restart_of_gated_build_settles_effect_rows _______22567[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142256822569self = <Coroutine test_restart_of_gated_build_settles_effect_rows>2257022571 def setup(self) -> None:22572 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22573 if runner_fixture_id not in self.fixturenames:22574 self.fixturenames.append(runner_fixture_id)22575 # When loop factories are configured, resolve the loop factory22576 # fixture early so that a factory variant change cascades cache22577 # invalidation before any async fixture checks its cache.22578 hook_caller = self.config.hook.pytest_asyncio_loop_factories22579 if hook_caller.get_hookimpls():22580 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22581> return super().setup()22582 ^^^^^^^^^^^^^^^2258322584/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22585_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22586nixbot/tests/conftest.py:33: in postgres_dsn22587 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22588 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22589/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22590 return next(self.gen)22591 ^^^^^^^^^^^^^^22592_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2259322594tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22595dbname = 'orchestrator'2259622597 @contextlib.contextmanager22598 def ephemeral_postgres(22599 tmp_path_factory: pytest.TempPathFactory, dbname: str22600 ) -> Iterator[str]:22601 """Throwaway Postgres on a unix socket with migrations applied."""22602 datadir = tmp_path_factory.mktemp("pgdata")22603 sockdir = tmp_path_factory.mktemp("pgsock")22604 subprocess.run( # noqa: S60322605 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22606 check=True,22607 capture_output=True,22608 )22609 proc = subprocess.Popen( # noqa: S60322610 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22611 stdout=subprocess.DEVNULL,22612 stderr=subprocess.DEVNULL,22613 )22614 try:22615 deadline = time.monotonic() + 3022616 while (22617 subprocess.run( # noqa: S60322618 ["pg_isready", "-h", str(sockdir), "-U", "test"],22619 check=False,22620 capture_output=True,22621 ).returncode22622 != 022623 ):22624 # The socket appears before recovery finishes; createdb would22625 # fail with "the database system is starting up".22626 if time.monotonic() > deadline:22627 msg = "postgres did not start"22628> raise RuntimeError(msg)22629E RuntimeError: postgres did not start2263022631nixbot/tests/support.py:319: RuntimeError22632________ ERROR at setup of test_restart_build_drops_queued_effect_items ________22633[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142263422635self = <Coroutine test_restart_build_drops_queued_effect_items>2263622637 def setup(self) -> None:22638 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22639 if runner_fixture_id not in self.fixturenames:22640 self.fixturenames.append(runner_fixture_id)22641 # When loop factories are configured, resolve the loop factory22642 # fixture early so that a factory variant change cascades cache22643 # invalidation before any async fixture checks its cache.22644 hook_caller = self.config.hook.pytest_asyncio_loop_factories22645 if hook_caller.get_hookimpls():22646 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22647> return super().setup()22648 ^^^^^^^^^^^^^^^2264922650/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22651_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22652nixbot/tests/conftest.py:33: in postgres_dsn22653 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22654 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22655/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22656 return next(self.gen)22657 ^^^^^^^^^^^^^^22658_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2265922660tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22661dbname = 'orchestrator'2266222663 @contextlib.contextmanager22664 def ephemeral_postgres(22665 tmp_path_factory: pytest.TempPathFactory, dbname: str22666 ) -> Iterator[str]:22667 """Throwaway Postgres on a unix socket with migrations applied."""22668 datadir = tmp_path_factory.mktemp("pgdata")22669 sockdir = tmp_path_factory.mktemp("pgsock")22670 subprocess.run( # noqa: S60322671 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22672 check=True,22673 capture_output=True,22674 )22675 proc = subprocess.Popen( # noqa: S60322676 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22677 stdout=subprocess.DEVNULL,22678 stderr=subprocess.DEVNULL,22679 )22680 try:22681 deadline = time.monotonic() + 3022682 while (22683 subprocess.run( # noqa: S60322684 ["pg_isready", "-h", str(sockdir), "-U", "test"],22685 check=False,22686 capture_output=True,22687 ).returncode22688 != 022689 ):22690 # The socket appears before recovery finishes; createdb would22691 # fail with "the database system is starting up".22692 if time.monotonic() > deadline:22693 msg = "postgres did not start"22694> raise RuntimeError(msg)22695E RuntimeError: postgres did not start2269622697nixbot/tests/support.py:319: RuntimeError22698___ ERROR at setup of test_restart_effects_after_pr_attach_keeps_effects_ref ___22699[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142270022701self = <Coroutine test_restart_effects_after_pr_attach_keeps_effects_ref>2270222703 def setup(self) -> None:22704 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22705 if runner_fixture_id not in self.fixturenames:22706 self.fixturenames.append(runner_fixture_id)22707 # When loop factories are configured, resolve the loop factory22708 # fixture early so that a factory variant change cascades cache22709 # invalidation before any async fixture checks its cache.22710 hook_caller = self.config.hook.pytest_asyncio_loop_factories22711 if hook_caller.get_hookimpls():22712 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22713> return super().setup()22714 ^^^^^^^^^^^^^^^2271522716/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22717_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22718nixbot/tests/conftest.py:33: in postgres_dsn22719 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22720 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22721/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22722 return next(self.gen)22723 ^^^^^^^^^^^^^^22724_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2272522726tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22727dbname = 'orchestrator'2272822729 @contextlib.contextmanager22730 def ephemeral_postgres(22731 tmp_path_factory: pytest.TempPathFactory, dbname: str22732 ) -> Iterator[str]:22733 """Throwaway Postgres on a unix socket with migrations applied."""22734 datadir = tmp_path_factory.mktemp("pgdata")22735 sockdir = tmp_path_factory.mktemp("pgsock")22736 subprocess.run( # noqa: S60322737 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22738 check=True,22739 capture_output=True,22740 )22741 proc = subprocess.Popen( # noqa: S60322742 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22743 stdout=subprocess.DEVNULL,22744 stderr=subprocess.DEVNULL,22745 )22746 try:22747 deadline = time.monotonic() + 3022748 while (22749 subprocess.run( # noqa: S60322750 ["pg_isready", "-h", str(sockdir), "-U", "test"],22751 check=False,22752 capture_output=True,22753 ).returncode22754 != 022755 ):22756 # The socket appears before recovery finishes; createdb would22757 # fail with "the database system is starting up".22758 if time.monotonic() > deadline:22759 msg = "postgres did not start"22760> raise RuntimeError(msg)22761E RuntimeError: postgres did not start2276222763nixbot/tests/support.py:319: RuntimeError22764_______ ERROR at setup of test_gated_restart_then_allowed_reuse_deploys ________22765[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142276622767self = <Coroutine test_gated_restart_then_allowed_reuse_deploys>2276822769 def setup(self) -> None:22770 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22771 if runner_fixture_id not in self.fixturenames:22772 self.fixturenames.append(runner_fixture_id)22773 # When loop factories are configured, resolve the loop factory22774 # fixture early so that a factory variant change cascades cache22775 # invalidation before any async fixture checks its cache.22776 hook_caller = self.config.hook.pytest_asyncio_loop_factories22777 if hook_caller.get_hookimpls():22778 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22779> return super().setup()22780 ^^^^^^^^^^^^^^^2278122782/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22783_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22784nixbot/tests/conftest.py:33: in postgres_dsn22785 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22786 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22787/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22788 return next(self.gen)22789 ^^^^^^^^^^^^^^22790_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2279122792tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22793dbname = 'orchestrator'2279422795 @contextlib.contextmanager22796 def ephemeral_postgres(22797 tmp_path_factory: pytest.TempPathFactory, dbname: str22798 ) -> Iterator[str]:22799 """Throwaway Postgres on a unix socket with migrations applied."""22800 datadir = tmp_path_factory.mktemp("pgdata")22801 sockdir = tmp_path_factory.mktemp("pgsock")22802 subprocess.run( # noqa: S60322803 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22804 check=True,22805 capture_output=True,22806 )22807 proc = subprocess.Popen( # noqa: S60322808 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22809 stdout=subprocess.DEVNULL,22810 stderr=subprocess.DEVNULL,22811 )22812 try:22813 deadline = time.monotonic() + 3022814 while (22815 subprocess.run( # noqa: S60322816 ["pg_isready", "-h", str(sockdir), "-U", "test"],22817 check=False,22818 capture_output=True,22819 ).returncode22820 != 022821 ):22822 # The socket appears before recovery finishes; createdb would22823 # fail with "the database system is starting up".22824 if time.monotonic() > deadline:22825 msg = "postgres did not start"22826> raise RuntimeError(msg)22827E RuntimeError: postgres did not start2282822829nixbot/tests/support.py:319: RuntimeError22830_____ ERROR at setup of test_rerun_single_effect_takes_pending_dependents ______22831[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142283222833self = <Coroutine test_rerun_single_effect_takes_pending_dependents>2283422835 def setup(self) -> None:22836 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22837 if runner_fixture_id not in self.fixturenames:22838 self.fixturenames.append(runner_fixture_id)22839 # When loop factories are configured, resolve the loop factory22840 # fixture early so that a factory variant change cascades cache22841 # invalidation before any async fixture checks its cache.22842 hook_caller = self.config.hook.pytest_asyncio_loop_factories22843 if hook_caller.get_hookimpls():22844 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22845> return super().setup()22846 ^^^^^^^^^^^^^^^2284722848/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22849_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22850nixbot/tests/conftest.py:33: in postgres_dsn22851 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22852 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22853/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22854 return next(self.gen)22855 ^^^^^^^^^^^^^^22856_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2285722858tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22859dbname = 'orchestrator'2286022861 @contextlib.contextmanager22862 def ephemeral_postgres(22863 tmp_path_factory: pytest.TempPathFactory, dbname: str22864 ) -> Iterator[str]:22865 """Throwaway Postgres on a unix socket with migrations applied."""22866 datadir = tmp_path_factory.mktemp("pgdata")22867 sockdir = tmp_path_factory.mktemp("pgsock")22868 subprocess.run( # noqa: S60322869 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22870 check=True,22871 capture_output=True,22872 )22873 proc = subprocess.Popen( # noqa: S60322874 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22875 stdout=subprocess.DEVNULL,22876 stderr=subprocess.DEVNULL,22877 )22878 try:22879 deadline = time.monotonic() + 3022880 while (22881 subprocess.run( # noqa: S60322882 ["pg_isready", "-h", str(sockdir), "-U", "test"],22883 check=False,22884 capture_output=True,22885 ).returncode22886 != 022887 ):22888 # The socket appears before recovery finishes; createdb would22889 # fail with "the database system is starting up".22890 if time.monotonic() > deadline:22891 msg = "postgres did not start"22892> raise RuntimeError(msg)22893E RuntimeError: postgres did not start2289422895nixbot/tests/support.py:319: RuntimeError22896______ ERROR at setup of test_reuse_replays_effect_statuses_to_new_commit ______22897[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142289822899self = <Coroutine test_reuse_replays_effect_statuses_to_new_commit>2290022901 def setup(self) -> None:22902 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22903 if runner_fixture_id not in self.fixturenames:22904 self.fixturenames.append(runner_fixture_id)22905 # When loop factories are configured, resolve the loop factory22906 # fixture early so that a factory variant change cascades cache22907 # invalidation before any async fixture checks its cache.22908 hook_caller = self.config.hook.pytest_asyncio_loop_factories22909 if hook_caller.get_hookimpls():22910 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22911> return super().setup()22912 ^^^^^^^^^^^^^^^2291322914/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22915_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22916nixbot/tests/conftest.py:33: in postgres_dsn22917 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22918 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22919/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22920 return next(self.gen)22921 ^^^^^^^^^^^^^^22922_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2292322924tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22925dbname = 'orchestrator'2292622927 @contextlib.contextmanager22928 def ephemeral_postgres(22929 tmp_path_factory: pytest.TempPathFactory, dbname: str22930 ) -> Iterator[str]:22931 """Throwaway Postgres on a unix socket with migrations applied."""22932 datadir = tmp_path_factory.mktemp("pgdata")22933 sockdir = tmp_path_factory.mktemp("pgsock")22934 subprocess.run( # noqa: S60322935 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22936 check=True,22937 capture_output=True,22938 )22939 proc = subprocess.Popen( # noqa: S60322940 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22941 stdout=subprocess.DEVNULL,22942 stderr=subprocess.DEVNULL,22943 )22944 try:22945 deadline = time.monotonic() + 3022946 while (22947 subprocess.run( # noqa: S60322948 ["pg_isready", "-h", str(sockdir), "-U", "test"],22949 check=False,22950 capture_output=True,22951 ).returncode22952 != 022953 ):22954 # The socket appears before recovery finishes; createdb would22955 # fail with "the database system is starting up".22956 if time.monotonic() > deadline:22957 msg = "postgres did not start"22958> raise RuntimeError(msg)22959E RuntimeError: postgres did not start2296022961nixbot/tests/support.py:319: RuntimeError22962____ ERROR at setup of test_attach_to_already_terminal_build_replays_status ____22963[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142296422965self = <Coroutine test_attach_to_already_terminal_build_replays_status>2296622967 def setup(self) -> None:22968 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22969 if runner_fixture_id not in self.fixturenames:22970 self.fixturenames.append(runner_fixture_id)22971 # When loop factories are configured, resolve the loop factory22972 # fixture early so that a factory variant change cascades cache22973 # invalidation before any async fixture checks its cache.22974 hook_caller = self.config.hook.pytest_asyncio_loop_factories22975 if hook_caller.get_hookimpls():22976 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22977> return super().setup()22978 ^^^^^^^^^^^^^^^2297922980/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22981_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22982nixbot/tests/conftest.py:33: in postgres_dsn22983 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22984 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22985/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22986 return next(self.gen)22987 ^^^^^^^^^^^^^^22988_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2298922990tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22991dbname = 'orchestrator'2299222993 @contextlib.contextmanager22994 def ephemeral_postgres(22995 tmp_path_factory: pytest.TempPathFactory, dbname: str22996 ) -> Iterator[str]:22997 """Throwaway Postgres on a unix socket with migrations applied."""22998 datadir = tmp_path_factory.mktemp("pgdata")22999 sockdir = tmp_path_factory.mktemp("pgsock")23000 subprocess.run( # noqa: S60323001 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23002 check=True,23003 capture_output=True,23004 )23005 proc = subprocess.Popen( # noqa: S60323006 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23007 stdout=subprocess.DEVNULL,23008 stderr=subprocess.DEVNULL,23009 )23010 try:23011 deadline = time.monotonic() + 3023012 while (23013 subprocess.run( # noqa: S60323014 ["pg_isready", "-h", str(sockdir), "-U", "test"],23015 check=False,23016 capture_output=True,23017 ).returncode23018 != 023019 ):23020 # The socket appears before recovery finishes; createdb would23021 # fail with "the database system is starting up".23022 if time.monotonic() > deadline:23023 msg = "postgres did not start"23024> raise RuntimeError(msg)23025E RuntimeError: postgres did not start2302623027nixbot/tests/support.py:319: RuntimeError23028___ ERROR at setup of test_cancel_during_eval_resolves_linked_eval_contexts ____23029[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142303023031self = <Coroutine test_cancel_during_eval_resolves_linked_eval_contexts>2303223033 def setup(self) -> None:23034 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23035 if runner_fixture_id not in self.fixturenames:23036 self.fixturenames.append(runner_fixture_id)23037 # When loop factories are configured, resolve the loop factory23038 # fixture early so that a factory variant change cascades cache23039 # invalidation before any async fixture checks its cache.23040 hook_caller = self.config.hook.pytest_asyncio_loop_factories23041 if hook_caller.get_hookimpls():23042 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23043> return super().setup()23044 ^^^^^^^^^^^^^^^2304523046/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23047_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23048nixbot/tests/conftest.py:33: in postgres_dsn23049 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23050 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23051/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23052 return next(self.gen)23053 ^^^^^^^^^^^^^^23054_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2305523056tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23057dbname = 'orchestrator'2305823059 @contextlib.contextmanager23060 def ephemeral_postgres(23061 tmp_path_factory: pytest.TempPathFactory, dbname: str23062 ) -> Iterator[str]:23063 """Throwaway Postgres on a unix socket with migrations applied."""23064 datadir = tmp_path_factory.mktemp("pgdata")23065 sockdir = tmp_path_factory.mktemp("pgsock")23066 subprocess.run( # noqa: S60323067 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23068 check=True,23069 capture_output=True,23070 )23071 proc = subprocess.Popen( # noqa: S60323072 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23073 stdout=subprocess.DEVNULL,23074 stderr=subprocess.DEVNULL,23075 )23076 try:23077 deadline = time.monotonic() + 3023078 while (23079 subprocess.run( # noqa: S60323080 ["pg_isready", "-h", str(sockdir), "-U", "test"],23081 check=False,23082 capture_output=True,23083 ).returncode23084 != 023085 ):23086 # The socket appears before recovery finishes; createdb would23087 # fail with "the database system is starting up".23088 if time.monotonic() > deadline:23089 msg = "postgres did not start"23090> raise RuntimeError(msg)23091E RuntimeError: postgres did not start2309223093nixbot/tests/support.py:319: RuntimeError23094____ ERROR at setup of test_effect_log_does_not_collide_with_attribute_log _____23095[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142309623097self = <Coroutine test_effect_log_does_not_collide_with_attribute_log>2309823099 def setup(self) -> None:23100 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23101 if runner_fixture_id not in self.fixturenames:23102 self.fixturenames.append(runner_fixture_id)23103 # When loop factories are configured, resolve the loop factory23104 # fixture early so that a factory variant change cascades cache23105 # invalidation before any async fixture checks its cache.23106 hook_caller = self.config.hook.pytest_asyncio_loop_factories23107 if hook_caller.get_hookimpls():23108 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23109> return super().setup()23110 ^^^^^^^^^^^^^^^2311123112/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23113_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23114nixbot/tests/conftest.py:33: in postgres_dsn23115 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23116 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23117/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23118 return next(self.gen)23119 ^^^^^^^^^^^^^^23120_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2312123122tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23123dbname = 'orchestrator'2312423125 @contextlib.contextmanager23126 def ephemeral_postgres(23127 tmp_path_factory: pytest.TempPathFactory, dbname: str23128 ) -> Iterator[str]:23129 """Throwaway Postgres on a unix socket with migrations applied."""23130 datadir = tmp_path_factory.mktemp("pgdata")23131 sockdir = tmp_path_factory.mktemp("pgsock")23132 subprocess.run( # noqa: S60323133 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23134 check=True,23135 capture_output=True,23136 )23137 proc = subprocess.Popen( # noqa: S60323138 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23139 stdout=subprocess.DEVNULL,23140 stderr=subprocess.DEVNULL,23141 )23142 try:23143 deadline = time.monotonic() + 3023144 while (23145 subprocess.run( # noqa: S60323146 ["pg_isready", "-h", str(sockdir), "-U", "test"],23147 check=False,23148 capture_output=True,23149 ).returncode23150 != 023151 ):23152 # The socket appears before recovery finishes; createdb would23153 # fail with "the database system is starting up".23154 if time.monotonic() > deadline:23155 msg = "postgres did not start"23156> raise RuntimeError(msg)23157E RuntimeError: postgres did not start2315823159nixbot/tests/support.py:319: RuntimeError23160__________ ERROR at setup of test_post_process_paths_are_forge_scoped __________23161[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142316223163self = <Coroutine test_post_process_paths_are_forge_scoped>2316423165 def setup(self) -> None:23166 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23167 if runner_fixture_id not in self.fixturenames:23168 self.fixturenames.append(runner_fixture_id)23169 # When loop factories are configured, resolve the loop factory23170 # fixture early so that a factory variant change cascades cache23171 # invalidation before any async fixture checks its cache.23172 hook_caller = self.config.hook.pytest_asyncio_loop_factories23173 if hook_caller.get_hookimpls():23174 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23175> return super().setup()23176 ^^^^^^^^^^^^^^^2317723178/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23179_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23180nixbot/tests/conftest.py:33: in postgres_dsn23181 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23182 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23183/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23184 return next(self.gen)23185 ^^^^^^^^^^^^^^23186_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2318723188tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23189dbname = 'orchestrator'2319023191 @contextlib.contextmanager23192 def ephemeral_postgres(23193 tmp_path_factory: pytest.TempPathFactory, dbname: str23194 ) -> Iterator[str]:23195 """Throwaway Postgres on a unix socket with migrations applied."""23196 datadir = tmp_path_factory.mktemp("pgdata")23197 sockdir = tmp_path_factory.mktemp("pgsock")23198 subprocess.run( # noqa: S60323199 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23200 check=True,23201 capture_output=True,23202 )23203 proc = subprocess.Popen( # noqa: S60323204 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23205 stdout=subprocess.DEVNULL,23206 stderr=subprocess.DEVNULL,23207 )23208 try:23209 deadline = time.monotonic() + 3023210 while (23211 subprocess.run( # noqa: S60323212 ["pg_isready", "-h", str(sockdir), "-U", "test"],23213 check=False,23214 capture_output=True,23215 ).returncode23216 != 023217 ):23218 # The socket appears before recovery finishes; createdb would23219 # fail with "the database system is starting up".23220 if time.monotonic() > deadline:23221 msg = "postgres did not start"23222> raise RuntimeError(msg)23223E RuntimeError: postgres did not start2322423225nixbot/tests/support.py:319: RuntimeError23226_______ ERROR at setup of test_effects_phase_error_keeps_succeeded_build _______23227[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142322823229self = <Coroutine test_effects_phase_error_keeps_succeeded_build>2323023231 def setup(self) -> None:23232 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23233 if runner_fixture_id not in self.fixturenames:23234 self.fixturenames.append(runner_fixture_id)23235 # When loop factories are configured, resolve the loop factory23236 # fixture early so that a factory variant change cascades cache23237 # invalidation before any async fixture checks its cache.23238 hook_caller = self.config.hook.pytest_asyncio_loop_factories23239 if hook_caller.get_hookimpls():23240 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23241> return super().setup()23242 ^^^^^^^^^^^^^^^2324323244/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23245_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23246nixbot/tests/conftest.py:33: in postgres_dsn23247 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23248 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23249/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23250 return next(self.gen)23251 ^^^^^^^^^^^^^^23252_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2325323254tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23255dbname = 'orchestrator'2325623257 @contextlib.contextmanager23258 def ephemeral_postgres(23259 tmp_path_factory: pytest.TempPathFactory, dbname: str23260 ) -> Iterator[str]:23261 """Throwaway Postgres on a unix socket with migrations applied."""23262 datadir = tmp_path_factory.mktemp("pgdata")23263 sockdir = tmp_path_factory.mktemp("pgsock")23264 subprocess.run( # noqa: S60323265 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23266 check=True,23267 capture_output=True,23268 )23269 proc = subprocess.Popen( # noqa: S60323270 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23271 stdout=subprocess.DEVNULL,23272 stderr=subprocess.DEVNULL,23273 )23274 try:23275 deadline = time.monotonic() + 3023276 while (23277 subprocess.run( # noqa: S60323278 ["pg_isready", "-h", str(sockdir), "-U", "test"],23279 check=False,23280 capture_output=True,23281 ).returncode23282 != 023283 ):23284 # The socket appears before recovery finishes; createdb would23285 # fail with "the database system is starting up".23286 if time.monotonic() > deadline:23287 msg = "postgres did not start"23288> raise RuntimeError(msg)23289E RuntimeError: postgres did not start2329023291nixbot/tests/support.py:319: RuntimeError23292_____ ERROR at setup of test_reuse_post_process_error_still_reports_status _____23293[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142329423295self = <Coroutine test_reuse_post_process_error_still_reports_status>2329623297 def setup(self) -> None:23298 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23299 if runner_fixture_id not in self.fixturenames:23300 self.fixturenames.append(runner_fixture_id)23301 # When loop factories are configured, resolve the loop factory23302 # fixture early so that a factory variant change cascades cache23303 # invalidation before any async fixture checks its cache.23304 hook_caller = self.config.hook.pytest_asyncio_loop_factories23305 if hook_caller.get_hookimpls():23306 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23307> return super().setup()23308 ^^^^^^^^^^^^^^^2330923310/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23311_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23312nixbot/tests/conftest.py:33: in postgres_dsn23313 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23314 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23315/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23316 return next(self.gen)23317 ^^^^^^^^^^^^^^23318_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2331923320tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23321dbname = 'orchestrator'2332223323 @contextlib.contextmanager23324 def ephemeral_postgres(23325 tmp_path_factory: pytest.TempPathFactory, dbname: str23326 ) -> Iterator[str]:23327 """Throwaway Postgres on a unix socket with migrations applied."""23328 datadir = tmp_path_factory.mktemp("pgdata")23329 sockdir = tmp_path_factory.mktemp("pgsock")23330 subprocess.run( # noqa: S60323331 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23332 check=True,23333 capture_output=True,23334 )23335 proc = subprocess.Popen( # noqa: S60323336 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23337 stdout=subprocess.DEVNULL,23338 stderr=subprocess.DEVNULL,23339 )23340 try:23341 deadline = time.monotonic() + 3023342 while (23343 subprocess.run( # noqa: S60323344 ["pg_isready", "-h", str(sockdir), "-U", "test"],23345 check=False,23346 capture_output=True,23347 ).returncode23348 != 023349 ):23350 # The socket appears before recovery finishes; createdb would23351 # fail with "the database system is starting up".23352 if time.monotonic() > deadline:23353 msg = "postgres did not start"23354> raise RuntimeError(msg)23355E RuntimeError: postgres did not start2335623357nixbot/tests/support.py:319: RuntimeError23358____ ERROR at setup of test_reuse_with_missing_output_still_post_processes _____23359[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142336023361self = <Coroutine test_reuse_with_missing_output_still_post_processes>2336223363 def setup(self) -> None:23364 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"23365 if runner_fixture_id not in self.fixturenames:23366 self.fixturenames.append(runner_fixture_id)23367 # When loop factories are configured, resolve the loop factory23368 # fixture early so that a factory variant change cascades cache23369 # invalidation before any async fixture checks its cache.23370 hook_caller = self.config.hook.pytest_asyncio_loop_factories23371 if hook_caller.get_hookimpls():23372 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)23373> return super().setup()23374 ^^^^^^^^^^^^^^^2337523376/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 23377_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 23378nixbot/tests/conftest.py:33: in postgres_dsn23379 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:23380 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^23381/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__23382 return next(self.gen)23383 ^^^^^^^^^^^^^^23384_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2338523386tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/3/scratch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/p...atch/d22a12221cec2c5e/build/pytest-of-_tribuchetbld3/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')23387dbname = 'orchestrator'2338823389 @contextlib.contextmanager23390 def ephemeral_postgres(23391 tmp_path_factory: pytest.TempPathFactory, dbname: str23392 ) -> Iterator[str]:23393 """Throwaway Postgres on a unix socket with migrations applied."""23394 datadir = tmp_path_factory.mktemp("pgdata")23395 sockdir = tmp_path_factory.mktemp("pgsock")23396 subprocess.run( # noqa: S60323397 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],23398 check=True,23399 capture_output=True,23400 )23401 proc = subprocess.Popen( # noqa: S60323402 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],23403 stdout=subprocess.DEVNULL,23404 stderr=subprocess.DEVNULL,23405 )23406 try:23407 deadline = time.monotonic() + 3023408 while (23409 subprocess.run( # noqa: S60323410 ["pg_isready", "-h", str(sockdir), "-U", "test"],23411 check=False,23412 capture_output=True,23413 ).returncode23414 != 023415 ):23416 # The socket appears before recovery finishes; createdb would23417 # fail with "the database system is starting up".23418 if time.monotonic() > deadline:23419 msg = "postgres did not start"23420> raise RuntimeError(msg)23421E RuntimeError: postgres did not start2342223423nixbot/tests/support.py:319: RuntimeError23424=========================== short test summary info ============================23425ERROR nixbot/tests/test_cli.py::test_repo_list_and_toggle - RuntimeError: pos...23426ERROR nixbot/tests/test_cli.py::test_build_list_and_view - RuntimeError: post...23427ERROR nixbot/tests/test_cli.py::test_build_restart_cancel - RuntimeError: pos...23428ERROR nixbot/tests/test_cli.py::test_log_summary_attr_and_drv - RuntimeError:...23429ERROR nixbot/tests/test_cli.py::test_repo_and_build_inference - RuntimeError:...23430ERROR nixbot/tests/test_cli.py::test_auth_status - RuntimeError: postgres did...23431ERROR nixbot/tests/test_orchestrator.py::test_full_lifecycle - RuntimeError: ...23432ERROR nixbot/tests/test_orchestrator.py::test_failure_aggregation - RuntimeEr...23433ERROR nixbot/tests/test_orchestrator.py::test_tree_hash_reuse - RuntimeError:...23434ERROR nixbot/tests/test_control.py::test_control_buttons_hidden_without_permission23435ERROR nixbot/tests/test_recovery.py::test_resume_skips_terminal_attributes - ...23436ERROR nixbot/tests/test_control.py::test_admin_can_restart_and_cancel - Runti...23437ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_from_cancelled_build23438ERROR nixbot/tests/test_control.py::test_pr_author_can_control_own_pr - Runti...23439ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_distinct_per_effect23440ERROR nixbot/tests/test_recovery.py::test_settle_already_built - RuntimeError...23441ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_sanitizes_traversal23442ERROR nixbot/tests/test_control.py::test_repo_writer_can_control_without_admin_or_authorship23443ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_skipped_when_drvs_gone23444ERROR nixbot/tests/test_control.py::test_approve_pr_requires_writer_not_author23445ERROR nixbot/tests/test_recovery.py::test_retention_cleanup - RuntimeError: p...23446ERROR nixbot/tests/test_service.py::test_resolve_credential_path - RuntimeErr...23447ERROR nixbot/tests/test_orchestrator.py::test_main_push_promotes_reused_pr_build23448ERROR nixbot/tests/test_control.py::test_cancel_all_requires_admin - RuntimeE...23449ERROR nixbot/tests/test_service.py::test_build_service_accepts_asyncpg_dsn - ...23450ERROR nixbot/tests/test_recovery.py::test_resume_includes_interrupted_building_attributes23451ERROR nixbot/tests/test_orchestrator.py::test_merge_conflict_fails_build - Ru...23452ERROR nixbot/tests/test_control.py::test_cancel_all_cancels_pending_and_running_builds23453ERROR nixbot/tests/test_service.py::test_visibility_fetcher_and_cache_ttl_wired23454ERROR nixbot/tests/test_deliver.py::test_match_skip_and_run - RuntimeError: p...23455ERROR nixbot/tests/test_recovery.py::test_retention_skips_restarted_builds - ...23456ERROR nixbot/tests/test_control.py::test_cancel_all_button_admin_only - Runti...23457ERROR nixbot/tests/test_orchestrator.py::test_build_reuse_clears_pr_author_in_other_context23458ERROR nixbot/tests/test_service.py::test_aclose_cancels_in_flight_tasks - Run...23459ERROR nixbot/tests/test_control.py::test_csrf_cross_origin_rejected - Runtime...23460ERROR nixbot/tests/test_recovery.py::test_retention_ages_out_failed_caches - ...23461ERROR nixbot/tests/test_deliver.py::test_permission_denied_records_reason - R...23462ERROR nixbot/tests/test_web.py::test_html_error_pages - RuntimeError: postgre...23463ERROR nixbot/tests/test_orchestrator.py::test_effects_started_flag - RuntimeE...23464ERROR nixbot/tests/test_db.py::test_migrations_idempotent - RuntimeError: pos...23465ERROR nixbot/tests/test_forge.py::test_project_store_sync_and_legacy_import23466ERROR nixbot/tests/test_web.py::test_api_strips_ansi_from_errors - RuntimeErr...23467ERROR nixbot/tests/test_control.py::test_restart_single_attribute - RuntimeEr...23468ERROR nixbot/tests/test_service.py::test_pr_close_discards_queued_changes - R...23469ERROR nixbot/tests/test_deliver.py::test_modified_files_gate - RuntimeError: ...23470ERROR nixbot/tests/test_db.py::test_failed_migration_error_not_masked - Runti...23471ERROR nixbot/tests/test_orchestrator.py::test_aggregation_generation_monotonic23472ERROR nixbot/tests/test_web.py::test_homepage - RuntimeError: postgres did no...23473ERROR nixbot/tests/test_forge.py::test_legacy_import_runs_despite_pull_based_rows23474ERROR nixbot/tests/test_control.py::test_restart_unknown_attribute_is_404 - R...23475ERROR nixbot/tests/test_schedules.py::test_replace_schedules_preserves_last_run_for_unchanged_spec23476ERROR nixbot/tests/test_service.py::test_build_branches_gates_branch_pushes23477ERROR nixbot/tests/test_recovery.py::test_rerun_clears_stale_eval_warnings - ...23478ERROR nixbot/tests/test_deliver.py::test_forge_outage_is_retried - RuntimeErr...23479ERROR nixbot/tests/test_web.py::test_project_page_with_filters - RuntimeError...23480ERROR nixbot/tests/test_control.py::test_restart_attribute_with_special_chars_redirects_encoded23481ERROR nixbot/tests/test_db.py::test_edited_migration_rejected - RuntimeError:...23482ERROR nixbot/tests/test_orchestrator.py::test_internal_error_not_recorded_in_failed_build_cache23483ERROR nixbot/tests/test_web.py::test_status_badge_urls - RuntimeError: postgr...23484ERROR nixbot/tests/test_forge.py::test_legacy_import_scopes_topics_per_forge23485ERROR nixbot/tests/test_control.py::test_admin_project_toggle - RuntimeError:...23486ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_fail_on_recovery23487ERROR nixbot/tests/test_web.py::test_all_digit_branch_is_filterable - Runtime...23488ERROR nixbot/tests/test_schedules.py::test_replace_schedules_tolerates_duplicate_effect_names23489ERROR nixbot/tests/test_service.py::test_tag_push_builds_peeled_commit - Runt...23490ERROR nixbot/tests/test_deliver.py::test_forge_outage_gives_up - RuntimeError...23491ERROR nixbot/tests/test_orchestrator.py::test_log_path_attribute_name_sanitized23492ERROR nixbot/tests/test_db.py::test_catchup_migration_repairs_pre_0033_schema23493ERROR nixbot/tests/test_control.py::test_toggle_activates_newly_enabled_project23494ERROR nixbot/tests/test_visibility.py::test_anonymous_sees_public_only - Runt...23495ERROR nixbot/tests/test_web.py::test_build_page - RuntimeError: postgres did ...23496ERROR nixbot/tests/test_forge.py::test_prune_missing_disabled_projects - Runt...23497ERROR nixbot/tests/test_web.py::test_attribute_rows_fragment_paginates - Runt...23498ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[0]23499ERROR nixbot/tests/test_control.py::test_run_schedule - RuntimeError: postgre...23500ERROR nixbot/tests/test_schedules.py::test_store_roundtrip_and_due - RuntimeE...23501ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_sweep_spares_live_effects23502ERROR nixbot/tests/test_service.py::test_tag_push_waits_for_a_branch_to_build_its_commit23503ERROR nixbot/tests/test_visibility.py::test_unauthorized_user_sees_public_only23504ERROR nixbot/tests/test_deliver.py::test_lock_shared_with_push_effect_and_supersession23505ERROR nixbot/tests/test_orchestrator.py::test_cancel_interrupts_evaluation - ...23506ERROR nixbot/tests/test_cli_api.py::test_repos_and_builds - RuntimeError: pos...23507ERROR nixbot/tests/test_db.py::test_huge_attr_name_does_not_break_notify_trigger23508ERROR nixbot/tests/test_upload.py::test_chunk_args_splits_on_byte_limit - Run...23509ERROR nixbot/tests/test_cli.py::test_log_follow_finished_attr_falls_back_to_stored_log23510ERROR nixbot/tests/test_cli_api.py::test_finished_attrs_cursor - RuntimeError...23511ERROR nixbot/tests/test_control.py::test_schedules_are_listed_on_the_effects_page23512ERROR nixbot/tests/test_web.py::test_build_page_shows_eval_warning_groups - R...23513ERROR nixbot/tests/test_upload.py::test_parse_path_info_both_formats - Runtim...23514ERROR nixbot/tests/test_cli.py::test_log_effect_by_name_and_id - RuntimeError...23515ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[1]23516ERROR nixbot/tests/test_cli_api.py::test_control_requires_token - RuntimeErro...23517ERROR nixbot/tests/test_service.py::test_pr_approval_gate - RuntimeError: pos...23518ERROR nixbot/tests/test_cli.py::test_log_effect_is_not_shadowed_by_attributes23519ERROR nixbot/tests/test_forge.py::test_project_store_sync_skips_unchanged_rows23520ERROR nixbot/tests/test_schedules.py::test_due_effects_window_and_bad_spec - ...23521ERROR nixbot/tests/test_visibility.py::test_authorized_user_sees_private - Ru...23522ERROR nixbot/tests/test_control.py::test_repo_refresh - RuntimeError: postgre...23523ERROR nixbot/tests/test_web.py::test_build_page_shows_per_attribute_eval_warnings23524ERROR nixbot/tests/test_deliver.py::test_checkout_is_pr_head_without_token - ...23525ERROR nixbot/tests/test_work_queue.py::test_enqueue_dedupes_pending - Runtime...23526ERROR nixbot/tests/test_cli_api.py::test_enable_disable - RuntimeError: postg...23527ERROR nixbot/tests/test_visibility.py::test_admin_sees_everything - RuntimeEr...23528ERROR nixbot/tests/test_orchestrator.py::test_build_waiting_for_eval_slot_stays_pending23529ERROR nixbot/tests/test_db.py::test_schema_constraints - RuntimeError: postgr...23530ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[2]23531ERROR nixbot/tests/test_work_queue.py::test_claim_serializes_per_key - Runtim...23532ERROR nixbot/tests/test_schedules.py::test_run_recording_and_overview - Runti...23533ERROR nixbot/tests/test_control.py::test_api_enable_disable - RuntimeError: p...23534ERROR nixbot/tests/test_web.py::test_build_page_renders_ansi_in_error - Runti...23535ERROR nixbot/tests/test_cli_api.py::test_log_toc_and_text - RuntimeError: pos...23536ERROR nixbot/tests/test_forge.py::test_gitea_hook_registration - RuntimeError...23537ERROR nixbot/tests/test_visibility.py::test_admin_sees_disabled_repos_without_search23538ERROR nixbot/tests/test_work_queue.py::test_settle_interrupted_requeues - Run...23539ERROR nixbot/tests/test_control.py::test_api_restart_and_cancel - RuntimeErro...23540ERROR nixbot/tests/test_deliver.py::test_build_success_enqueues_delivery - Ru...23541ERROR nixbot/tests/test_service.py::test_pr_approval_disabled_by_default - Ru...23542ERROR nixbot/tests/test_cli_api.py::test_effect_run_text_and_stream - Runtime...23543ERROR nixbot/tests/test_db.py::test_check_run_store_round_trip - RuntimeError...23544ERROR nixbot/tests/test_web.py::test_running_build_shows_progress - RuntimeEr...23545ERROR nixbot/tests/test_upload.py::test_final_upload_reports_and_clears_queue23546ERROR nixbot/tests/test_visibility.py::test_non_admin_does_not_see_disabled_repos23547ERROR nixbot/tests/test_orchestrator.py::test_pending_attribute_rows_recorded_for_crash_recovery23548ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[3]23549ERROR nixbot/tests/test_control.py::test_api_token_lifecycle - RuntimeError: ...23550ERROR nixbot/tests/test_web.py::test_build_page_live_markers - RuntimeError: ...23551ERROR nixbot/tests/test_forge.py::test_gitlab_heads_carry_target_branch_base23552ERROR nixbot/tests/test_service.py::test_restart_gitlab_mr_build_fetches_mr_refs23553ERROR nixbot/tests/test_db.py::test_failed_status_store_component - RuntimeEr...23554ERROR nixbot/tests/test_visibility.py::test_api_token_sees_private - RuntimeE...23555ERROR nixbot/tests/test_deliver.py::test_comment_and_close_webhooks_deliver23556ERROR nixbot/tests/test_control.py::test_expired_api_tokens_pruned - RuntimeE...23557ERROR nixbot/tests/test_orchestrator.py::test_eval_warnings_null_when_empty23558ERROR nixbot/tests/test_upload.py::test_intermediates_batch_with_final_and_drop_invalid23559ERROR nixbot/tests/test_web.py::test_attribute_history - RuntimeError: postgr...23560ERROR nixbot/tests/test_visibility.py::test_admin_api_token_sees_private - Ru...23561ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[4]23562ERROR nixbot/tests/test_control.py::test_token_creation_with_expiry - Runtime...23563ERROR nixbot/tests/test_db.py::test_failed_build_cache_component - RuntimeErr...23564ERROR nixbot/tests/test_web.py::test_overview_ignores_pr_branches - RuntimeEr...23565ERROR nixbot/tests/test_forge.py::test_gitea_heads_encode_slashed_default_branch23566ERROR nixbot/tests/test_service.py::test_restart_eval_failed_build_reevaluates23567ERROR nixbot/tests/test_visibility.py::test_forge_repo_admins_can_toggle_their_repos23568ERROR nixbot/tests/test_deliver.py::test_close_after_merge_push_reused_build23569ERROR nixbot/tests/test_upload.py::test_stdin_mode - RuntimeError: postgres d...23570ERROR nixbot/tests/test_orchestrator.py::test_rerun_flips_stale_red_eval_status23571ERROR nixbot/tests/test_control.py::test_proxy_user_can_manage_api_tokens - R...23572ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[5]23573ERROR nixbot/tests/test_web.py::test_pending_build_shows_eval_blocker - Runti...23574ERROR nixbot/tests/test_visibility.py::test_forge_repo_writers_can_control_their_repos23575ERROR nixbot/tests/test_db.py::test_get_or_create_build_concurrent_no_duplicates23576ERROR nixbot/tests/test_control.py::test_bearer_token_cannot_manage_api_tokens23577ERROR nixbot/tests/test_service.py::test_restart_clears_stale_error_and_warnings23578ERROR nixbot/tests/test_deliver.py::test_build_finished_transitions - Runtime...23579ERROR nixbot/tests/test_visibility.py::test_fetch_errors_are_not_cached - Run...23580ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_failures_not_cached23581ERROR nixbot/tests/test_web.py::test_project_filter_escapes_like_wildcards - ...23582ERROR nixbot/tests/test_forge.py::test_reconcile_unbuilt_heads - RuntimeError...23583ERROR nixbot/tests/test_upload.py::test_pending_paths_survive_restart - Runti...23584ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[6]23585ERROR nixbot/tests/test_control.py::test_api_token_controls_build - RuntimeEr...23586ERROR nixbot/tests/test_web.py::test_page_out_of_range_does_not_error - Runti...23587ERROR nixbot/tests/test_visibility.py::test_access_cache_used - RuntimeError:...23588ERROR nixbot/tests/test_service.py::test_restart_unknown_attribute_is_a_noop23589ERROR nixbot/tests/test_upload.py::test_uploader_factory_picks_stream - Runti...23590ERROR nixbot/tests/test_db.py::test_commit_eval_result_atomic - RuntimeError:...23591ERROR nixbot/tests/test_orchestrator.py::test_gitlab_mr_fetches_merge_request_refs23592ERROR nixbot/tests/test_deliver.py::test_command_while_running_gets_notice - ...23593ERROR nixbot/tests/test_forge.py::test_gitea_watermark_stops_pagination - Run...23594ERROR nixbot/tests/test_web.py::test_activity_page - RuntimeError: postgres d...23595ERROR nixbot/tests/test_visibility.py::test_metrics_unauthenticated_no_private_names23596ERROR nixbot/tests/test_db_fuzz.py::test_concurrent_queries_do_not_deadlock[7]23597ERROR nixbot/tests/test_control.py::test_build_service_composition - RuntimeE...23598ERROR nixbot/tests/test_upload.py::test_stream_reports_per_path_and_clears_queue23599ERROR nixbot/tests/test_forge.py::test_gitlab_heads_filter_updated_after - Ru...23600ERROR nixbot/tests/test_web.py::test_activity_no_sentinel_on_exact_page - Run...23601ERROR nixbot/tests/test_db.py::test_cancelled_build_not_reused - RuntimeError...23602ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[github]23603ERROR nixbot/tests/test_deliver.py::test_other_command_does_not_supersede - R...23604ERROR nixbot/tests/test_visibility.py::test_configured_viewers_see_private - ...23605ERROR nixbot/tests/test_web.py::test_activity_rows_fragment_pagination - Runt...23606ERROR nixbot/tests/test_upload.py::test_stream_error_is_reported_with_message23607ERROR nixbot/tests/test_control.py::test_restart_removes_stale_logs - Runtime...23608ERROR nixbot/tests/test_forge.py::test_reconcile_watermark_store - RuntimeErr...23609ERROR nixbot/tests/test_web.py::test_project_rows_fragment_filters - RuntimeE...23610ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[gitlab]23611ERROR nixbot/tests/test_db.py::test_reuse_backfills_pr_fields - RuntimeError:...23612ERROR nixbot/tests/test_deliver.py::test_label_change_redelivers_pull_request23613ERROR nixbot/tests/test_web.py::test_metrics_are_gauges - RuntimeError: postg...23614ERROR nixbot/tests/test_control.py::test_restart_clears_failed_cache - Runtim...23615ERROR nixbot/tests/test_web.py::test_metrics_are_cached - RuntimeError: postg...23616ERROR nixbot/tests/test_upload.py::test_stream_child_crash_refeeds_pending - ...23617ERROR nixbot/tests/test_deliver.py::test_build_outcome_and_restart_leave_event_history23618ERROR nixbot/tests/test_db.py::test_reuse_by_other_pr_clears_both_identity_fields23619ERROR nixbot/tests/test_forge.py::test_register_repo_hook_without_admin_warns23620ERROR nixbot/tests/test_orchestrator.py::test_cancelled_build_reuse_rebuilds23621ERROR nixbot/tests/test_control.py::test_webhook_setup_shown_to_admin_only - ...23622ERROR nixbot/tests/test_web.py::test_static_urls_carry_content_version - Runt...23623ERROR nixbot/tests/test_control.py::test_webhook_secret_regeneration - Runtim...23624ERROR nixbot/tests/test_db.py::test_branch_push_takes_over_reused_pr_build - ...23625ERROR nixbot/tests/test_web.py::test_legacy_project_urls_redirect - RuntimeEr...23626ERROR nixbot/tests/test_forge.py::test_gitlab_hook_registration - RuntimeErro...23627ERROR nixbot/tests/test_upload.py::test_failure_reports_retries_and_gives_up23628ERROR nixbot/tests/test_visibility.py::test_api_token_inherits_login_groups23629ERROR nixbot/tests/test_control.py::test_retry_after_parsing - RuntimeError: ...23630ERROR nixbot/tests/test_deliver.py::test_restart_event_effect_reruns_with_stored_payload23631ERROR nixbot/tests/test_orchestrator.py::test_inflight_share_fans_out_final_status23632ERROR nixbot/tests/test_web.py::test_private_repo_public_badge_bypasses_session_visibility23633ERROR nixbot/tests/test_db.py::test_pr_does_not_capture_branch_push_build - R...23634ERROR nixbot/tests/test_control.py::test_work_retry_delay_honors_retry_after23635ERROR nixbot/tests/test_forge.py::test_register_repo_hook_500_with_403_in_body_raises23636ERROR nixbot/tests/test_web.py::test_legacy_redirect_hides_invisible_projects23637ERROR nixbot/tests/test_visibility.py::test_logout_invalidates_access_cache23638ERROR nixbot/tests/test_deliver.py::test_listing_failure_recorded_on_build - ...23639ERROR nixbot/tests/test_service.py::test_restart_failed_eval_attribute_reevaluates23640ERROR nixbot/tests/test_orchestrator.py::test_stale_event_does_not_supersede_newer_build23641ERROR nixbot/tests/test_control.py::test_report_retry - RuntimeError: postgre...23642ERROR nixbot/tests/test_web.py::test_legacy_redirect_404s_on_ambiguous_owner_name23643ERROR nixbot/tests/test_forge.py::test_gitlab_register_repo_hook_status_classification23644ERROR nixbot/tests/test_db.py::test_complete_attribute_preserves_eval_outputs23645ERROR nixbot/tests/test_web.py::test_health_and_static - RuntimeError: postgr...23646ERROR nixbot/tests/test_deliver.py::test_tag_runs_onpush_effects_with_tag - R...23647ERROR nixbot/tests/test_control.py::test_effect_item_setup_failure_settles_row23648ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_cleans_cancel_events23649ERROR nixbot/tests/test_web.py::test_404s - RuntimeError: postgres did not start23650ERROR nixbot/tests/test_control.py::test_restart_attribute_posts_pending - Ru...23651ERROR nixbot/tests/test_db.py::test_complete_attribute_marks_substituted_as_cached23652ERROR nixbot/tests/test_deliver.py::test_tag_waits_for_a_running_release - Ru...23653ERROR nixbot/tests/test_orchestrator.py::test_eval_settings_wired - RuntimeEr...23654ERROR nixbot/tests/test_deliver.py::test_tag_listing_failure_recorded_apart_from_build_effects23655ERROR nixbot/tests/test_control.py::test_recovery_reports_interrupted_effects23656ERROR nixbot/tests/test_db.py::test_complete_attribute_replaces_log_metadata23657ERROR nixbot/tests/test_service.py::test_interrupted_reeval_keeps_attribute_rows23658ERROR nixbot/tests/test_forge.py::test_gitea_legacy_hook_delete_failure_warns23659ERROR nixbot/tests/test_orchestrator.py::test_eval_netrc_withheld_from_pr_with_instance_wide_creds23660ERROR nixbot/tests/test_web.py::test_log_viewer_and_raw - RuntimeError: postg...23661ERROR nixbot/tests/test_forge.py::test_sync_tolerates_in_batch_duplicates - R...23662ERROR nixbot/tests/test_control.py::test_work_dispatch - RuntimeError: postgr...23663ERROR nixbot/tests/test_service.py::test_restart_cancelled_build_reschedules_attributes23664ERROR nixbot/tests/test_web.py::test_structured_log_endpoints - RuntimeError:...23665ERROR nixbot/tests/test_db.py::test_record_attributes_persists_pending_rows_with_outputs23666ERROR nixbot/tests/test_orchestrator.py::test_eval_gcroots_dir_removed_after_build23667ERROR nixbot/tests/test_web.py::test_structured_log_window_caps_huge_derivation23668ERROR nixbot/tests/test_control.py::test_restart_resets_effects - RuntimeErro...23669ERROR nixbot/tests/test_db.py::test_mark_attribute_building_does_not_resurrect_cancelled_rows23670ERROR nixbot/tests/test_service.py::test_restart_cancelled_mid_eval_reevaluates23671ERROR nixbot/tests/test_web.py::test_attr_named_dot_txt_not_shadowed_by_raw_route23672ERROR nixbot/tests/test_control.py::test_effects_restart_route - RuntimeError...23673ERROR nixbot/tests/test_orchestrator.py::test_effects_run_after_default_branch_success23674ERROR nixbot/tests/test_web.py::test_attr_names_with_special_characters - Run...23675ERROR nixbot/tests/test_control.py::test_single_effect_restart_route - Runtim...23676ERROR nixbot/tests/test_db.py::test_mark_attribute_building_sets_status_and_started_at23677ERROR nixbot/tests/test_service.py::test_restart_while_unwinding_waits_then_runs23678ERROR nixbot/tests/test_orchestrator.py::test_when_changed_reuses_the_last_success23679ERROR nixbot/tests/test_control.py::test_effect_cancel_route - RuntimeError: ...23680ERROR nixbot/tests/test_web.py::test_log_viewer_waits_for_queued_attribute - ...23681ERROR nixbot/tests/test_db.py::test_complete_attribute_if_unfinished_skips_terminal_rows23682ERROR nixbot/tests/test_control.py::test_webhook_panel_is_forge_aware - Runti...23683ERROR nixbot/tests/test_web.py::test_log_viewer_unavailable_for_logless_status23684ERROR nixbot/tests/test_service.py::test_restart_attribute_while_build_running23685ERROR nixbot/tests/test_orchestrator.py::test_when_changed_decides_when_the_lock_is_free23686ERROR nixbot/tests/test_control.py::test_api_attr_and_effects_control - Runti...23687ERROR nixbot/tests/test_web.py::test_eval_error_served_like_build_log - Runti...23688ERROR nixbot/tests/test_db.py::test_failed_build_cache_scoped_per_project - R...23689ERROR nixbot/tests/test_service.py::test_cancel_not_running_posts_forge_status23690ERROR nixbot/tests/test_web.py::test_api_projects_and_builds - RuntimeError: ...23691ERROR nixbot/tests/test_orchestrator.py::test_when_changed_ignores_failures_and_follows_a_restart23692ERROR nixbot/tests/test_db.py::test_eval_stats_lifecycle - RuntimeError: post...23693ERROR nixbot/tests/test_web.py::test_build_rows_link_refs - RuntimeError: pos...23694ERROR nixbot/tests/test_service.py::test_check_rerequested_dispatch - Runtime...23695ERROR nixbot/tests/test_orchestrator.py::test_pr_worktree_config_cannot_grant_effects23696ERROR nixbot/tests/test_web.py::test_attributes_sort_building_before_pending23697ERROR nixbot/tests/test_web.py::test_queue_sorts_active_before_pending - Runt...23698ERROR nixbot/tests/test_service.py::test_cancel_not_running_settles_attribute_rows23699ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_runs_effects_again23700ERROR nixbot/tests/test_web.py::test_queue_position_is_global_and_skips_running23701ERROR nixbot/tests/test_service.py::test_cancel_attribute_not_running_reaggregates_build23702ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_cancels_hung_effect23703ERROR nixbot/tests/test_web.py::test_openapi_docs - RuntimeError: postgres di...23704ERROR nixbot/tests/test_web.py::test_structured_live_stream - RuntimeError: p...23705ERROR nixbot/tests/test_service.py::test_pull_based_projects_synced_and_buildable23706ERROR nixbot/tests/test_orchestrator.py::test_cancel_hung_effect - RuntimeErr...23707ERROR nixbot/tests/test_web.py::test_drv_raw_serves_running_attribute - Runti...23708ERROR nixbot/tests/test_web.py::test_log_sse_stream_caps_history_backlog - Ru...23709ERROR nixbot/tests/test_service.py::test_topic_does_not_hard_filter_discovery23710ERROR nixbot/tests/test_orchestrator.py::test_rerun_single_effect - RuntimeEr...23711ERROR nixbot/tests/test_web.py::test_log_sse_stream_neutralizes_carriage_returns23712ERROR nixbot/tests/test_service.py::test_startup_reevaluates_interrupted_eval23713ERROR nixbot/tests/test_web.py::test_api_builds_commit_filter - RuntimeError:...23714ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_runs_effects - R...23715ERROR nixbot/tests/test_web.py::test_log_tail_param - RuntimeError: postgres ...23716ERROR nixbot/tests/test_service.py::test_rerun_of_interrupted_eval_reevaluates23717ERROR nixbot/tests/test_orchestrator.py::test_unsupported_system_attr_does_not_block_aggregation23718ERROR nixbot/tests/test_web.py::test_api_build_failures - RuntimeError: postg...23719ERROR nixbot/tests/test_web.py::test_api_build_failures_rejects_non_positive_tail23720ERROR nixbot/tests/test_service.py::test_rerun_resumes_building_rows_and_keeps_finished23721ERROR nixbot/tests/test_web.py::test_llms_txt - RuntimeError: postgres did no...23722ERROR nixbot/tests/test_service.py::test_rerun_reevaluates_when_drv_paths_were_garbage_collected23723ERROR nixbot/tests/test_web.py::test_event_broker_pushes_status_changes - Run...23724ERROR nixbot/tests/test_web.py::test_events_stream_coalesces_burst - RuntimeE...23725ERROR nixbot/tests/test_orchestrator.py::test_linked_context_reported_on_eval_failure23726ERROR nixbot/tests/test_service.py::test_reeval_failure_marks_build_failed - ...23727ERROR nixbot/tests/test_web.py::test_events_stream_refreshes_visibility - Run...23728ERROR nixbot/tests/test_web.py::test_attribute_search - RuntimeError: postgre...23729ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_settles_streamed_attributes23730ERROR nixbot/tests/test_service.py::test_gitlab_discovery_and_hook_registration23731ERROR nixbot/tests/test_web.py::test_build_page_shows_effects - RuntimeError:...23732ERROR nixbot/tests/test_service.py::test_health_serves_while_startup_blocks23733ERROR nixbot/tests/test_orchestrator.py::test_effect_rows_roundtrip - Runtime...23734ERROR nixbot/tests/test_web.py::test_build_page_shows_event_effects - Runtime...23735ERROR nixbot/tests/test_orchestrator.py::test_pending_effects_replace_skipped_rows23736ERROR nixbot/tests/test_orchestrator.py::test_effect_items_resume_only_pending23737ERROR nixbot/tests/test_web.py::test_build_page_groups_dependency_checks_apart23738ERROR nixbot/tests/test_orchestrator.py::test_effect_crash_settles_the_row - ...23739ERROR nixbot/tests/test_web.py::test_effect_log_raw_text - RuntimeError: post...23740ERROR nixbot/tests/test_web.py::test_effect_log_viewer_status_icon - RuntimeE...23741ERROR nixbot/tests/test_orchestrator.py::test_concurrent_effects_use_independent_worktrees23742ERROR nixbot/tests/test_web.py::test_effect_changes_notify_build_events - Run...23743ERROR nixbot/tests/test_web.py::test_effects_state_api - RuntimeError: postgr...23744ERROR nixbot/tests/test_orchestrator.py::test_locked_effect_gets_shared_dedup_key23745ERROR nixbot/tests/test_web.py::test_pr_comment_api - RuntimeError: postgres ...23746ERROR nixbot/tests/test_orchestrator.py::test_effect_item_not_claimable_until_dep_settles23747ERROR nixbot/tests/test_web.py::test_workload_identity_api - RuntimeError: po...23748ERROR nixbot/tests/test_web.py::test_logout_revokes_session_cookie - RuntimeE...23749ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_failure_skips_dependent23750ERROR nixbot/tests/test_web.py::test_gitlab_nested_group_routes - RuntimeErro...23751ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_renders_ansi - Runt...23752ERROR nixbot/tests/test_orchestrator.py::test_lock_serializes_builds_without_interleaving23753ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_cross_project_40423754ERROR nixbot/tests/test_web.py::test_scheduled_run_log_unavailable_placeholder23755ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_cycle_fails_discovery23756ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_waiting_before_log23757ERROR nixbot/tests/test_orchestrator.py::test_failed_effect_reports_failure_status23758ERROR nixbot/tests/test_web.py::test_project_tabs_link_builds_and_effects - R...23759ERROR nixbot/tests/test_web.py::test_failing_badge_counts_effects_whose_latest_run_failed23760ERROR nixbot/tests/test_orchestrator.py::test_post_process_error_does_not_wedge_build23761ERROR nixbot/tests/test_web.py::test_old_schedule_history_url_redirects - Run...23762ERROR nixbot/tests/test_web.py::test_project_effects_filter_and_paginate - Ru...23763ERROR nixbot/tests/test_orchestrator.py::test_unexpected_eval_path_error_settles_build23764ERROR nixbot/tests/test_web.py::test_scheduled_run_stream_replays_history - R...23765ERROR nixbot/tests/test_web.py::test_scheduled_run_notify_build_events - Runt...23766ERROR nixbot/tests/test_orchestrator.py::test_reuse_empty_succeeded_build_posts_eval_success23767ERROR nixbot/tests/test_web.py::test_api_log_toc_and_text - RuntimeError: pos...23768ERROR nixbot/tests/test_orchestrator.py::test_stale_event_reusing_old_build_does_not_cancel_newer23769ERROR nixbot/tests/test_web.py::test_api_log_toc_flat_log_fallback - RuntimeE...23770ERROR nixbot/tests/test_orchestrator.py::test_reuse_for_default_branch_push_runs_effects23771ERROR nixbot/tests/test_web.py::test_api_log_stream_json - RuntimeError: post...23772ERROR nixbot/tests/test_web.py::test_build_eval_stats_surface - RuntimeError:...23773ERROR nixbot/tests/test_orchestrator.py::test_tag_reusing_deployed_build_delivers_its_own_effects23774ERROR nixbot/tests/test_orchestrator.py::test_tag_attached_to_in_flight_build_delivers_on_success23775ERROR nixbot/tests/test_orchestrator.py::test_restart_of_gated_build_settles_effect_rows23776ERROR nixbot/tests/test_orchestrator.py::test_restart_build_drops_queued_effect_items23777ERROR nixbot/tests/test_orchestrator.py::test_restart_effects_after_pr_attach_keeps_effects_ref23778ERROR nixbot/tests/test_orchestrator.py::test_gated_restart_then_allowed_reuse_deploys23779ERROR nixbot/tests/test_orchestrator.py::test_rerun_single_effect_takes_pending_dependents23780ERROR nixbot/tests/test_orchestrator.py::test_reuse_replays_effect_statuses_to_new_commit23781ERROR nixbot/tests/test_orchestrator.py::test_attach_to_already_terminal_build_replays_status23782ERROR nixbot/tests/test_orchestrator.py::test_cancel_during_eval_resolves_linked_eval_contexts23783ERROR nixbot/tests/test_orchestrator.py::test_effect_log_does_not_collide_with_attribute_log23784ERROR nixbot/tests/test_orchestrator.py::test_post_process_paths_are_forge_scoped23785ERROR nixbot/tests/test_orchestrator.py::test_effects_phase_error_keeps_succeeded_build23786ERROR nixbot/tests/test_orchestrator.py::test_reuse_post_process_error_still_reports_status23787ERROR nixbot/tests/test_orchestrator.py::test_reuse_with_missing_output_still_post_processes23788================= 477 passed, 29 skipped, 363 errors in 40.48s =================