nixbot

builds

failed python3.14-nixbot-tests checks.aarch64-darwin.nixbot-tests · build #441 · 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/dcq6ixv9iqw5cgsqn7gjdiwg6zwy3nln-nixbot18source root is nixbot19setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "nixbot/pyproject.toml"
configurePhase
20no configure script, doing nothing
buildPhase
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 pypaBuildPhase
pythonRuntimeDepsCheckHook
29Executing pythonRuntimeDepsCheck30Checking runtime dependencies for nixbot-0.0.1-py3-none-any.whl31Finished executing pythonRuntimeDepsCheck
installPhase
32Executing pypaInstallPhase33Successfully installed nixbot-0.0.1-py3-none-any.whl34Finished executing pypaInstallPhase
pythonOutputDistPhase
35Executing pythonOutputDistPhase36Finished executing pythonOutputDistPhase
fixupPhase
37checking for references to /private/var/tb/5/scratch/26e0836fe0fc3254/build/ in /nix/store/mvkip5jamc8wczcd0phfil9p691vpgmj-python3.14-nixbot-tests...38patching script interpreter paths in /nix/store/mvkip5jamc8wczcd0phfil9p691vpgmj-python3.14-nixbot-tests39stripping (with command strip and flags -S) in /nix/store/mvkip5jamc8wczcd0phfil9p691vpgmj-python3.14-nixbot-tests/lib /nix/store/mvkip5jamc8wczcd0phfil9p691vpgmj-python3.14-nixbot-tests/bin40checking for references to /private/var/tb/5/scratch/26e0836fe0fc3254/build/ in /nix/store/dzja3gq4y865snx7wb5hhf307ix62znm-python3.14-nixbot-tests-dist...41patching script interpreter paths in /nix/store/dzja3gq4y865snx7wb5hhf307ix62znm-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/mvkip5jamc8wczcd0phfil9p691vpgmj-python3.14-nixbot-tests/bin/nixbot'...44Executing pythonRemoveTestsDir45Finished executing pythonRemoveTestsDir
installCheckPhase
46no Makefile or custom installCheckPhase, doing nothing
pythonImportsCheckPhase
47Executing pythonImportsCheckPhase
pytestCheckPhase
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/5/scratch/26e0836fe0fc3254/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 [862 items]112113..........sssssssssss..........................sssssssss................ [ 8%]114..................................s..................................... [ 16%]115........................................................................ [ 25%]116........................................................................ [ 33%]117...............ssss......................................s.............. [ 41%]118........................................................................ [ 50%]119........................s......EEEEEEEEEEEEEE.EE...EE.EE....sEE.EEEEEEEE [ 58%]120EEEEE.EEE.E.EEEEEEEEEEEEEEEEEEEEEEEEEEEEE..EEEEEEEEEEEEEE.EEEEEEE..E..EE [ 66%]121E..EEEEEEEE.EEEEEE.EEEEEE.EEEEEEEE.EE.EEEEEE........EEEEEEEEEEEEEEEEEEEE [ 75%]122EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEs.EEEEEEEEEE.EEEEEEEEEEE [ 83%]123EEEEEEEEEEEE.EEEEEEEEEEEEEEEE.E.EEEEEEEEEEEE.EEEEEEEEEEEEEEEEEEEEEEEEEEE [ 91%]124EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [100%]125==================================== ERRORS ====================================126______________ ERROR at setup of test_anonymous_sees_public_only _______________127[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14128129fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>130request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>131132 @pytest.hookimpl(wrapper=True)133 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:134 if (135 fixturedef.argname == "event_loop_policy"136 and fixturedef.func.__module__ != __name__137 ):138 warnings.warn(139 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),140 )141 asyncio_mode = _get_asyncio_mode(request.config)142 if not _is_asyncio_fixture_function(fixturedef.func):143 if asyncio_mode == Mode.STRICT:144 # Ignore async fixtures without explicit asyncio mark in strict mode145 # This applies to pytest_trio fixtures, for example146 return (yield)147 if not _is_coroutine_or_asyncgen(fixturedef.func):148> return (yield)149 ^^^^^150151/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 152_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 153nixbot/tests/conftest.py:33: in postgres_dsn154 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:155 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^156/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__157 return next(self.gen)158 ^^^^^^^^^^^^^^159_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 160161tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')162dbname = 'visibility'163164 @contextlib.contextmanager165 def ephemeral_postgres(166 tmp_path_factory: pytest.TempPathFactory, dbname: str167 ) -> Iterator[str]:168 """Throwaway Postgres on a unix socket with migrations applied."""169 datadir = tmp_path_factory.mktemp("pgdata")170 sockdir = tmp_path_factory.mktemp("pgsock")171 subprocess.run( # noqa: S603172 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],173 check=True,174 capture_output=True,175 )176 proc = subprocess.Popen( # noqa: S603177 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],178 stdout=subprocess.DEVNULL,179 stderr=subprocess.DEVNULL,180 )181 try:182 deadline = time.monotonic() + 30183 while (184 subprocess.run( # noqa: S603185 ["pg_isready", "-h", str(sockdir), "-U", "test"],186 check=False,187 capture_output=True,188 ).returncode189 != 0190 ):191 # The socket appears before recovery finishes; createdb would192 # fail with "the database system is starting up".193 if time.monotonic() > deadline:194 msg = "postgres did not start"195> raise RuntimeError(msg)196E RuntimeError: postgres did not start197198nixbot/tests/support.py:319: RuntimeError199__________ ERROR at setup of test_unauthorized_user_sees_public_only ___________200[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14201202request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>203tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')204205 @pytest.fixture(scope="module")206 def postgres_dsn(207 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory208 ) -> Iterator[str]:209 if shutil.which("initdb") is None:210 pytest.skip("postgresql not available")211 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")212> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:213 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^214215nixbot/tests/conftest.py:33: 216_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 217/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__218 return next(self.gen)219 ^^^^^^^^^^^^^^220_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 221222tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')223dbname = 'visibility'224225 @contextlib.contextmanager226 def ephemeral_postgres(227 tmp_path_factory: pytest.TempPathFactory, dbname: str228 ) -> Iterator[str]:229 """Throwaway Postgres on a unix socket with migrations applied."""230 datadir = tmp_path_factory.mktemp("pgdata")231 sockdir = tmp_path_factory.mktemp("pgsock")232 subprocess.run( # noqa: S603233 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],234 check=True,235 capture_output=True,236 )237 proc = subprocess.Popen( # noqa: S603238 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],239 stdout=subprocess.DEVNULL,240 stderr=subprocess.DEVNULL,241 )242 try:243 deadline = time.monotonic() + 30244 while (245 subprocess.run( # noqa: S603246 ["pg_isready", "-h", str(sockdir), "-U", "test"],247 check=False,248 capture_output=True,249 ).returncode250 != 0251 ):252 # The socket appears before recovery finishes; createdb would253 # fail with "the database system is starting up".254 if time.monotonic() > deadline:255 msg = "postgres did not start"256> raise RuntimeError(msg)257E RuntimeError: postgres did not start258259nixbot/tests/support.py:319: RuntimeError260_____________ ERROR at setup of test_authorized_user_sees_private ______________261[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14262263request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>264tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')265266 @pytest.fixture(scope="module")267 def postgres_dsn(268 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory269 ) -> Iterator[str]:270 if shutil.which("initdb") is None:271 pytest.skip("postgresql not available")272 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")273> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:274 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^275276nixbot/tests/conftest.py:33: 277_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 278/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__279 return next(self.gen)280 ^^^^^^^^^^^^^^281_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 282283tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')284dbname = 'visibility'285286 @contextlib.contextmanager287 def ephemeral_postgres(288 tmp_path_factory: pytest.TempPathFactory, dbname: str289 ) -> Iterator[str]:290 """Throwaway Postgres on a unix socket with migrations applied."""291 datadir = tmp_path_factory.mktemp("pgdata")292 sockdir = tmp_path_factory.mktemp("pgsock")293 subprocess.run( # noqa: S603294 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],295 check=True,296 capture_output=True,297 )298 proc = subprocess.Popen( # noqa: S603299 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],300 stdout=subprocess.DEVNULL,301 stderr=subprocess.DEVNULL,302 )303 try:304 deadline = time.monotonic() + 30305 while (306 subprocess.run( # noqa: S603307 ["pg_isready", "-h", str(sockdir), "-U", "test"],308 check=False,309 capture_output=True,310 ).returncode311 != 0312 ):313 # The socket appears before recovery finishes; createdb would314 # fail with "the database system is starting up".315 if time.monotonic() > deadline:316 msg = "postgres did not start"317> raise RuntimeError(msg)318E RuntimeError: postgres did not start319320nixbot/tests/support.py:319: RuntimeError321_________________ ERROR at setup of test_admin_sees_everything _________________322[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14323324request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>325tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')326327 @pytest.fixture(scope="module")328 def postgres_dsn(329 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory330 ) -> Iterator[str]:331 if shutil.which("initdb") is None:332 pytest.skip("postgresql not available")333 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")334> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:335 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^336337nixbot/tests/conftest.py:33: 338_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 339/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__340 return next(self.gen)341 ^^^^^^^^^^^^^^342_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 343344tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')345dbname = 'visibility'346347 @contextlib.contextmanager348 def ephemeral_postgres(349 tmp_path_factory: pytest.TempPathFactory, dbname: str350 ) -> Iterator[str]:351 """Throwaway Postgres on a unix socket with migrations applied."""352 datadir = tmp_path_factory.mktemp("pgdata")353 sockdir = tmp_path_factory.mktemp("pgsock")354 subprocess.run( # noqa: S603355 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],356 check=True,357 capture_output=True,358 )359 proc = subprocess.Popen( # noqa: S603360 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],361 stdout=subprocess.DEVNULL,362 stderr=subprocess.DEVNULL,363 )364 try:365 deadline = time.monotonic() + 30366 while (367 subprocess.run( # noqa: S603368 ["pg_isready", "-h", str(sockdir), "-U", "test"],369 check=False,370 capture_output=True,371 ).returncode372 != 0373 ):374 # The socket appears before recovery finishes; createdb would375 # fail with "the database system is starting up".376 if time.monotonic() > deadline:377 msg = "postgres did not start"378> raise RuntimeError(msg)379E RuntimeError: postgres did not start380381nixbot/tests/support.py:319: RuntimeError382_______ ERROR at setup of test_admin_sees_disabled_repos_without_search ________383[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14384385request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>386tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')387388 @pytest.fixture(scope="module")389 def postgres_dsn(390 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory391 ) -> Iterator[str]:392 if shutil.which("initdb") is None:393 pytest.skip("postgresql not available")394 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")395> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:396 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^397398nixbot/tests/conftest.py:33: 399_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 400/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__401 return next(self.gen)402 ^^^^^^^^^^^^^^403_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 404405tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')406dbname = 'visibility'407408 @contextlib.contextmanager409 def ephemeral_postgres(410 tmp_path_factory: pytest.TempPathFactory, dbname: str411 ) -> Iterator[str]:412 """Throwaway Postgres on a unix socket with migrations applied."""413 datadir = tmp_path_factory.mktemp("pgdata")414 sockdir = tmp_path_factory.mktemp("pgsock")415 subprocess.run( # noqa: S603416 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],417 check=True,418 capture_output=True,419 )420 proc = subprocess.Popen( # noqa: S603421 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],422 stdout=subprocess.DEVNULL,423 stderr=subprocess.DEVNULL,424 )425 try:426 deadline = time.monotonic() + 30427 while (428 subprocess.run( # noqa: S603429 ["pg_isready", "-h", str(sockdir), "-U", "test"],430 check=False,431 capture_output=True,432 ).returncode433 != 0434 ):435 # The socket appears before recovery finishes; createdb would436 # fail with "the database system is starting up".437 if time.monotonic() > deadline:438 msg = "postgres did not start"439> raise RuntimeError(msg)440E RuntimeError: postgres did not start441442nixbot/tests/support.py:319: RuntimeError443_________ ERROR at setup of test_non_admin_does_not_see_disabled_repos _________444[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14445446request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>447tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')448449 @pytest.fixture(scope="module")450 def postgres_dsn(451 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory452 ) -> Iterator[str]:453 if shutil.which("initdb") is None:454 pytest.skip("postgresql not available")455 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")456> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:457 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^458459nixbot/tests/conftest.py:33: 460_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 461/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__462 return next(self.gen)463 ^^^^^^^^^^^^^^464_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 465466tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')467dbname = 'visibility'468469 @contextlib.contextmanager470 def ephemeral_postgres(471 tmp_path_factory: pytest.TempPathFactory, dbname: str472 ) -> Iterator[str]:473 """Throwaway Postgres on a unix socket with migrations applied."""474 datadir = tmp_path_factory.mktemp("pgdata")475 sockdir = tmp_path_factory.mktemp("pgsock")476 subprocess.run( # noqa: S603477 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],478 check=True,479 capture_output=True,480 )481 proc = subprocess.Popen( # noqa: S603482 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],483 stdout=subprocess.DEVNULL,484 stderr=subprocess.DEVNULL,485 )486 try:487 deadline = time.monotonic() + 30488 while (489 subprocess.run( # noqa: S603490 ["pg_isready", "-h", str(sockdir), "-U", "test"],491 check=False,492 capture_output=True,493 ).returncode494 != 0495 ):496 # The socket appears before recovery finishes; createdb would497 # fail with "the database system is starting up".498 if time.monotonic() > deadline:499 msg = "postgres did not start"500> raise RuntimeError(msg)501E RuntimeError: postgres did not start502503nixbot/tests/support.py:319: RuntimeError504________________ ERROR at setup of test_api_token_sees_private _________________505[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14506507request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>508tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')509510 @pytest.fixture(scope="module")511 def postgres_dsn(512 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory513 ) -> Iterator[str]:514 if shutil.which("initdb") is None:515 pytest.skip("postgresql not available")516 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")517> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:518 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^519520nixbot/tests/conftest.py:33: 521_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 522/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__523 return next(self.gen)524 ^^^^^^^^^^^^^^525_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 526527tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')528dbname = 'visibility'529530 @contextlib.contextmanager531 def ephemeral_postgres(532 tmp_path_factory: pytest.TempPathFactory, dbname: str533 ) -> Iterator[str]:534 """Throwaway Postgres on a unix socket with migrations applied."""535 datadir = tmp_path_factory.mktemp("pgdata")536 sockdir = tmp_path_factory.mktemp("pgsock")537 subprocess.run( # noqa: S603538 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],539 check=True,540 capture_output=True,541 )542 proc = subprocess.Popen( # noqa: S603543 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],544 stdout=subprocess.DEVNULL,545 stderr=subprocess.DEVNULL,546 )547 try:548 deadline = time.monotonic() + 30549 while (550 subprocess.run( # noqa: S603551 ["pg_isready", "-h", str(sockdir), "-U", "test"],552 check=False,553 capture_output=True,554 ).returncode555 != 0556 ):557 # The socket appears before recovery finishes; createdb would558 # fail with "the database system is starting up".559 if time.monotonic() > deadline:560 msg = "postgres did not start"561> raise RuntimeError(msg)562E RuntimeError: postgres did not start563564nixbot/tests/support.py:319: RuntimeError565_____________ ERROR at setup of test_admin_api_token_sees_private ______________566[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14567568request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>569tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')570571 @pytest.fixture(scope="module")572 def postgres_dsn(573 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory574 ) -> Iterator[str]:575 if shutil.which("initdb") is None:576 pytest.skip("postgresql not available")577 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")578> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:579 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^580581nixbot/tests/conftest.py:33: 582_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 583/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__584 return next(self.gen)585 ^^^^^^^^^^^^^^586_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 587588tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')589dbname = 'visibility'590591 @contextlib.contextmanager592 def ephemeral_postgres(593 tmp_path_factory: pytest.TempPathFactory, dbname: str594 ) -> Iterator[str]:595 """Throwaway Postgres on a unix socket with migrations applied."""596 datadir = tmp_path_factory.mktemp("pgdata")597 sockdir = tmp_path_factory.mktemp("pgsock")598 subprocess.run( # noqa: S603599 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],600 check=True,601 capture_output=True,602 )603 proc = subprocess.Popen( # noqa: S603604 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],605 stdout=subprocess.DEVNULL,606 stderr=subprocess.DEVNULL,607 )608 try:609 deadline = time.monotonic() + 30610 while (611 subprocess.run( # noqa: S603612 ["pg_isready", "-h", str(sockdir), "-U", "test"],613 check=False,614 capture_output=True,615 ).returncode616 != 0617 ):618 # The socket appears before recovery finishes; createdb would619 # fail with "the database system is starting up".620 if time.monotonic() > deadline:621 msg = "postgres did not start"622> raise RuntimeError(msg)623E RuntimeError: postgres did not start624625nixbot/tests/support.py:319: RuntimeError626_______ ERROR at setup of test_forge_repo_admins_can_toggle_their_repos ________627[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14628629request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>630tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')631632 @pytest.fixture(scope="module")633 def postgres_dsn(634 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory635 ) -> Iterator[str]:636 if shutil.which("initdb") is None:637 pytest.skip("postgresql not available")638 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")639> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:640 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^641642nixbot/tests/conftest.py:33: 643_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 644/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__645 return next(self.gen)646 ^^^^^^^^^^^^^^647_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 648649tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')650dbname = 'visibility'651652 @contextlib.contextmanager653 def ephemeral_postgres(654 tmp_path_factory: pytest.TempPathFactory, dbname: str655 ) -> Iterator[str]:656 """Throwaway Postgres on a unix socket with migrations applied."""657 datadir = tmp_path_factory.mktemp("pgdata")658 sockdir = tmp_path_factory.mktemp("pgsock")659 subprocess.run( # noqa: S603660 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],661 check=True,662 capture_output=True,663 )664 proc = subprocess.Popen( # noqa: S603665 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],666 stdout=subprocess.DEVNULL,667 stderr=subprocess.DEVNULL,668 )669 try:670 deadline = time.monotonic() + 30671 while (672 subprocess.run( # noqa: S603673 ["pg_isready", "-h", str(sockdir), "-U", "test"],674 check=False,675 capture_output=True,676 ).returncode677 != 0678 ):679 # The socket appears before recovery finishes; createdb would680 # fail with "the database system is starting up".681 if time.monotonic() > deadline:682 msg = "postgres did not start"683> raise RuntimeError(msg)684E RuntimeError: postgres did not start685686nixbot/tests/support.py:319: RuntimeError687___________ ERROR at setup of test_resume_skips_terminal_attributes ____________688[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14689690self = <Coroutine test_resume_skips_terminal_attributes>691692 def setup(self) -> None:693 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"694 if runner_fixture_id not in self.fixturenames:695 self.fixturenames.append(runner_fixture_id)696 # When loop factories are configured, resolve the loop factory697 # fixture early so that a factory variant change cascades cache698 # invalidation before any async fixture checks its cache.699 hook_caller = self.config.hook.pytest_asyncio_loop_factories700 if hook_caller.get_hookimpls():701 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)702> return super().setup()703 ^^^^^^^^^^^^^^^704705/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 706_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 707/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: in pytest_fixture_setup708 return (yield)709 ^^^^^710nixbot/tests/conftest.py:33: in postgres_dsn711 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:712 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^713/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__714 return next(self.gen)715 ^^^^^^^^^^^^^^716_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 717718tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')719dbname = 'recovery'720721 @contextlib.contextmanager722 def ephemeral_postgres(723 tmp_path_factory: pytest.TempPathFactory, dbname: str724 ) -> Iterator[str]:725 """Throwaway Postgres on a unix socket with migrations applied."""726 datadir = tmp_path_factory.mktemp("pgdata")727 sockdir = tmp_path_factory.mktemp("pgsock")728 subprocess.run( # noqa: S603729 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],730 check=True,731 capture_output=True,732 )733 proc = subprocess.Popen( # noqa: S603734 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],735 stdout=subprocess.DEVNULL,736 stderr=subprocess.DEVNULL,737 )738 try:739 deadline = time.monotonic() + 30740 while (741 subprocess.run( # noqa: S603742 ["pg_isready", "-h", str(sockdir), "-U", "test"],743 check=False,744 capture_output=True,745 ).returncode746 != 0747 ):748 # The socket appears before recovery finishes; createdb would749 # fail with "the database system is starting up".750 if time.monotonic() > deadline:751 msg = "postgres did not start"752> raise RuntimeError(msg)753E RuntimeError: postgres did not start754755nixbot/tests/support.py:319: RuntimeError756______ ERROR at setup of test_forge_repo_writers_can_control_their_repos _______757[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14758759request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>760tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')761762 @pytest.fixture(scope="module")763 def postgres_dsn(764 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory765 ) -> Iterator[str]:766 if shutil.which("initdb") is None:767 pytest.skip("postgresql not available")768 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")769> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:770 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^771772nixbot/tests/conftest.py:33: 773_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 774/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__775 return next(self.gen)776 ^^^^^^^^^^^^^^777_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 778779tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')780dbname = 'visibility'781782 @contextlib.contextmanager783 def ephemeral_postgres(784 tmp_path_factory: pytest.TempPathFactory, dbname: str785 ) -> Iterator[str]:786 """Throwaway Postgres on a unix socket with migrations applied."""787 datadir = tmp_path_factory.mktemp("pgdata")788 sockdir = tmp_path_factory.mktemp("pgsock")789 subprocess.run( # noqa: S603790 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],791 check=True,792 capture_output=True,793 )794 proc = subprocess.Popen( # noqa: S603795 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],796 stdout=subprocess.DEVNULL,797 stderr=subprocess.DEVNULL,798 )799 try:800 deadline = time.monotonic() + 30801 while (802 subprocess.run( # noqa: S603803 ["pg_isready", "-h", str(sockdir), "-U", "test"],804 check=False,805 capture_output=True,806 ).returncode807 != 0808 ):809 # The socket appears before recovery finishes; createdb would810 # fail with "the database system is starting up".811 if time.monotonic() > deadline:812 msg = "postgres did not start"813> raise RuntimeError(msg)814E RuntimeError: postgres did not start815816nixbot/tests/support.py:319: RuntimeError817______________ ERROR at setup of test_fetch_errors_are_not_cached ______________818[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14819820request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>821tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')822823 @pytest.fixture(scope="module")824 def postgres_dsn(825 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory826 ) -> Iterator[str]:827 if shutil.which("initdb") is None:828 pytest.skip("postgresql not available")829 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")830> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:831 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^832833nixbot/tests/conftest.py:33: 834_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 835/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__836 return next(self.gen)837 ^^^^^^^^^^^^^^838_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 839840tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')841dbname = 'visibility'842843 @contextlib.contextmanager844 def ephemeral_postgres(845 tmp_path_factory: pytest.TempPathFactory, dbname: str846 ) -> Iterator[str]:847 """Throwaway Postgres on a unix socket with migrations applied."""848 datadir = tmp_path_factory.mktemp("pgdata")849 sockdir = tmp_path_factory.mktemp("pgsock")850 subprocess.run( # noqa: S603851 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],852 check=True,853 capture_output=True,854 )855 proc = subprocess.Popen( # noqa: S603856 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],857 stdout=subprocess.DEVNULL,858 stderr=subprocess.DEVNULL,859 )860 try:861 deadline = time.monotonic() + 30862 while (863 subprocess.run( # noqa: S603864 ["pg_isready", "-h", str(sockdir), "-U", "test"],865 check=False,866 capture_output=True,867 ).returncode868 != 0869 ):870 # The socket appears before recovery finishes; createdb would871 # fail with "the database system is starting up".872 if time.monotonic() > deadline:873 msg = "postgres did not start"874> raise RuntimeError(msg)875E RuntimeError: postgres did not start876877nixbot/tests/support.py:319: RuntimeError878_________________ ERROR at setup of test_settle_already_built __________________879[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14880881self = <Coroutine test_settle_already_built>882883 def setup(self) -> None:884 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"885 if runner_fixture_id not in self.fixturenames:886 self.fixturenames.append(runner_fixture_id)887 # When loop factories are configured, resolve the loop factory888 # fixture early so that a factory variant change cascades cache889 # invalidation before any async fixture checks its cache.890 hook_caller = self.config.hook.pytest_asyncio_loop_factories891 if hook_caller.get_hookimpls():892 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)893> return super().setup()894 ^^^^^^^^^^^^^^^895896/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 897_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 898nixbot/tests/conftest.py:33: in postgres_dsn899 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:900 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^901/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__902 return next(self.gen)903 ^^^^^^^^^^^^^^904_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 905906tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')907dbname = 'recovery'908909 @contextlib.contextmanager910 def ephemeral_postgres(911 tmp_path_factory: pytest.TempPathFactory, dbname: str912 ) -> Iterator[str]:913 """Throwaway Postgres on a unix socket with migrations applied."""914 datadir = tmp_path_factory.mktemp("pgdata")915 sockdir = tmp_path_factory.mktemp("pgsock")916 subprocess.run( # noqa: S603917 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],918 check=True,919 capture_output=True,920 )921 proc = subprocess.Popen( # noqa: S603922 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],923 stdout=subprocess.DEVNULL,924 stderr=subprocess.DEVNULL,925 )926 try:927 deadline = time.monotonic() + 30928 while (929 subprocess.run( # noqa: S603930 ["pg_isready", "-h", str(sockdir), "-U", "test"],931 check=False,932 capture_output=True,933 ).returncode934 != 0935 ):936 # The socket appears before recovery finishes; createdb would937 # fail with "the database system is starting up".938 if time.monotonic() > deadline:939 msg = "postgres did not start"940> raise RuntimeError(msg)941E RuntimeError: postgres did not start942943nixbot/tests/support.py:319: RuntimeError944___________________ ERROR at setup of test_access_cache_used ___________________945[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.14946947request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>948tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')949950 @pytest.fixture(scope="module")951 def postgres_dsn(952 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory953 ) -> Iterator[str]:954 if shutil.which("initdb") is None:955 pytest.skip("postgresql not available")956 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")957> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:958 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^959960nixbot/tests/conftest.py:33: 961_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 962/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__963 return next(self.gen)964 ^^^^^^^^^^^^^^965_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 966967tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')968dbname = 'visibility'969970 @contextlib.contextmanager971 def ephemeral_postgres(972 tmp_path_factory: pytest.TempPathFactory, dbname: str973 ) -> Iterator[str]:974 """Throwaway Postgres on a unix socket with migrations applied."""975 datadir = tmp_path_factory.mktemp("pgdata")976 sockdir = tmp_path_factory.mktemp("pgsock")977 subprocess.run( # noqa: S603978 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],979 check=True,980 capture_output=True,981 )982 proc = subprocess.Popen( # noqa: S603983 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],984 stdout=subprocess.DEVNULL,985 stderr=subprocess.DEVNULL,986 )987 try:988 deadline = time.monotonic() + 30989 while (990 subprocess.run( # noqa: S603991 ["pg_isready", "-h", str(sockdir), "-U", "test"],992 check=False,993 capture_output=True,994 ).returncode995 != 0996 ):997 # The socket appears before recovery finishes; createdb would998 # fail with "the database system is starting up".999 if time.monotonic() > deadline:1000 msg = "postgres did not start"1001> raise RuntimeError(msg)1002E RuntimeError: postgres did not start10031004nixbot/tests/support.py:319: RuntimeError1005___________________ ERROR at setup of test_retention_cleanup ___________________1006[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1410071008self = <Coroutine test_retention_cleanup>10091010 def setup(self) -> None:1011 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1012 if runner_fixture_id not in self.fixturenames:1013 self.fixturenames.append(runner_fixture_id)1014 # When loop factories are configured, resolve the loop factory1015 # fixture early so that a factory variant change cascades cache1016 # invalidation before any async fixture checks its cache.1017 hook_caller = self.config.hook.pytest_asyncio_loop_factories1018 if hook_caller.get_hookimpls():1019 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1020> return super().setup()1021 ^^^^^^^^^^^^^^^10221023/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1024_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1025nixbot/tests/conftest.py:33: in postgres_dsn1026 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1027 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1028/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1029 return next(self.gen)1030 ^^^^^^^^^^^^^^1031_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 10321033tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1034dbname = 'recovery'10351036 @contextlib.contextmanager1037 def ephemeral_postgres(1038 tmp_path_factory: pytest.TempPathFactory, dbname: str1039 ) -> Iterator[str]:1040 """Throwaway Postgres on a unix socket with migrations applied."""1041 datadir = tmp_path_factory.mktemp("pgdata")1042 sockdir = tmp_path_factory.mktemp("pgsock")1043 subprocess.run( # noqa: S6031044 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1045 check=True,1046 capture_output=True,1047 )1048 proc = subprocess.Popen( # noqa: S6031049 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1050 stdout=subprocess.DEVNULL,1051 stderr=subprocess.DEVNULL,1052 )1053 try:1054 deadline = time.monotonic() + 301055 while (1056 subprocess.run( # noqa: S6031057 ["pg_isready", "-h", str(sockdir), "-U", "test"],1058 check=False,1059 capture_output=True,1060 ).returncode1061 != 01062 ):1063 # The socket appears before recovery finishes; createdb would1064 # fail with "the database system is starting up".1065 if time.monotonic() > deadline:1066 msg = "postgres did not start"1067> raise RuntimeError(msg)1068E RuntimeError: postgres did not start10691070nixbot/tests/support.py:319: RuntimeError1071_______ ERROR at setup of test_metrics_unauthenticated_no_private_names ________1072[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1410731074request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>1075tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')10761077 @pytest.fixture(scope="module")1078 def postgres_dsn(1079 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1080 ) -> Iterator[str]:1081 if shutil.which("initdb") is None:1082 pytest.skip("postgresql not available")1083 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1084> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1085 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^10861087nixbot/tests/conftest.py:33: 1088_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1089/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1090 return next(self.gen)1091 ^^^^^^^^^^^^^^1092_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 10931094tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')1095dbname = 'visibility'10961097 @contextlib.contextmanager1098 def ephemeral_postgres(1099 tmp_path_factory: pytest.TempPathFactory, dbname: str1100 ) -> Iterator[str]:1101 """Throwaway Postgres on a unix socket with migrations applied."""1102 datadir = tmp_path_factory.mktemp("pgdata")1103 sockdir = tmp_path_factory.mktemp("pgsock")1104 subprocess.run( # noqa: S6031105 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1106 check=True,1107 capture_output=True,1108 )1109 proc = subprocess.Popen( # noqa: S6031110 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1111 stdout=subprocess.DEVNULL,1112 stderr=subprocess.DEVNULL,1113 )1114 try:1115 deadline = time.monotonic() + 301116 while (1117 subprocess.run( # noqa: S6031118 ["pg_isready", "-h", str(sockdir), "-U", "test"],1119 check=False,1120 capture_output=True,1121 ).returncode1122 != 01123 ):1124 # The socket appears before recovery finishes; createdb would1125 # fail with "the database system is starting up".1126 if time.monotonic() > deadline:1127 msg = "postgres did not start"1128> raise RuntimeError(msg)1129E RuntimeError: postgres did not start11301131nixbot/tests/support.py:319: RuntimeError1132____________ ERROR at setup of test_configured_viewers_see_private _____________1133[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1411341135request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>1136tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')11371138 @pytest.fixture(scope="module")1139 def postgres_dsn(1140 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1141 ) -> Iterator[str]:1142 if shutil.which("initdb") is None:1143 pytest.skip("postgresql not available")1144 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1145> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1146 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^11471148nixbot/tests/conftest.py:33: 1149_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1150/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1151 return next(self.gen)1152 ^^^^^^^^^^^^^^1153_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 11541155tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')1156dbname = 'visibility'11571158 @contextlib.contextmanager1159 def ephemeral_postgres(1160 tmp_path_factory: pytest.TempPathFactory, dbname: str1161 ) -> Iterator[str]:1162 """Throwaway Postgres on a unix socket with migrations applied."""1163 datadir = tmp_path_factory.mktemp("pgdata")1164 sockdir = tmp_path_factory.mktemp("pgsock")1165 subprocess.run( # noqa: S6031166 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1167 check=True,1168 capture_output=True,1169 )1170 proc = subprocess.Popen( # noqa: S6031171 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1172 stdout=subprocess.DEVNULL,1173 stderr=subprocess.DEVNULL,1174 )1175 try:1176 deadline = time.monotonic() + 301177 while (1178 subprocess.run( # noqa: S6031179 ["pg_isready", "-h", str(sockdir), "-U", "test"],1180 check=False,1181 capture_output=True,1182 ).returncode1183 != 01184 ):1185 # The socket appears before recovery finishes; createdb would1186 # fail with "the database system is starting up".1187 if time.monotonic() > deadline:1188 msg = "postgres did not start"1189> raise RuntimeError(msg)1190E RuntimeError: postgres did not start11911192nixbot/tests/support.py:319: RuntimeError1193____________ ERROR at setup of test_api_token_inherits_login_groups ____________1194[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1411951196request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>1197tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')11981199 @pytest.fixture(scope="module")1200 def postgres_dsn(1201 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1202 ) -> Iterator[str]:1203 if shutil.which("initdb") is None:1204 pytest.skip("postgresql not available")1205 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1206> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1207 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^12081209nixbot/tests/conftest.py:33: 1210_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1211/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1212 return next(self.gen)1213 ^^^^^^^^^^^^^^1214_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 12151216tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')1217dbname = 'visibility'12181219 @contextlib.contextmanager1220 def ephemeral_postgres(1221 tmp_path_factory: pytest.TempPathFactory, dbname: str1222 ) -> Iterator[str]:1223 """Throwaway Postgres on a unix socket with migrations applied."""1224 datadir = tmp_path_factory.mktemp("pgdata")1225 sockdir = tmp_path_factory.mktemp("pgsock")1226 subprocess.run( # noqa: S6031227 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1228 check=True,1229 capture_output=True,1230 )1231 proc = subprocess.Popen( # noqa: S6031232 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1233 stdout=subprocess.DEVNULL,1234 stderr=subprocess.DEVNULL,1235 )1236 try:1237 deadline = time.monotonic() + 301238 while (1239 subprocess.run( # noqa: S6031240 ["pg_isready", "-h", str(sockdir), "-U", "test"],1241 check=False,1242 capture_output=True,1243 ).returncode1244 != 01245 ):1246 # The socket appears before recovery finishes; createdb would1247 # fail with "the database system is starting up".1248 if time.monotonic() > deadline:1249 msg = "postgres did not start"1250> raise RuntimeError(msg)1251E RuntimeError: postgres did not start12521253nixbot/tests/support.py:319: RuntimeError1254____ ERROR at setup of test_resume_includes_interrupted_building_attributes ____1255[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1412561257self = <Coroutine test_resume_includes_interrupted_building_attributes>12581259 def setup(self) -> None:1260 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1261 if runner_fixture_id not in self.fixturenames:1262 self.fixturenames.append(runner_fixture_id)1263 # When loop factories are configured, resolve the loop factory1264 # fixture early so that a factory variant change cascades cache1265 # invalidation before any async fixture checks its cache.1266 hook_caller = self.config.hook.pytest_asyncio_loop_factories1267 if hook_caller.get_hookimpls():1268 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1269> return super().setup()1270 ^^^^^^^^^^^^^^^12711272/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1273_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1274nixbot/tests/conftest.py:33: in postgres_dsn1275 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1276 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1277/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1278 return next(self.gen)1279 ^^^^^^^^^^^^^^1280_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 12811282tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1283dbname = 'recovery'12841285 @contextlib.contextmanager1286 def ephemeral_postgres(1287 tmp_path_factory: pytest.TempPathFactory, dbname: str1288 ) -> Iterator[str]:1289 """Throwaway Postgres on a unix socket with migrations applied."""1290 datadir = tmp_path_factory.mktemp("pgdata")1291 sockdir = tmp_path_factory.mktemp("pgsock")1292 subprocess.run( # noqa: S6031293 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1294 check=True,1295 capture_output=True,1296 )1297 proc = subprocess.Popen( # noqa: S6031298 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1299 stdout=subprocess.DEVNULL,1300 stderr=subprocess.DEVNULL,1301 )1302 try:1303 deadline = time.monotonic() + 301304 while (1305 subprocess.run( # noqa: S6031306 ["pg_isready", "-h", str(sockdir), "-U", "test"],1307 check=False,1308 capture_output=True,1309 ).returncode1310 != 01311 ):1312 # The socket appears before recovery finishes; createdb would1313 # fail with "the database system is starting up".1314 if time.monotonic() > deadline:1315 msg = "postgres did not start"1316> raise RuntimeError(msg)1317E RuntimeError: postgres did not start13181319nixbot/tests/support.py:319: RuntimeError1320____________ ERROR at setup of test_logout_invalidates_access_cache ____________1321[gw17] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1413221323request = <SubRequest 'postgres_dsn' for <Function test_anonymous_sees_public_only>>1324tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')13251326 @pytest.fixture(scope="module")1327 def postgres_dsn(1328 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1329 ) -> Iterator[str]:1330 if shutil.which("initdb") is None:1331 pytest.skip("postgresql not available")1332 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1333> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1334 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^13351336nixbot/tests/conftest.py:33: 1337_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1338/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1339 return next(self.gen)1340 ^^^^^^^^^^^^^^1341_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 13421343tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw17'), _retention_count=3, _retention_policy='all')1344dbname = 'visibility'13451346 @contextlib.contextmanager1347 def ephemeral_postgres(1348 tmp_path_factory: pytest.TempPathFactory, dbname: str1349 ) -> Iterator[str]:1350 """Throwaway Postgres on a unix socket with migrations applied."""1351 datadir = tmp_path_factory.mktemp("pgdata")1352 sockdir = tmp_path_factory.mktemp("pgsock")1353 subprocess.run( # noqa: S6031354 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1355 check=True,1356 capture_output=True,1357 )1358 proc = subprocess.Popen( # noqa: S6031359 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1360 stdout=subprocess.DEVNULL,1361 stderr=subprocess.DEVNULL,1362 )1363 try:1364 deadline = time.monotonic() + 301365 while (1366 subprocess.run( # noqa: S6031367 ["pg_isready", "-h", str(sockdir), "-U", "test"],1368 check=False,1369 capture_output=True,1370 ).returncode1371 != 01372 ):1373 # The socket appears before recovery finishes; createdb would1374 # fail with "the database system is starting up".1375 if time.monotonic() > deadline:1376 msg = "postgres did not start"1377> raise RuntimeError(msg)1378E RuntimeError: postgres did not start13791380nixbot/tests/support.py:319: RuntimeError1381___________ ERROR at setup of test_retention_skips_restarted_builds ____________1382[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1413831384self = <Coroutine test_retention_skips_restarted_builds>13851386 def setup(self) -> None:1387 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1388 if runner_fixture_id not in self.fixturenames:1389 self.fixturenames.append(runner_fixture_id)1390 # When loop factories are configured, resolve the loop factory1391 # fixture early so that a factory variant change cascades cache1392 # invalidation before any async fixture checks its cache.1393 hook_caller = self.config.hook.pytest_asyncio_loop_factories1394 if hook_caller.get_hookimpls():1395 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1396> return super().setup()1397 ^^^^^^^^^^^^^^^13981399/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1400_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1401nixbot/tests/conftest.py:33: in postgres_dsn1402 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1403 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1404/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1405 return next(self.gen)1406 ^^^^^^^^^^^^^^1407_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14081409tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1410dbname = 'recovery'14111412 @contextlib.contextmanager1413 def ephemeral_postgres(1414 tmp_path_factory: pytest.TempPathFactory, dbname: str1415 ) -> Iterator[str]:1416 """Throwaway Postgres on a unix socket with migrations applied."""1417 datadir = tmp_path_factory.mktemp("pgdata")1418 sockdir = tmp_path_factory.mktemp("pgsock")1419 subprocess.run( # noqa: S6031420 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1421 check=True,1422 capture_output=True,1423 )1424 proc = subprocess.Popen( # noqa: S6031425 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1426 stdout=subprocess.DEVNULL,1427 stderr=subprocess.DEVNULL,1428 )1429 try:1430 deadline = time.monotonic() + 301431 while (1432 subprocess.run( # noqa: S6031433 ["pg_isready", "-h", str(sockdir), "-U", "test"],1434 check=False,1435 capture_output=True,1436 ).returncode1437 != 01438 ):1439 # The socket appears before recovery finishes; createdb would1440 # fail with "the database system is starting up".1441 if time.monotonic() > deadline:1442 msg = "postgres did not start"1443> raise RuntimeError(msg)1444E RuntimeError: postgres did not start14451446nixbot/tests/support.py:319: RuntimeError1447___________ ERROR at setup of test_retention_ages_out_failed_caches ____________1448[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1414491450self = <Coroutine test_retention_ages_out_failed_caches>14511452 def setup(self) -> None:1453 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1454 if runner_fixture_id not in self.fixturenames:1455 self.fixturenames.append(runner_fixture_id)1456 # When loop factories are configured, resolve the loop factory1457 # fixture early so that a factory variant change cascades cache1458 # invalidation before any async fixture checks its cache.1459 hook_caller = self.config.hook.pytest_asyncio_loop_factories1460 if hook_caller.get_hookimpls():1461 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1462> return super().setup()1463 ^^^^^^^^^^^^^^^14641465/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1466_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1467nixbot/tests/conftest.py:33: in postgres_dsn1468 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1469 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1470/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1471 return next(self.gen)1472 ^^^^^^^^^^^^^^1473_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14741475tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1476dbname = 'recovery'14771478 @contextlib.contextmanager1479 def ephemeral_postgres(1480 tmp_path_factory: pytest.TempPathFactory, dbname: str1481 ) -> Iterator[str]:1482 """Throwaway Postgres on a unix socket with migrations applied."""1483 datadir = tmp_path_factory.mktemp("pgdata")1484 sockdir = tmp_path_factory.mktemp("pgsock")1485 subprocess.run( # noqa: S6031486 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1487 check=True,1488 capture_output=True,1489 )1490 proc = subprocess.Popen( # noqa: S6031491 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1492 stdout=subprocess.DEVNULL,1493 stderr=subprocess.DEVNULL,1494 )1495 try:1496 deadline = time.monotonic() + 301497 while (1498 subprocess.run( # noqa: S6031499 ["pg_isready", "-h", str(sockdir), "-U", "test"],1500 check=False,1501 capture_output=True,1502 ).returncode1503 != 01504 ):1505 # The socket appears before recovery finishes; createdb would1506 # fail with "the database system is starting up".1507 if time.monotonic() > deadline:1508 msg = "postgres did not start"1509> raise RuntimeError(msg)1510E RuntimeError: postgres did not start15111512nixbot/tests/support.py:319: RuntimeError1513___________ ERROR at setup of test_rerun_clears_stale_eval_warnings ____________1514[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1415151516self = <Coroutine test_rerun_clears_stale_eval_warnings>15171518 def setup(self) -> None:1519 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1520 if runner_fixture_id not in self.fixturenames:1521 self.fixturenames.append(runner_fixture_id)1522 # When loop factories are configured, resolve the loop factory1523 # fixture early so that a factory variant change cascades cache1524 # invalidation before any async fixture checks its cache.1525 hook_caller = self.config.hook.pytest_asyncio_loop_factories1526 if hook_caller.get_hookimpls():1527 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1528> return super().setup()1529 ^^^^^^^^^^^^^^^15301531/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1532_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1533nixbot/tests/conftest.py:33: in postgres_dsn1534 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1535 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1536/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1537 return next(self.gen)1538 ^^^^^^^^^^^^^^1539_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 15401541tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1542dbname = 'recovery'15431544 @contextlib.contextmanager1545 def ephemeral_postgres(1546 tmp_path_factory: pytest.TempPathFactory, dbname: str1547 ) -> Iterator[str]:1548 """Throwaway Postgres on a unix socket with migrations applied."""1549 datadir = tmp_path_factory.mktemp("pgdata")1550 sockdir = tmp_path_factory.mktemp("pgsock")1551 subprocess.run( # noqa: S6031552 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1553 check=True,1554 capture_output=True,1555 )1556 proc = subprocess.Popen( # noqa: S6031557 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1558 stdout=subprocess.DEVNULL,1559 stderr=subprocess.DEVNULL,1560 )1561 try:1562 deadline = time.monotonic() + 301563 while (1564 subprocess.run( # noqa: S6031565 ["pg_isready", "-h", str(sockdir), "-U", "test"],1566 check=False,1567 capture_output=True,1568 ).returncode1569 != 01570 ):1571 # The socket appears before recovery finishes; createdb would1572 # fail with "the database system is starting up".1573 if time.monotonic() > deadline:1574 msg = "postgres did not start"1575> raise RuntimeError(msg)1576E RuntimeError: postgres did not start15771578nixbot/tests/support.py:319: RuntimeError1579_________ ERROR at setup of test_interrupted_effects_fail_on_recovery __________1580[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1415811582self = <Coroutine test_interrupted_effects_fail_on_recovery>15831584 def setup(self) -> None:1585 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1586 if runner_fixture_id not in self.fixturenames:1587 self.fixturenames.append(runner_fixture_id)1588 # When loop factories are configured, resolve the loop factory1589 # fixture early so that a factory variant change cascades cache1590 # invalidation before any async fixture checks its cache.1591 hook_caller = self.config.hook.pytest_asyncio_loop_factories1592 if hook_caller.get_hookimpls():1593 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1594> return super().setup()1595 ^^^^^^^^^^^^^^^15961597/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1598_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1599nixbot/tests/conftest.py:33: in postgres_dsn1600 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1601 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1602/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1603 return next(self.gen)1604 ^^^^^^^^^^^^^^1605_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 16061607tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1608dbname = 'recovery'16091610 @contextlib.contextmanager1611 def ephemeral_postgres(1612 tmp_path_factory: pytest.TempPathFactory, dbname: str1613 ) -> Iterator[str]:1614 """Throwaway Postgres on a unix socket with migrations applied."""1615 datadir = tmp_path_factory.mktemp("pgdata")1616 sockdir = tmp_path_factory.mktemp("pgsock")1617 subprocess.run( # noqa: S6031618 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1619 check=True,1620 capture_output=True,1621 )1622 proc = subprocess.Popen( # noqa: S6031623 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1624 stdout=subprocess.DEVNULL,1625 stderr=subprocess.DEVNULL,1626 )1627 try:1628 deadline = time.monotonic() + 301629 while (1630 subprocess.run( # noqa: S6031631 ["pg_isready", "-h", str(sockdir), "-U", "test"],1632 check=False,1633 capture_output=True,1634 ).returncode1635 != 01636 ):1637 # The socket appears before recovery finishes; createdb would1638 # fail with "the database system is starting up".1639 if time.monotonic() > deadline:1640 msg = "postgres did not start"1641> raise RuntimeError(msg)1642E RuntimeError: postgres did not start16431644nixbot/tests/support.py:319: RuntimeError1645_________________ ERROR at setup of test_repo_list_and_toggle __________________1646[gw12] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1416471648fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>1649request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>16501651 @pytest.hookimpl(wrapper=True)1652 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:1653 if (1654 fixturedef.argname == "event_loop_policy"1655 and fixturedef.func.__module__ != __name__1656 ):1657 warnings.warn(1658 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),1659 )1660 asyncio_mode = _get_asyncio_mode(request.config)1661 if not _is_asyncio_fixture_function(fixturedef.func):1662 if asyncio_mode == Mode.STRICT:1663 # Ignore async fixtures without explicit asyncio mark in strict mode1664 # This applies to pytest_trio fixtures, for example1665 return (yield)1666 if not _is_coroutine_or_asyncgen(fixturedef.func):1667> return (yield)1668 ^^^^^16691670/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 1671_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1672nixbot/tests/conftest.py:33: in postgres_dsn1673 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1674 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1675/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1676 return next(self.gen)1677 ^^^^^^^^^^^^^^1678_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 16791680tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw12'), _retention_count=3, _retention_policy='all')1681dbname = 'cli'16821683 @contextlib.contextmanager1684 def ephemeral_postgres(1685 tmp_path_factory: pytest.TempPathFactory, dbname: str1686 ) -> Iterator[str]:1687 """Throwaway Postgres on a unix socket with migrations applied."""1688 datadir = tmp_path_factory.mktemp("pgdata")1689 sockdir = tmp_path_factory.mktemp("pgsock")1690 subprocess.run( # noqa: S6031691 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1692 check=True,1693 capture_output=True,1694 )1695 proc = subprocess.Popen( # noqa: S6031696 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1697 stdout=subprocess.DEVNULL,1698 stderr=subprocess.DEVNULL,1699 )1700 try:1701 deadline = time.monotonic() + 301702 while (1703 subprocess.run( # noqa: S6031704 ["pg_isready", "-h", str(sockdir), "-U", "test"],1705 check=False,1706 capture_output=True,1707 ).returncode1708 != 01709 ):1710 # The socket appears before recovery finishes; createdb would1711 # fail with "the database system is starting up".1712 if time.monotonic() > deadline:1713 msg = "postgres did not start"1714> raise RuntimeError(msg)1715E RuntimeError: postgres did not start17161717nixbot/tests/support.py:319: RuntimeError1718_____ ERROR at setup of test_interrupted_effects_sweep_spares_live_effects _____1719[gw19] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1417201721self = <Coroutine test_interrupted_effects_sweep_spares_live_effects>17221723 def setup(self) -> None:1724 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"1725 if runner_fixture_id not in self.fixturenames:1726 self.fixturenames.append(runner_fixture_id)1727 # When loop factories are configured, resolve the loop factory1728 # fixture early so that a factory variant change cascades cache1729 # invalidation before any async fixture checks its cache.1730 hook_caller = self.config.hook.pytest_asyncio_loop_factories1731 if hook_caller.get_hookimpls():1732 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)1733> return super().setup()1734 ^^^^^^^^^^^^^^^17351736/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 1737_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1738nixbot/tests/conftest.py:33: in postgres_dsn1739 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1740 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1741/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1742 return next(self.gen)1743 ^^^^^^^^^^^^^^1744_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 17451746tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw19'), _retention_count=3, _retention_policy='all')1747dbname = 'recovery'17481749 @contextlib.contextmanager1750 def ephemeral_postgres(1751 tmp_path_factory: pytest.TempPathFactory, dbname: str1752 ) -> Iterator[str]:1753 """Throwaway Postgres on a unix socket with migrations applied."""1754 datadir = tmp_path_factory.mktemp("pgdata")1755 sockdir = tmp_path_factory.mktemp("pgsock")1756 subprocess.run( # noqa: S6031757 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1758 check=True,1759 capture_output=True,1760 )1761 proc = subprocess.Popen( # noqa: S6031762 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1763 stdout=subprocess.DEVNULL,1764 stderr=subprocess.DEVNULL,1765 )1766 try:1767 deadline = time.monotonic() + 301768 while (1769 subprocess.run( # noqa: S6031770 ["pg_isready", "-h", str(sockdir), "-U", "test"],1771 check=False,1772 capture_output=True,1773 ).returncode1774 != 01775 ):1776 # The socket appears before recovery finishes; createdb would1777 # fail with "the database system is starting up".1778 if time.monotonic() > deadline:1779 msg = "postgres did not start"1780> raise RuntimeError(msg)1781E RuntimeError: postgres did not start17821783nixbot/tests/support.py:319: RuntimeError1784__________________ ERROR at setup of test_build_list_and_view __________________1785[gw12] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1417861787request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>1788tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw12'), _retention_count=3, _retention_policy='all')17891790 @pytest.fixture(scope="module")1791 def postgres_dsn(1792 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1793 ) -> Iterator[str]:1794 if shutil.which("initdb") is None:1795 pytest.skip("postgresql not available")1796 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1797> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1798 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^17991800nixbot/tests/conftest.py:33: 1801_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1802/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1803 return next(self.gen)1804 ^^^^^^^^^^^^^^1805_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 18061807tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw12'), _retention_count=3, _retention_policy='all')1808dbname = 'cli'18091810 @contextlib.contextmanager1811 def ephemeral_postgres(1812 tmp_path_factory: pytest.TempPathFactory, dbname: str1813 ) -> Iterator[str]:1814 """Throwaway Postgres on a unix socket with migrations applied."""1815 datadir = tmp_path_factory.mktemp("pgdata")1816 sockdir = tmp_path_factory.mktemp("pgsock")1817 subprocess.run( # noqa: S6031818 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1819 check=True,1820 capture_output=True,1821 )1822 proc = subprocess.Popen( # noqa: S6031823 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1824 stdout=subprocess.DEVNULL,1825 stderr=subprocess.DEVNULL,1826 )1827 try:1828 deadline = time.monotonic() + 301829 while (1830 subprocess.run( # noqa: S6031831 ["pg_isready", "-h", str(sockdir), "-U", "test"],1832 check=False,1833 capture_output=True,1834 ).returncode1835 != 01836 ):1837 # The socket appears before recovery finishes; createdb would1838 # fail with "the database system is starting up".1839 if time.monotonic() > deadline:1840 msg = "postgres did not start"1841> raise RuntimeError(msg)1842E RuntimeError: postgres did not start18431844nixbot/tests/support.py:319: RuntimeError1845___________________ ERROR at setup of test_html_error_pages ____________________1846[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1418471848fixturedef = <FixtureDef argname='postgres_dsn' scope='module' baseid='nixbot/tests'>1849request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>18501851 @pytest.hookimpl(wrapper=True)1852 def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None:1853 if (1854 fixturedef.argname == "event_loop_policy"1855 and fixturedef.func.__module__ != __name__1856 ):1857 warnings.warn(1858 PytestDeprecationWarning(_EVENT_LOOP_POLICY_FIXTURE_DEPRECATION_WARNING),1859 )1860 asyncio_mode = _get_asyncio_mode(request.config)1861 if not _is_asyncio_fixture_function(fixturedef.func):1862 if asyncio_mode == Mode.STRICT:1863 # Ignore async fixtures without explicit asyncio mark in strict mode1864 # This applies to pytest_trio fixtures, for example1865 return (yield)1866 if not _is_coroutine_or_asyncgen(fixturedef.func):1867> return (yield)1868 ^^^^^18691870/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:926: 1871_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1872nixbot/tests/conftest.py:33: in postgres_dsn1873 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1874 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^1875/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1876 return next(self.gen)1877 ^^^^^^^^^^^^^^1878_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 18791880tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')1881dbname = 'web'18821883 @contextlib.contextmanager1884 def ephemeral_postgres(1885 tmp_path_factory: pytest.TempPathFactory, dbname: str1886 ) -> Iterator[str]:1887 """Throwaway Postgres on a unix socket with migrations applied."""1888 datadir = tmp_path_factory.mktemp("pgdata")1889 sockdir = tmp_path_factory.mktemp("pgsock")1890 subprocess.run( # noqa: S6031891 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1892 check=True,1893 capture_output=True,1894 )1895 proc = subprocess.Popen( # noqa: S6031896 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1897 stdout=subprocess.DEVNULL,1898 stderr=subprocess.DEVNULL,1899 )1900 try:1901 deadline = time.monotonic() + 301902 while (1903 subprocess.run( # noqa: S6031904 ["pg_isready", "-h", str(sockdir), "-U", "test"],1905 check=False,1906 capture_output=True,1907 ).returncode1908 != 01909 ):1910 # The socket appears before recovery finishes; createdb would1911 # fail with "the database system is starting up".1912 if time.monotonic() > deadline:1913 msg = "postgres did not start"1914> raise RuntimeError(msg)1915E RuntimeError: postgres did not start19161917nixbot/tests/support.py:319: RuntimeError1918_________________ ERROR at setup of test_build_restart_cancel __________________1919[gw12] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1419201921request = <SubRequest 'postgres_dsn' for <Function test_repo_list_and_toggle>>1922tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw12'), _retention_count=3, _retention_policy='all')19231924 @pytest.fixture(scope="module")1925 def postgres_dsn(1926 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1927 ) -> Iterator[str]:1928 if shutil.which("initdb") is None:1929 pytest.skip("postgresql not available")1930 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1931> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1932 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^19331934nixbot/tests/conftest.py:33: 1935_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1936/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1937 return next(self.gen)1938 ^^^^^^^^^^^^^^1939_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 19401941tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...tch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw12'), _retention_count=3, _retention_policy='all')1942dbname = 'cli'19431944 @contextlib.contextmanager1945 def ephemeral_postgres(1946 tmp_path_factory: pytest.TempPathFactory, dbname: str1947 ) -> Iterator[str]:1948 """Throwaway Postgres on a unix socket with migrations applied."""1949 datadir = tmp_path_factory.mktemp("pgdata")1950 sockdir = tmp_path_factory.mktemp("pgsock")1951 subprocess.run( # noqa: S6031952 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],1953 check=True,1954 capture_output=True,1955 )1956 proc = subprocess.Popen( # noqa: S6031957 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],1958 stdout=subprocess.DEVNULL,1959 stderr=subprocess.DEVNULL,1960 )1961 try:1962 deadline = time.monotonic() + 301963 while (1964 subprocess.run( # noqa: S6031965 ["pg_isready", "-h", str(sockdir), "-U", "test"],1966 check=False,1967 capture_output=True,1968 ).returncode1969 != 01970 ):1971 # The socket appears before recovery finishes; createdb would1972 # fail with "the database system is starting up".1973 if time.monotonic() > deadline:1974 msg = "postgres did not start"1975> raise RuntimeError(msg)1976E RuntimeError: postgres did not start19771978nixbot/tests/support.py:319: RuntimeError1979______________ ERROR at setup of test_api_strips_ansi_from_errors ______________1980[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.1419811982request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>1983tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')19841985 @pytest.fixture(scope="module")1986 def postgres_dsn(1987 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory1988 ) -> Iterator[str]:1989 if shutil.which("initdb") is None:1990 pytest.skip("postgresql not available")1991 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")1992> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:1993 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^19941995nixbot/tests/conftest.py:33: 1996_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1997/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__1998 return next(self.gen)1999 ^^^^^^^^^^^^^^2000_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20315 capture_output=True,20316 ).returncode20317 != 020318 ):20319 # The socket appears before recovery finishes; createdb would20320 # fail with "the database system is starting up".20321 if time.monotonic() > deadline:20322 msg = "postgres did not start"20323> raise RuntimeError(msg)20324E RuntimeError: postgres did not start2032520326nixbot/tests/support.py:319: RuntimeError20327______________ ERROR at setup of test_recovery_rerun_runs_effects ______________20328[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142032920330self = <Coroutine test_recovery_rerun_runs_effects>2033120332 def setup(self) -> None:20333 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20334 if runner_fixture_id not in self.fixturenames:20335 self.fixturenames.append(runner_fixture_id)20336 # When loop factories are configured, resolve the loop factory20337 # fixture early so that a factory variant change cascades cache20338 # invalidation before any async fixture checks its cache.20339 hook_caller = self.config.hook.pytest_asyncio_loop_factories20340 if hook_caller.get_hookimpls():20341 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20342> return super().setup()20343 ^^^^^^^^^^^^^^^2034420345/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20346_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20347nixbot/tests/conftest.py:33: in postgres_dsn20348 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20349 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20350/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20351 return next(self.gen)20352 ^^^^^^^^^^^^^^20353_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2035420355tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20356dbname = 'orchestrator'2035720358 @contextlib.contextmanager20359 def ephemeral_postgres(20360 tmp_path_factory: pytest.TempPathFactory, dbname: str20361 ) -> Iterator[str]:20362 """Throwaway Postgres on a unix socket with migrations applied."""20363 datadir = tmp_path_factory.mktemp("pgdata")20364 sockdir = tmp_path_factory.mktemp("pgsock")20365 subprocess.run( # noqa: S60320366 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20367 check=True,20368 capture_output=True,20369 )20370 proc = subprocess.Popen( # noqa: S60320371 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20372 stdout=subprocess.DEVNULL,20373 stderr=subprocess.DEVNULL,20374 )20375 try:20376 deadline = time.monotonic() + 3020377 while (20378 subprocess.run( # noqa: S60320379 ["pg_isready", "-h", str(sockdir), "-U", "test"],20380 check=False,20381 capture_output=True,20382 ).returncode20383 != 020384 ):20385 # The socket appears before recovery finishes; createdb would20386 # fail with "the database system is starting up".20387 if time.monotonic() > deadline:20388 msg = "postgres did not start"20389> raise RuntimeError(msg)20390E RuntimeError: postgres did not start2039120392nixbot/tests/support.py:319: RuntimeError20393__________________ ERROR at setup of test_api_log_stream_json __________________20394[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142039520396request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>20397tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2039820399 @pytest.fixture(scope="module")20400 def postgres_dsn(20401 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory20402 ) -> Iterator[str]:20403 if shutil.which("initdb") is None:20404 pytest.skip("postgresql not available")20405 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")20406> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20407 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2040820409nixbot/tests/conftest.py:33: 20410_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20411/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20412 return next(self.gen)20413 ^^^^^^^^^^^^^^20414_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2041520416tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')20417dbname = 'web'2041820419 @contextlib.contextmanager20420 def ephemeral_postgres(20421 tmp_path_factory: pytest.TempPathFactory, dbname: str20422 ) -> Iterator[str]:20423 """Throwaway Postgres on a unix socket with migrations applied."""20424 datadir = tmp_path_factory.mktemp("pgdata")20425 sockdir = tmp_path_factory.mktemp("pgsock")20426 subprocess.run( # noqa: S60320427 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20428 check=True,20429 capture_output=True,20430 )20431 proc = subprocess.Popen( # noqa: S60320432 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20433 stdout=subprocess.DEVNULL,20434 stderr=subprocess.DEVNULL,20435 )20436 try:20437 deadline = time.monotonic() + 3020438 while (20439 subprocess.run( # noqa: S60320440 ["pg_isready", "-h", str(sockdir), "-U", "test"],20441 check=False,20442 capture_output=True,20443 ).returncode20444 != 020445 ):20446 # The socket appears before recovery finishes; createdb would20447 # fail with "the database system is starting up".20448 if time.monotonic() > deadline:20449 msg = "postgres did not start"20450> raise RuntimeError(msg)20451E RuntimeError: postgres did not start2045220453nixbot/tests/support.py:319: RuntimeError20454___________ ERROR at setup of test_reeval_failure_marks_build_failed ___________20455[gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142045620457self = <Coroutine test_reeval_failure_marks_build_failed>2045820459 def setup(self) -> None:20460 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20461 if runner_fixture_id not in self.fixturenames:20462 self.fixturenames.append(runner_fixture_id)20463 # When loop factories are configured, resolve the loop factory20464 # fixture early so that a factory variant change cascades cache20465 # invalidation before any async fixture checks its cache.20466 hook_caller = self.config.hook.pytest_asyncio_loop_factories20467 if hook_caller.get_hookimpls():20468 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20469> return super().setup()20470 ^^^^^^^^^^^^^^^2047120472/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20473_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20474nixbot/tests/conftest.py:33: in postgres_dsn20475 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20476 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20477/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20478 return next(self.gen)20479 ^^^^^^^^^^^^^^20480_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2048120482tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw7'), _retention_count=3, _retention_policy='all')20483dbname = 'service'2048420485 @contextlib.contextmanager20486 def ephemeral_postgres(20487 tmp_path_factory: pytest.TempPathFactory, dbname: str20488 ) -> Iterator[str]:20489 """Throwaway Postgres on a unix socket with migrations applied."""20490 datadir = tmp_path_factory.mktemp("pgdata")20491 sockdir = tmp_path_factory.mktemp("pgsock")20492 subprocess.run( # noqa: S60320493 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20494 check=True,20495 capture_output=True,20496 )20497 proc = subprocess.Popen( # noqa: S60320498 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20499 stdout=subprocess.DEVNULL,20500 stderr=subprocess.DEVNULL,20501 )20502 try:20503 deadline = time.monotonic() + 3020504 while (20505 subprocess.run( # noqa: S60320506 ["pg_isready", "-h", str(sockdir), "-U", "test"],20507 check=False,20508 capture_output=True,20509 ).returncode20510 != 020511 ):20512 # The socket appears before recovery finishes; createdb would20513 # fail with "the database system is starting up".20514 if time.monotonic() > deadline:20515 msg = "postgres did not start"20516> raise RuntimeError(msg)20517E RuntimeError: postgres did not start2051820519nixbot/tests/support.py:319: RuntimeError20520_______________ ERROR at setup of test_build_eval_stats_surface ________________20521[gw0] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142052220523request = <SubRequest 'postgres_dsn' for <Function test_html_error_pages>>20524tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')2052520526 @pytest.fixture(scope="module")20527 def postgres_dsn(20528 request: pytest.FixtureRequest, tmp_path_factory: pytest.TempPathFactory20529 ) -> Iterator[str]:20530 if shutil.which("initdb") is None:20531 pytest.skip("postgresql not available")20532 dbname = request.module.__name__.rsplit(".", 1)[-1].removeprefix("test_")20533> with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20534 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2053520536nixbot/tests/conftest.py:33: 20537_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20538/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20539 return next(self.gen)20540 ^^^^^^^^^^^^^^20541_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2054220543tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw0'), _retention_count=3, _retention_policy='all')20544dbname = 'web'2054520546 @contextlib.contextmanager20547 def ephemeral_postgres(20548 tmp_path_factory: pytest.TempPathFactory, dbname: str20549 ) -> Iterator[str]:20550 """Throwaway Postgres on a unix socket with migrations applied."""20551 datadir = tmp_path_factory.mktemp("pgdata")20552 sockdir = tmp_path_factory.mktemp("pgsock")20553 subprocess.run( # noqa: S60320554 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20555 check=True,20556 capture_output=True,20557 )20558 proc = subprocess.Popen( # noqa: S60320559 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20560 stdout=subprocess.DEVNULL,20561 stderr=subprocess.DEVNULL,20562 )20563 try:20564 deadline = time.monotonic() + 3020565 while (20566 subprocess.run( # noqa: S60320567 ["pg_isready", "-h", str(sockdir), "-U", "test"],20568 check=False,20569 capture_output=True,20570 ).returncode20571 != 020572 ):20573 # The socket appears before recovery finishes; createdb would20574 # fail with "the database system is starting up".20575 if time.monotonic() > deadline:20576 msg = "postgres did not start"20577> raise RuntimeError(msg)20578E RuntimeError: postgres did not start2057920580nixbot/tests/support.py:319: RuntimeError20581__ ERROR at setup of test_unsupported_system_attr_does_not_block_aggregation ___20582[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142058320584self = <Coroutine test_unsupported_system_attr_does_not_block_aggregation>2058520586 def setup(self) -> None:20587 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20588 if runner_fixture_id not in self.fixturenames:20589 self.fixturenames.append(runner_fixture_id)20590 # When loop factories are configured, resolve the loop factory20591 # fixture early so that a factory variant change cascades cache20592 # invalidation before any async fixture checks its cache.20593 hook_caller = self.config.hook.pytest_asyncio_loop_factories20594 if hook_caller.get_hookimpls():20595 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20596> return super().setup()20597 ^^^^^^^^^^^^^^^2059820599/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20600_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20601nixbot/tests/conftest.py:33: in postgres_dsn20602 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20603 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20604/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20605 return next(self.gen)20606 ^^^^^^^^^^^^^^20607_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2060820609tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20610dbname = 'orchestrator'2061120612 @contextlib.contextmanager20613 def ephemeral_postgres(20614 tmp_path_factory: pytest.TempPathFactory, dbname: str20615 ) -> Iterator[str]:20616 """Throwaway Postgres on a unix socket with migrations applied."""20617 datadir = tmp_path_factory.mktemp("pgdata")20618 sockdir = tmp_path_factory.mktemp("pgsock")20619 subprocess.run( # noqa: S60320620 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20621 check=True,20622 capture_output=True,20623 )20624 proc = subprocess.Popen( # noqa: S60320625 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20626 stdout=subprocess.DEVNULL,20627 stderr=subprocess.DEVNULL,20628 )20629 try:20630 deadline = time.monotonic() + 3020631 while (20632 subprocess.run( # noqa: S60320633 ["pg_isready", "-h", str(sockdir), "-U", "test"],20634 check=False,20635 capture_output=True,20636 ).returncode20637 != 020638 ):20639 # The socket appears before recovery finishes; createdb would20640 # fail with "the database system is starting up".20641 if time.monotonic() > deadline:20642 msg = "postgres did not start"20643> raise RuntimeError(msg)20644E RuntimeError: postgres did not start2064520646nixbot/tests/support.py:319: RuntimeError20647________ ERROR at setup of test_gitlab_discovery_and_hook_registration _________20648[gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142064920650self = <Coroutine test_gitlab_discovery_and_hook_registration>2065120652 def setup(self) -> None:20653 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20654 if runner_fixture_id not in self.fixturenames:20655 self.fixturenames.append(runner_fixture_id)20656 # When loop factories are configured, resolve the loop factory20657 # fixture early so that a factory variant change cascades cache20658 # invalidation before any async fixture checks its cache.20659 hook_caller = self.config.hook.pytest_asyncio_loop_factories20660 if hook_caller.get_hookimpls():20661 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20662> return super().setup()20663 ^^^^^^^^^^^^^^^2066420665/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20666_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20667nixbot/tests/conftest.py:33: in postgres_dsn20668 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20669 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20670/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20671 return next(self.gen)20672 ^^^^^^^^^^^^^^20673_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2067420675tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw7'), _retention_count=3, _retention_policy='all')20676dbname = 'service'2067720678 @contextlib.contextmanager20679 def ephemeral_postgres(20680 tmp_path_factory: pytest.TempPathFactory, dbname: str20681 ) -> Iterator[str]:20682 """Throwaway Postgres on a unix socket with migrations applied."""20683 datadir = tmp_path_factory.mktemp("pgdata")20684 sockdir = tmp_path_factory.mktemp("pgsock")20685 subprocess.run( # noqa: S60320686 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20687 check=True,20688 capture_output=True,20689 )20690 proc = subprocess.Popen( # noqa: S60320691 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20692 stdout=subprocess.DEVNULL,20693 stderr=subprocess.DEVNULL,20694 )20695 try:20696 deadline = time.monotonic() + 3020697 while (20698 subprocess.run( # noqa: S60320699 ["pg_isready", "-h", str(sockdir), "-U", "test"],20700 check=False,20701 capture_output=True,20702 ).returncode20703 != 020704 ):20705 # The socket appears before recovery finishes; createdb would20706 # fail with "the database system is starting up".20707 if time.monotonic() > deadline:20708 msg = "postgres did not start"20709> raise RuntimeError(msg)20710E RuntimeError: postgres did not start2071120712nixbot/tests/support.py:319: RuntimeError20713________ ERROR at setup of test_linked_context_reported_on_eval_failure ________20714[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142071520716self = <Coroutine test_linked_context_reported_on_eval_failure>2071720718 def setup(self) -> None:20719 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20720 if runner_fixture_id not in self.fixturenames:20721 self.fixturenames.append(runner_fixture_id)20722 # When loop factories are configured, resolve the loop factory20723 # fixture early so that a factory variant change cascades cache20724 # invalidation before any async fixture checks its cache.20725 hook_caller = self.config.hook.pytest_asyncio_loop_factories20726 if hook_caller.get_hookimpls():20727 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20728> return super().setup()20729 ^^^^^^^^^^^^^^^2073020731/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20732_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20733nixbot/tests/conftest.py:33: in postgres_dsn20734 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20735 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20736/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20737 return next(self.gen)20738 ^^^^^^^^^^^^^^20739_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2074020741tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20742dbname = 'orchestrator'2074320744 @contextlib.contextmanager20745 def ephemeral_postgres(20746 tmp_path_factory: pytest.TempPathFactory, dbname: str20747 ) -> Iterator[str]:20748 """Throwaway Postgres on a unix socket with migrations applied."""20749 datadir = tmp_path_factory.mktemp("pgdata")20750 sockdir = tmp_path_factory.mktemp("pgsock")20751 subprocess.run( # noqa: S60320752 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20753 check=True,20754 capture_output=True,20755 )20756 proc = subprocess.Popen( # noqa: S60320757 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20758 stdout=subprocess.DEVNULL,20759 stderr=subprocess.DEVNULL,20760 )20761 try:20762 deadline = time.monotonic() + 3020763 while (20764 subprocess.run( # noqa: S60320765 ["pg_isready", "-h", str(sockdir), "-U", "test"],20766 check=False,20767 capture_output=True,20768 ).returncode20769 != 020770 ):20771 # The socket appears before recovery finishes; createdb would20772 # fail with "the database system is starting up".20773 if time.monotonic() > deadline:20774 msg = "postgres did not start"20775> raise RuntimeError(msg)20776E RuntimeError: postgres did not start2077720778nixbot/tests/support.py:319: RuntimeError20779__________ ERROR at setup of test_health_serves_while_startup_blocks ___________20780[gw7] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142078120782self = <Coroutine test_health_serves_while_startup_blocks>2078320784 def setup(self) -> None:20785 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20786 if runner_fixture_id not in self.fixturenames:20787 self.fixturenames.append(runner_fixture_id)20788 # When loop factories are configured, resolve the loop factory20789 # fixture early so that a factory variant change cascades cache20790 # invalidation before any async fixture checks its cache.20791 hook_caller = self.config.hook.pytest_asyncio_loop_factories20792 if hook_caller.get_hookimpls():20793 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20794> return super().setup()20795 ^^^^^^^^^^^^^^^2079620797/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20798_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20799nixbot/tests/conftest.py:33: in postgres_dsn20800 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20802/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20803 return next(self.gen)20804 ^^^^^^^^^^^^^^20805_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2080620807tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw7'), _retention_count=3, _retention_policy='all')20808dbname = 'service'2080920810 @contextlib.contextmanager20811 def ephemeral_postgres(20812 tmp_path_factory: pytest.TempPathFactory, dbname: str20813 ) -> Iterator[str]:20814 """Throwaway Postgres on a unix socket with migrations applied."""20815 datadir = tmp_path_factory.mktemp("pgdata")20816 sockdir = tmp_path_factory.mktemp("pgsock")20817 subprocess.run( # noqa: S60320818 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20819 check=True,20820 capture_output=True,20821 )20822 proc = subprocess.Popen( # noqa: S60320823 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20824 stdout=subprocess.DEVNULL,20825 stderr=subprocess.DEVNULL,20826 )20827 try:20828 deadline = time.monotonic() + 3020829 while (20830 subprocess.run( # noqa: S60320831 ["pg_isready", "-h", str(sockdir), "-U", "test"],20832 check=False,20833 capture_output=True,20834 ).returncode20835 != 020836 ):20837 # The socket appears before recovery finishes; createdb would20838 # fail with "the database system is starting up".20839 if time.monotonic() > deadline:20840 msg = "postgres did not start"20841> raise RuntimeError(msg)20842E RuntimeError: postgres did not start2084320844nixbot/tests/support.py:319: RuntimeError20845_______ ERROR at setup of test_eval_failure_settles_streamed_attributes ________20846[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142084720848self = <Coroutine test_eval_failure_settles_streamed_attributes>2084920850 def setup(self) -> None:20851 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20852 if runner_fixture_id not in self.fixturenames:20853 self.fixturenames.append(runner_fixture_id)20854 # When loop factories are configured, resolve the loop factory20855 # fixture early so that a factory variant change cascades cache20856 # invalidation before any async fixture checks its cache.20857 hook_caller = self.config.hook.pytest_asyncio_loop_factories20858 if hook_caller.get_hookimpls():20859 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20860> return super().setup()20861 ^^^^^^^^^^^^^^^2086220863/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20864_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20865nixbot/tests/conftest.py:33: in postgres_dsn20866 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20867 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20868/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20869 return next(self.gen)20870 ^^^^^^^^^^^^^^20871_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2087220873tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20874dbname = 'orchestrator'2087520876 @contextlib.contextmanager20877 def ephemeral_postgres(20878 tmp_path_factory: pytest.TempPathFactory, dbname: str20879 ) -> Iterator[str]:20880 """Throwaway Postgres on a unix socket with migrations applied."""20881 datadir = tmp_path_factory.mktemp("pgdata")20882 sockdir = tmp_path_factory.mktemp("pgsock")20883 subprocess.run( # noqa: S60320884 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20885 check=True,20886 capture_output=True,20887 )20888 proc = subprocess.Popen( # noqa: S60320889 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20890 stdout=subprocess.DEVNULL,20891 stderr=subprocess.DEVNULL,20892 )20893 try:20894 deadline = time.monotonic() + 3020895 while (20896 subprocess.run( # noqa: S60320897 ["pg_isready", "-h", str(sockdir), "-U", "test"],20898 check=False,20899 capture_output=True,20900 ).returncode20901 != 020902 ):20903 # The socket appears before recovery finishes; createdb would20904 # fail with "the database system is starting up".20905 if time.monotonic() > deadline:20906 msg = "postgres did not start"20907> raise RuntimeError(msg)20908E RuntimeError: postgres did not start2090920910nixbot/tests/support.py:319: RuntimeError20911_________________ ERROR at setup of test_effect_rows_roundtrip _________________20912[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142091320914self = <Coroutine test_effect_rows_roundtrip>2091520916 def setup(self) -> None:20917 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20918 if runner_fixture_id not in self.fixturenames:20919 self.fixturenames.append(runner_fixture_id)20920 # When loop factories are configured, resolve the loop factory20921 # fixture early so that a factory variant change cascades cache20922 # invalidation before any async fixture checks its cache.20923 hook_caller = self.config.hook.pytest_asyncio_loop_factories20924 if hook_caller.get_hookimpls():20925 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20926> return super().setup()20927 ^^^^^^^^^^^^^^^2092820929/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20930_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20931nixbot/tests/conftest.py:33: in postgres_dsn20932 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20933 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^20934/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__20935 return next(self.gen)20936 ^^^^^^^^^^^^^^20937_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2093820939tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')20940dbname = 'orchestrator'2094120942 @contextlib.contextmanager20943 def ephemeral_postgres(20944 tmp_path_factory: pytest.TempPathFactory, dbname: str20945 ) -> Iterator[str]:20946 """Throwaway Postgres on a unix socket with migrations applied."""20947 datadir = tmp_path_factory.mktemp("pgdata")20948 sockdir = tmp_path_factory.mktemp("pgsock")20949 subprocess.run( # noqa: S60320950 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],20951 check=True,20952 capture_output=True,20953 )20954 proc = subprocess.Popen( # noqa: S60320955 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],20956 stdout=subprocess.DEVNULL,20957 stderr=subprocess.DEVNULL,20958 )20959 try:20960 deadline = time.monotonic() + 3020961 while (20962 subprocess.run( # noqa: S60320963 ["pg_isready", "-h", str(sockdir), "-U", "test"],20964 check=False,20965 capture_output=True,20966 ).returncode20967 != 020968 ):20969 # The socket appears before recovery finishes; createdb would20970 # fail with "the database system is starting up".20971 if time.monotonic() > deadline:20972 msg = "postgres did not start"20973> raise RuntimeError(msg)20974E RuntimeError: postgres did not start2097520976nixbot/tests/support.py:319: RuntimeError20977_________ ERROR at setup of test_pending_effects_replace_skipped_rows __________20978[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142097920980self = <Coroutine test_pending_effects_replace_skipped_rows>2098120982 def setup(self) -> None:20983 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"20984 if runner_fixture_id not in self.fixturenames:20985 self.fixturenames.append(runner_fixture_id)20986 # When loop factories are configured, resolve the loop factory20987 # fixture early so that a factory variant change cascades cache20988 # invalidation before any async fixture checks its cache.20989 hook_caller = self.config.hook.pytest_asyncio_loop_factories20990 if hook_caller.get_hookimpls():20991 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)20992> return super().setup()20993 ^^^^^^^^^^^^^^^2099420995/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 20996_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 20997nixbot/tests/conftest.py:33: in postgres_dsn20998 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:20999 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21000/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21001 return next(self.gen)21002 ^^^^^^^^^^^^^^21003_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2100421005tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21006dbname = 'orchestrator'2100721008 @contextlib.contextmanager21009 def ephemeral_postgres(21010 tmp_path_factory: pytest.TempPathFactory, dbname: str21011 ) -> Iterator[str]:21012 """Throwaway Postgres on a unix socket with migrations applied."""21013 datadir = tmp_path_factory.mktemp("pgdata")21014 sockdir = tmp_path_factory.mktemp("pgsock")21015 subprocess.run( # noqa: S60321016 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21017 check=True,21018 capture_output=True,21019 )21020 proc = subprocess.Popen( # noqa: S60321021 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21022 stdout=subprocess.DEVNULL,21023 stderr=subprocess.DEVNULL,21024 )21025 try:21026 deadline = time.monotonic() + 3021027 while (21028 subprocess.run( # noqa: S60321029 ["pg_isready", "-h", str(sockdir), "-U", "test"],21030 check=False,21031 capture_output=True,21032 ).returncode21033 != 021034 ):21035 # The socket appears before recovery finishes; createdb would21036 # fail with "the database system is starting up".21037 if time.monotonic() > deadline:21038 msg = "postgres did not start"21039> raise RuntimeError(msg)21040E RuntimeError: postgres did not start2104121042nixbot/tests/support.py:319: RuntimeError21043___________ ERROR at setup of test_effect_items_resume_only_pending ____________21044[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142104521046self = <Coroutine test_effect_items_resume_only_pending>2104721048 def setup(self) -> None:21049 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21050 if runner_fixture_id not in self.fixturenames:21051 self.fixturenames.append(runner_fixture_id)21052 # When loop factories are configured, resolve the loop factory21053 # fixture early so that a factory variant change cascades cache21054 # invalidation before any async fixture checks its cache.21055 hook_caller = self.config.hook.pytest_asyncio_loop_factories21056 if hook_caller.get_hookimpls():21057 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21058> return super().setup()21059 ^^^^^^^^^^^^^^^2106021061/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21062_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21063nixbot/tests/conftest.py:33: in postgres_dsn21064 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21065 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21066/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21067 return next(self.gen)21068 ^^^^^^^^^^^^^^21069_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2107021071tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21072dbname = 'orchestrator'2107321074 @contextlib.contextmanager21075 def ephemeral_postgres(21076 tmp_path_factory: pytest.TempPathFactory, dbname: str21077 ) -> Iterator[str]:21078 """Throwaway Postgres on a unix socket with migrations applied."""21079 datadir = tmp_path_factory.mktemp("pgdata")21080 sockdir = tmp_path_factory.mktemp("pgsock")21081 subprocess.run( # noqa: S60321082 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21083 check=True,21084 capture_output=True,21085 )21086 proc = subprocess.Popen( # noqa: S60321087 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21088 stdout=subprocess.DEVNULL,21089 stderr=subprocess.DEVNULL,21090 )21091 try:21092 deadline = time.monotonic() + 3021093 while (21094 subprocess.run( # noqa: S60321095 ["pg_isready", "-h", str(sockdir), "-U", "test"],21096 check=False,21097 capture_output=True,21098 ).returncode21099 != 021100 ):21101 # The socket appears before recovery finishes; createdb would21102 # fail with "the database system is starting up".21103 if time.monotonic() > deadline:21104 msg = "postgres did not start"21105> raise RuntimeError(msg)21106E RuntimeError: postgres did not start2110721108nixbot/tests/support.py:319: RuntimeError21109_____________ ERROR at setup of test_effect_crash_settles_the_row ______________21110[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142111121112self = <Coroutine test_effect_crash_settles_the_row>2111321114 def setup(self) -> None:21115 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21116 if runner_fixture_id not in self.fixturenames:21117 self.fixturenames.append(runner_fixture_id)21118 # When loop factories are configured, resolve the loop factory21119 # fixture early so that a factory variant change cascades cache21120 # invalidation before any async fixture checks its cache.21121 hook_caller = self.config.hook.pytest_asyncio_loop_factories21122 if hook_caller.get_hookimpls():21123 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21124> return super().setup()21125 ^^^^^^^^^^^^^^^2112621127/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21128_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21129nixbot/tests/conftest.py:33: in postgres_dsn21130 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21131 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21132/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21133 return next(self.gen)21134 ^^^^^^^^^^^^^^21135_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2113621137tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21138dbname = 'orchestrator'2113921140 @contextlib.contextmanager21141 def ephemeral_postgres(21142 tmp_path_factory: pytest.TempPathFactory, dbname: str21143 ) -> Iterator[str]:21144 """Throwaway Postgres on a unix socket with migrations applied."""21145 datadir = tmp_path_factory.mktemp("pgdata")21146 sockdir = tmp_path_factory.mktemp("pgsock")21147 subprocess.run( # noqa: S60321148 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21149 check=True,21150 capture_output=True,21151 )21152 proc = subprocess.Popen( # noqa: S60321153 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21154 stdout=subprocess.DEVNULL,21155 stderr=subprocess.DEVNULL,21156 )21157 try:21158 deadline = time.monotonic() + 3021159 while (21160 subprocess.run( # noqa: S60321161 ["pg_isready", "-h", str(sockdir), "-U", "test"],21162 check=False,21163 capture_output=True,21164 ).returncode21165 != 021166 ):21167 # The socket appears before recovery finishes; createdb would21168 # fail with "the database system is starting up".21169 if time.monotonic() > deadline:21170 msg = "postgres did not start"21171> raise RuntimeError(msg)21172E RuntimeError: postgres did not start2117321174nixbot/tests/support.py:319: RuntimeError21175_____ ERROR at setup of test_concurrent_effects_use_independent_worktrees ______21176[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142117721178self = <Coroutine test_concurrent_effects_use_independent_worktrees>2117921180 def setup(self) -> None:21181 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21182 if runner_fixture_id not in self.fixturenames:21183 self.fixturenames.append(runner_fixture_id)21184 # When loop factories are configured, resolve the loop factory21185 # fixture early so that a factory variant change cascades cache21186 # invalidation before any async fixture checks its cache.21187 hook_caller = self.config.hook.pytest_asyncio_loop_factories21188 if hook_caller.get_hookimpls():21189 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21190> return super().setup()21191 ^^^^^^^^^^^^^^^2119221193/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21194_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21195nixbot/tests/conftest.py:33: in postgres_dsn21196 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21197 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21198/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21199 return next(self.gen)21200 ^^^^^^^^^^^^^^21201_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2120221203tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21204dbname = 'orchestrator'2120521206 @contextlib.contextmanager21207 def ephemeral_postgres(21208 tmp_path_factory: pytest.TempPathFactory, dbname: str21209 ) -> Iterator[str]:21210 """Throwaway Postgres on a unix socket with migrations applied."""21211 datadir = tmp_path_factory.mktemp("pgdata")21212 sockdir = tmp_path_factory.mktemp("pgsock")21213 subprocess.run( # noqa: S60321214 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21215 check=True,21216 capture_output=True,21217 )21218 proc = subprocess.Popen( # noqa: S60321219 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21220 stdout=subprocess.DEVNULL,21221 stderr=subprocess.DEVNULL,21222 )21223 try:21224 deadline = time.monotonic() + 3021225 while (21226 subprocess.run( # noqa: S60321227 ["pg_isready", "-h", str(sockdir), "-U", "test"],21228 check=False,21229 capture_output=True,21230 ).returncode21231 != 021232 ):21233 # The socket appears before recovery finishes; createdb would21234 # fail with "the database system is starting up".21235 if time.monotonic() > deadline:21236 msg = "postgres did not start"21237> raise RuntimeError(msg)21238E RuntimeError: postgres did not start2123921240nixbot/tests/support.py:319: RuntimeError21241__________ ERROR at setup of test_locked_effect_gets_shared_dedup_key __________21242[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142124321244self = <Coroutine test_locked_effect_gets_shared_dedup_key>2124521246 def setup(self) -> None:21247 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21248 if runner_fixture_id not in self.fixturenames:21249 self.fixturenames.append(runner_fixture_id)21250 # When loop factories are configured, resolve the loop factory21251 # fixture early so that a factory variant change cascades cache21252 # invalidation before any async fixture checks its cache.21253 hook_caller = self.config.hook.pytest_asyncio_loop_factories21254 if hook_caller.get_hookimpls():21255 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21256> return super().setup()21257 ^^^^^^^^^^^^^^^2125821259/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21260_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21261nixbot/tests/conftest.py:33: in postgres_dsn21262 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21263 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21264/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21265 return next(self.gen)21266 ^^^^^^^^^^^^^^21267_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2126821269tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21270dbname = 'orchestrator'2127121272 @contextlib.contextmanager21273 def ephemeral_postgres(21274 tmp_path_factory: pytest.TempPathFactory, dbname: str21275 ) -> Iterator[str]:21276 """Throwaway Postgres on a unix socket with migrations applied."""21277 datadir = tmp_path_factory.mktemp("pgdata")21278 sockdir = tmp_path_factory.mktemp("pgsock")21279 subprocess.run( # noqa: S60321280 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21281 check=True,21282 capture_output=True,21283 )21284 proc = subprocess.Popen( # noqa: S60321285 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21286 stdout=subprocess.DEVNULL,21287 stderr=subprocess.DEVNULL,21288 )21289 try:21290 deadline = time.monotonic() + 3021291 while (21292 subprocess.run( # noqa: S60321293 ["pg_isready", "-h", str(sockdir), "-U", "test"],21294 check=False,21295 capture_output=True,21296 ).returncode21297 != 021298 ):21299 # The socket appears before recovery finishes; createdb would21300 # fail with "the database system is starting up".21301 if time.monotonic() > deadline:21302 msg = "postgres did not start"21303> raise RuntimeError(msg)21304E RuntimeError: postgres did not start2130521306nixbot/tests/support.py:319: RuntimeError21307______ ERROR at setup of test_effect_item_not_claimable_until_dep_settles ______21308[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142130921310self = <Coroutine test_effect_item_not_claimable_until_dep_settles>2131121312 def setup(self) -> None:21313 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21314 if runner_fixture_id not in self.fixturenames:21315 self.fixturenames.append(runner_fixture_id)21316 # When loop factories are configured, resolve the loop factory21317 # fixture early so that a factory variant change cascades cache21318 # invalidation before any async fixture checks its cache.21319 hook_caller = self.config.hook.pytest_asyncio_loop_factories21320 if hook_caller.get_hookimpls():21321 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21322> return super().setup()21323 ^^^^^^^^^^^^^^^2132421325/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21326_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21327nixbot/tests/conftest.py:33: in postgres_dsn21328 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21329 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21330/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21331 return next(self.gen)21332 ^^^^^^^^^^^^^^21333_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2133421335tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21336dbname = 'orchestrator'2133721338 @contextlib.contextmanager21339 def ephemeral_postgres(21340 tmp_path_factory: pytest.TempPathFactory, dbname: str21341 ) -> Iterator[str]:21342 """Throwaway Postgres on a unix socket with migrations applied."""21343 datadir = tmp_path_factory.mktemp("pgdata")21344 sockdir = tmp_path_factory.mktemp("pgsock")21345 subprocess.run( # noqa: S60321346 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21347 check=True,21348 capture_output=True,21349 )21350 proc = subprocess.Popen( # noqa: S60321351 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21352 stdout=subprocess.DEVNULL,21353 stderr=subprocess.DEVNULL,21354 )21355 try:21356 deadline = time.monotonic() + 3021357 while (21358 subprocess.run( # noqa: S60321359 ["pg_isready", "-h", str(sockdir), "-U", "test"],21360 check=False,21361 capture_output=True,21362 ).returncode21363 != 021364 ):21365 # The socket appears before recovery finishes; createdb would21366 # fail with "the database system is starting up".21367 if time.monotonic() > deadline:21368 msg = "postgres did not start"21369> raise RuntimeError(msg)21370E RuntimeError: postgres did not start2137121372nixbot/tests/support.py:319: RuntimeError21373__________ ERROR at setup of test_effect_dep_failure_skips_dependent ___________21374[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142137521376self = <Coroutine test_effect_dep_failure_skips_dependent>2137721378 def setup(self) -> None:21379 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21380 if runner_fixture_id not in self.fixturenames:21381 self.fixturenames.append(runner_fixture_id)21382 # When loop factories are configured, resolve the loop factory21383 # fixture early so that a factory variant change cascades cache21384 # invalidation before any async fixture checks its cache.21385 hook_caller = self.config.hook.pytest_asyncio_loop_factories21386 if hook_caller.get_hookimpls():21387 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21388> return super().setup()21389 ^^^^^^^^^^^^^^^2139021391/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21392_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21393nixbot/tests/conftest.py:33: in postgres_dsn21394 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21395 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21396/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21397 return next(self.gen)21398 ^^^^^^^^^^^^^^21399_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2140021401tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21402dbname = 'orchestrator'2140321404 @contextlib.contextmanager21405 def ephemeral_postgres(21406 tmp_path_factory: pytest.TempPathFactory, dbname: str21407 ) -> Iterator[str]:21408 """Throwaway Postgres on a unix socket with migrations applied."""21409 datadir = tmp_path_factory.mktemp("pgdata")21410 sockdir = tmp_path_factory.mktemp("pgsock")21411 subprocess.run( # noqa: S60321412 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21413 check=True,21414 capture_output=True,21415 )21416 proc = subprocess.Popen( # noqa: S60321417 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21418 stdout=subprocess.DEVNULL,21419 stderr=subprocess.DEVNULL,21420 )21421 try:21422 deadline = time.monotonic() + 3021423 while (21424 subprocess.run( # noqa: S60321425 ["pg_isready", "-h", str(sockdir), "-U", "test"],21426 check=False,21427 capture_output=True,21428 ).returncode21429 != 021430 ):21431 # The socket appears before recovery finishes; createdb would21432 # fail with "the database system is starting up".21433 if time.monotonic() > deadline:21434 msg = "postgres did not start"21435> raise RuntimeError(msg)21436E RuntimeError: postgres did not start2143721438nixbot/tests/support.py:319: RuntimeError21439______ ERROR at setup of test_lock_serializes_builds_without_interleaving ______21440[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142144121442self = <Coroutine test_lock_serializes_builds_without_interleaving>2144321444 def setup(self) -> None:21445 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21446 if runner_fixture_id not in self.fixturenames:21447 self.fixturenames.append(runner_fixture_id)21448 # When loop factories are configured, resolve the loop factory21449 # fixture early so that a factory variant change cascades cache21450 # invalidation before any async fixture checks its cache.21451 hook_caller = self.config.hook.pytest_asyncio_loop_factories21452 if hook_caller.get_hookimpls():21453 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21454> return super().setup()21455 ^^^^^^^^^^^^^^^2145621457/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21458_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21459nixbot/tests/conftest.py:33: in postgres_dsn21460 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21461 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21462/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21463 return next(self.gen)21464 ^^^^^^^^^^^^^^21465_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2146621467tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21468dbname = 'orchestrator'2146921470 @contextlib.contextmanager21471 def ephemeral_postgres(21472 tmp_path_factory: pytest.TempPathFactory, dbname: str21473 ) -> Iterator[str]:21474 """Throwaway Postgres on a unix socket with migrations applied."""21475 datadir = tmp_path_factory.mktemp("pgdata")21476 sockdir = tmp_path_factory.mktemp("pgsock")21477 subprocess.run( # noqa: S60321478 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21479 check=True,21480 capture_output=True,21481 )21482 proc = subprocess.Popen( # noqa: S60321483 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21484 stdout=subprocess.DEVNULL,21485 stderr=subprocess.DEVNULL,21486 )21487 try:21488 deadline = time.monotonic() + 3021489 while (21490 subprocess.run( # noqa: S60321491 ["pg_isready", "-h", str(sockdir), "-U", "test"],21492 check=False,21493 capture_output=True,21494 ).returncode21495 != 021496 ):21497 # The socket appears before recovery finishes; createdb would21498 # fail with "the database system is starting up".21499 if time.monotonic() > deadline:21500 msg = "postgres did not start"21501> raise RuntimeError(msg)21502E RuntimeError: postgres did not start2150321504nixbot/tests/support.py:319: RuntimeError21505___________ ERROR at setup of test_effect_dep_cycle_fails_discovery ____________21506[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142150721508self = <Coroutine test_effect_dep_cycle_fails_discovery>2150921510 def setup(self) -> None:21511 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21512 if runner_fixture_id not in self.fixturenames:21513 self.fixturenames.append(runner_fixture_id)21514 # When loop factories are configured, resolve the loop factory21515 # fixture early so that a factory variant change cascades cache21516 # invalidation before any async fixture checks its cache.21517 hook_caller = self.config.hook.pytest_asyncio_loop_factories21518 if hook_caller.get_hookimpls():21519 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21520> return super().setup()21521 ^^^^^^^^^^^^^^^2152221523/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21524_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21525nixbot/tests/conftest.py:33: in postgres_dsn21526 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21527 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21528/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21529 return next(self.gen)21530 ^^^^^^^^^^^^^^21531_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2153221533tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21534dbname = 'orchestrator'2153521536 @contextlib.contextmanager21537 def ephemeral_postgres(21538 tmp_path_factory: pytest.TempPathFactory, dbname: str21539 ) -> Iterator[str]:21540 """Throwaway Postgres on a unix socket with migrations applied."""21541 datadir = tmp_path_factory.mktemp("pgdata")21542 sockdir = tmp_path_factory.mktemp("pgsock")21543 subprocess.run( # noqa: S60321544 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21545 check=True,21546 capture_output=True,21547 )21548 proc = subprocess.Popen( # noqa: S60321549 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21550 stdout=subprocess.DEVNULL,21551 stderr=subprocess.DEVNULL,21552 )21553 try:21554 deadline = time.monotonic() + 3021555 while (21556 subprocess.run( # noqa: S60321557 ["pg_isready", "-h", str(sockdir), "-U", "test"],21558 check=False,21559 capture_output=True,21560 ).returncode21561 != 021562 ):21563 # The socket appears before recovery finishes; createdb would21564 # fail with "the database system is starting up".21565 if time.monotonic() > deadline:21566 msg = "postgres did not start"21567> raise RuntimeError(msg)21568E RuntimeError: postgres did not start2156921570nixbot/tests/support.py:319: RuntimeError21571_________ ERROR at setup of test_failed_effect_reports_failure_status __________21572[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142157321574self = <Coroutine test_failed_effect_reports_failure_status>2157521576 def setup(self) -> None:21577 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21578 if runner_fixture_id not in self.fixturenames:21579 self.fixturenames.append(runner_fixture_id)21580 # When loop factories are configured, resolve the loop factory21581 # fixture early so that a factory variant change cascades cache21582 # invalidation before any async fixture checks its cache.21583 hook_caller = self.config.hook.pytest_asyncio_loop_factories21584 if hook_caller.get_hookimpls():21585 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21586> return super().setup()21587 ^^^^^^^^^^^^^^^2158821589/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21590_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21591nixbot/tests/conftest.py:33: in postgres_dsn21592 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21593 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21594/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21595 return next(self.gen)21596 ^^^^^^^^^^^^^^21597_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2159821599tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21600dbname = 'orchestrator'2160121602 @contextlib.contextmanager21603 def ephemeral_postgres(21604 tmp_path_factory: pytest.TempPathFactory, dbname: str21605 ) -> Iterator[str]:21606 """Throwaway Postgres on a unix socket with migrations applied."""21607 datadir = tmp_path_factory.mktemp("pgdata")21608 sockdir = tmp_path_factory.mktemp("pgsock")21609 subprocess.run( # noqa: S60321610 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21611 check=True,21612 capture_output=True,21613 )21614 proc = subprocess.Popen( # noqa: S60321615 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21616 stdout=subprocess.DEVNULL,21617 stderr=subprocess.DEVNULL,21618 )21619 try:21620 deadline = time.monotonic() + 3021621 while (21622 subprocess.run( # noqa: S60321623 ["pg_isready", "-h", str(sockdir), "-U", "test"],21624 check=False,21625 capture_output=True,21626 ).returncode21627 != 021628 ):21629 # The socket appears before recovery finishes; createdb would21630 # fail with "the database system is starting up".21631 if time.monotonic() > deadline:21632 msg = "postgres did not start"21633> raise RuntimeError(msg)21634E RuntimeError: postgres did not start2163521636nixbot/tests/support.py:319: RuntimeError21637________ ERROR at setup of test_post_process_error_does_not_wedge_build ________21638[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142163921640self = <Coroutine test_post_process_error_does_not_wedge_build>2164121642 def setup(self) -> None:21643 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21644 if runner_fixture_id not in self.fixturenames:21645 self.fixturenames.append(runner_fixture_id)21646 # When loop factories are configured, resolve the loop factory21647 # fixture early so that a factory variant change cascades cache21648 # invalidation before any async fixture checks its cache.21649 hook_caller = self.config.hook.pytest_asyncio_loop_factories21650 if hook_caller.get_hookimpls():21651 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21652> return super().setup()21653 ^^^^^^^^^^^^^^^2165421655/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21656_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21657nixbot/tests/conftest.py:33: in postgres_dsn21658 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21659 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21660/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21661 return next(self.gen)21662 ^^^^^^^^^^^^^^21663_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2166421665tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21666dbname = 'orchestrator'2166721668 @contextlib.contextmanager21669 def ephemeral_postgres(21670 tmp_path_factory: pytest.TempPathFactory, dbname: str21671 ) -> Iterator[str]:21672 """Throwaway Postgres on a unix socket with migrations applied."""21673 datadir = tmp_path_factory.mktemp("pgdata")21674 sockdir = tmp_path_factory.mktemp("pgsock")21675 subprocess.run( # noqa: S60321676 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21677 check=True,21678 capture_output=True,21679 )21680 proc = subprocess.Popen( # noqa: S60321681 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21682 stdout=subprocess.DEVNULL,21683 stderr=subprocess.DEVNULL,21684 )21685 try:21686 deadline = time.monotonic() + 3021687 while (21688 subprocess.run( # noqa: S60321689 ["pg_isready", "-h", str(sockdir), "-U", "test"],21690 check=False,21691 capture_output=True,21692 ).returncode21693 != 021694 ):21695 # The socket appears before recovery finishes; createdb would21696 # fail with "the database system is starting up".21697 if time.monotonic() > deadline:21698 msg = "postgres did not start"21699> raise RuntimeError(msg)21700E RuntimeError: postgres did not start2170121702nixbot/tests/support.py:319: RuntimeError21703_______ ERROR at setup of test_unexpected_eval_path_error_settles_build ________21704[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142170521706self = <Coroutine test_unexpected_eval_path_error_settles_build>2170721708 def setup(self) -> None:21709 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21710 if runner_fixture_id not in self.fixturenames:21711 self.fixturenames.append(runner_fixture_id)21712 # When loop factories are configured, resolve the loop factory21713 # fixture early so that a factory variant change cascades cache21714 # invalidation before any async fixture checks its cache.21715 hook_caller = self.config.hook.pytest_asyncio_loop_factories21716 if hook_caller.get_hookimpls():21717 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21718> return super().setup()21719 ^^^^^^^^^^^^^^^2172021721/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21722_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21723nixbot/tests/conftest.py:33: in postgres_dsn21724 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21725 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21726/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21727 return next(self.gen)21728 ^^^^^^^^^^^^^^21729_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2173021731tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21732dbname = 'orchestrator'2173321734 @contextlib.contextmanager21735 def ephemeral_postgres(21736 tmp_path_factory: pytest.TempPathFactory, dbname: str21737 ) -> Iterator[str]:21738 """Throwaway Postgres on a unix socket with migrations applied."""21739 datadir = tmp_path_factory.mktemp("pgdata")21740 sockdir = tmp_path_factory.mktemp("pgsock")21741 subprocess.run( # noqa: S60321742 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21743 check=True,21744 capture_output=True,21745 )21746 proc = subprocess.Popen( # noqa: S60321747 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21748 stdout=subprocess.DEVNULL,21749 stderr=subprocess.DEVNULL,21750 )21751 try:21752 deadline = time.monotonic() + 3021753 while (21754 subprocess.run( # noqa: S60321755 ["pg_isready", "-h", str(sockdir), "-U", "test"],21756 check=False,21757 capture_output=True,21758 ).returncode21759 != 021760 ):21761 # The socket appears before recovery finishes; createdb would21762 # fail with "the database system is starting up".21763 if time.monotonic() > deadline:21764 msg = "postgres did not start"21765> raise RuntimeError(msg)21766E RuntimeError: postgres did not start2176721768nixbot/tests/support.py:319: RuntimeError21769____ ERROR at setup of test_reuse_empty_succeeded_build_posts_eval_success _____21770[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142177121772self = <Coroutine test_reuse_empty_succeeded_build_posts_eval_success>2177321774 def setup(self) -> None:21775 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21776 if runner_fixture_id not in self.fixturenames:21777 self.fixturenames.append(runner_fixture_id)21778 # When loop factories are configured, resolve the loop factory21779 # fixture early so that a factory variant change cascades cache21780 # invalidation before any async fixture checks its cache.21781 hook_caller = self.config.hook.pytest_asyncio_loop_factories21782 if hook_caller.get_hookimpls():21783 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21784> return super().setup()21785 ^^^^^^^^^^^^^^^2178621787/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21788_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21789nixbot/tests/conftest.py:33: in postgres_dsn21790 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21791 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21792/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21793 return next(self.gen)21794 ^^^^^^^^^^^^^^21795_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2179621797tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21798dbname = 'orchestrator'2179921800 @contextlib.contextmanager21801 def ephemeral_postgres(21802 tmp_path_factory: pytest.TempPathFactory, dbname: str21803 ) -> Iterator[str]:21804 """Throwaway Postgres on a unix socket with migrations applied."""21805 datadir = tmp_path_factory.mktemp("pgdata")21806 sockdir = tmp_path_factory.mktemp("pgsock")21807 subprocess.run( # noqa: S60321808 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21809 check=True,21810 capture_output=True,21811 )21812 proc = subprocess.Popen( # noqa: S60321813 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21814 stdout=subprocess.DEVNULL,21815 stderr=subprocess.DEVNULL,21816 )21817 try:21818 deadline = time.monotonic() + 3021819 while (21820 subprocess.run( # noqa: S60321821 ["pg_isready", "-h", str(sockdir), "-U", "test"],21822 check=False,21823 capture_output=True,21824 ).returncode21825 != 021826 ):21827 # The socket appears before recovery finishes; createdb would21828 # fail with "the database system is starting up".21829 if time.monotonic() > deadline:21830 msg = "postgres did not start"21831> raise RuntimeError(msg)21832E RuntimeError: postgres did not start2183321834nixbot/tests/support.py:319: RuntimeError21835__ ERROR at setup of test_stale_event_reusing_old_build_does_not_cancel_newer __21836[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142183721838self = <Coroutine test_stale_event_reusing_old_build_does_not_cancel_newer>2183921840 def setup(self) -> None:21841 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21842 if runner_fixture_id not in self.fixturenames:21843 self.fixturenames.append(runner_fixture_id)21844 # When loop factories are configured, resolve the loop factory21845 # fixture early so that a factory variant change cascades cache21846 # invalidation before any async fixture checks its cache.21847 hook_caller = self.config.hook.pytest_asyncio_loop_factories21848 if hook_caller.get_hookimpls():21849 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21850> return super().setup()21851 ^^^^^^^^^^^^^^^2185221853/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21854_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21855nixbot/tests/conftest.py:33: in postgres_dsn21856 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21857 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21858/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21859 return next(self.gen)21860 ^^^^^^^^^^^^^^21861_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2186221863tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21864dbname = 'orchestrator'2186521866 @contextlib.contextmanager21867 def ephemeral_postgres(21868 tmp_path_factory: pytest.TempPathFactory, dbname: str21869 ) -> Iterator[str]:21870 """Throwaway Postgres on a unix socket with migrations applied."""21871 datadir = tmp_path_factory.mktemp("pgdata")21872 sockdir = tmp_path_factory.mktemp("pgsock")21873 subprocess.run( # noqa: S60321874 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21875 check=True,21876 capture_output=True,21877 )21878 proc = subprocess.Popen( # noqa: S60321879 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21880 stdout=subprocess.DEVNULL,21881 stderr=subprocess.DEVNULL,21882 )21883 try:21884 deadline = time.monotonic() + 3021885 while (21886 subprocess.run( # noqa: S60321887 ["pg_isready", "-h", str(sockdir), "-U", "test"],21888 check=False,21889 capture_output=True,21890 ).returncode21891 != 021892 ):21893 # The socket appears before recovery finishes; createdb would21894 # fail with "the database system is starting up".21895 if time.monotonic() > deadline:21896 msg = "postgres did not start"21897> raise RuntimeError(msg)21898E RuntimeError: postgres did not start2189921900nixbot/tests/support.py:319: RuntimeError21901______ ERROR at setup of test_reuse_for_default_branch_push_runs_effects _______21902[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142190321904self = <Coroutine test_reuse_for_default_branch_push_runs_effects>2190521906 def setup(self) -> None:21907 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21908 if runner_fixture_id not in self.fixturenames:21909 self.fixturenames.append(runner_fixture_id)21910 # When loop factories are configured, resolve the loop factory21911 # fixture early so that a factory variant change cascades cache21912 # invalidation before any async fixture checks its cache.21913 hook_caller = self.config.hook.pytest_asyncio_loop_factories21914 if hook_caller.get_hookimpls():21915 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21916> return super().setup()21917 ^^^^^^^^^^^^^^^2191821919/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21920_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21921nixbot/tests/conftest.py:33: in postgres_dsn21922 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21923 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21924/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21925 return next(self.gen)21926 ^^^^^^^^^^^^^^21927_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2192821929tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21930dbname = 'orchestrator'2193121932 @contextlib.contextmanager21933 def ephemeral_postgres(21934 tmp_path_factory: pytest.TempPathFactory, dbname: str21935 ) -> Iterator[str]:21936 """Throwaway Postgres on a unix socket with migrations applied."""21937 datadir = tmp_path_factory.mktemp("pgdata")21938 sockdir = tmp_path_factory.mktemp("pgsock")21939 subprocess.run( # noqa: S60321940 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],21941 check=True,21942 capture_output=True,21943 )21944 proc = subprocess.Popen( # noqa: S60321945 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],21946 stdout=subprocess.DEVNULL,21947 stderr=subprocess.DEVNULL,21948 )21949 try:21950 deadline = time.monotonic() + 3021951 while (21952 subprocess.run( # noqa: S60321953 ["pg_isready", "-h", str(sockdir), "-U", "test"],21954 check=False,21955 capture_output=True,21956 ).returncode21957 != 021958 ):21959 # The socket appears before recovery finishes; createdb would21960 # fail with "the database system is starting up".21961 if time.monotonic() > deadline:21962 msg = "postgres did not start"21963> raise RuntimeError(msg)21964E RuntimeError: postgres did not start2196521966nixbot/tests/support.py:319: RuntimeError21967__ ERROR at setup of test_tag_reusing_deployed_build_delivers_its_own_effects __21968[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142196921970self = <Coroutine test_tag_reusing_deployed_build_delivers_its_own_effects>2197121972 def setup(self) -> None:21973 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"21974 if runner_fixture_id not in self.fixturenames:21975 self.fixturenames.append(runner_fixture_id)21976 # When loop factories are configured, resolve the loop factory21977 # fixture early so that a factory variant change cascades cache21978 # invalidation before any async fixture checks its cache.21979 hook_caller = self.config.hook.pytest_asyncio_loop_factories21980 if hook_caller.get_hookimpls():21981 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)21982> return super().setup()21983 ^^^^^^^^^^^^^^^2198421985/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 21986_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 21987nixbot/tests/conftest.py:33: in postgres_dsn21988 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:21989 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^21990/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__21991 return next(self.gen)21992 ^^^^^^^^^^^^^^21993_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2199421995tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')21996dbname = 'orchestrator'2199721998 @contextlib.contextmanager21999 def ephemeral_postgres(22000 tmp_path_factory: pytest.TempPathFactory, dbname: str22001 ) -> Iterator[str]:22002 """Throwaway Postgres on a unix socket with migrations applied."""22003 datadir = tmp_path_factory.mktemp("pgdata")22004 sockdir = tmp_path_factory.mktemp("pgsock")22005 subprocess.run( # noqa: S60322006 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22007 check=True,22008 capture_output=True,22009 )22010 proc = subprocess.Popen( # noqa: S60322011 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22012 stdout=subprocess.DEVNULL,22013 stderr=subprocess.DEVNULL,22014 )22015 try:22016 deadline = time.monotonic() + 3022017 while (22018 subprocess.run( # noqa: S60322019 ["pg_isready", "-h", str(sockdir), "-U", "test"],22020 check=False,22021 capture_output=True,22022 ).returncode22023 != 022024 ):22025 # The socket appears before recovery finishes; createdb would22026 # fail with "the database system is starting up".22027 if time.monotonic() > deadline:22028 msg = "postgres did not start"22029> raise RuntimeError(msg)22030E RuntimeError: postgres did not start2203122032nixbot/tests/support.py:319: RuntimeError22033__ ERROR at setup of test_tag_attached_to_in_flight_build_delivers_on_success __22034[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142203522036self = <Coroutine test_tag_attached_to_in_flight_build_delivers_on_success>2203722038 def setup(self) -> None:22039 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22040 if runner_fixture_id not in self.fixturenames:22041 self.fixturenames.append(runner_fixture_id)22042 # When loop factories are configured, resolve the loop factory22043 # fixture early so that a factory variant change cascades cache22044 # invalidation before any async fixture checks its cache.22045 hook_caller = self.config.hook.pytest_asyncio_loop_factories22046 if hook_caller.get_hookimpls():22047 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22048> return super().setup()22049 ^^^^^^^^^^^^^^^2205022051/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22052_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22053nixbot/tests/conftest.py:33: in postgres_dsn22054 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22055 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22056/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22057 return next(self.gen)22058 ^^^^^^^^^^^^^^22059_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2206022061tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22062dbname = 'orchestrator'2206322064 @contextlib.contextmanager22065 def ephemeral_postgres(22066 tmp_path_factory: pytest.TempPathFactory, dbname: str22067 ) -> Iterator[str]:22068 """Throwaway Postgres on a unix socket with migrations applied."""22069 datadir = tmp_path_factory.mktemp("pgdata")22070 sockdir = tmp_path_factory.mktemp("pgsock")22071 subprocess.run( # noqa: S60322072 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22073 check=True,22074 capture_output=True,22075 )22076 proc = subprocess.Popen( # noqa: S60322077 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22078 stdout=subprocess.DEVNULL,22079 stderr=subprocess.DEVNULL,22080 )22081 try:22082 deadline = time.monotonic() + 3022083 while (22084 subprocess.run( # noqa: S60322085 ["pg_isready", "-h", str(sockdir), "-U", "test"],22086 check=False,22087 capture_output=True,22088 ).returncode22089 != 022090 ):22091 # The socket appears before recovery finishes; createdb would22092 # fail with "the database system is starting up".22093 if time.monotonic() > deadline:22094 msg = "postgres did not start"22095> raise RuntimeError(msg)22096E RuntimeError: postgres did not start2209722098nixbot/tests/support.py:319: RuntimeError22099______ ERROR at setup of test_restart_of_gated_build_settles_effect_rows _______22100[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142210122102self = <Coroutine test_restart_of_gated_build_settles_effect_rows>2210322104 def setup(self) -> None:22105 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22106 if runner_fixture_id not in self.fixturenames:22107 self.fixturenames.append(runner_fixture_id)22108 # When loop factories are configured, resolve the loop factory22109 # fixture early so that a factory variant change cascades cache22110 # invalidation before any async fixture checks its cache.22111 hook_caller = self.config.hook.pytest_asyncio_loop_factories22112 if hook_caller.get_hookimpls():22113 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22114> return super().setup()22115 ^^^^^^^^^^^^^^^2211622117/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22118_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22119nixbot/tests/conftest.py:33: in postgres_dsn22120 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22121 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22122/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22123 return next(self.gen)22124 ^^^^^^^^^^^^^^22125_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2212622127tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22128dbname = 'orchestrator'2212922130 @contextlib.contextmanager22131 def ephemeral_postgres(22132 tmp_path_factory: pytest.TempPathFactory, dbname: str22133 ) -> Iterator[str]:22134 """Throwaway Postgres on a unix socket with migrations applied."""22135 datadir = tmp_path_factory.mktemp("pgdata")22136 sockdir = tmp_path_factory.mktemp("pgsock")22137 subprocess.run( # noqa: S60322138 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22139 check=True,22140 capture_output=True,22141 )22142 proc = subprocess.Popen( # noqa: S60322143 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22144 stdout=subprocess.DEVNULL,22145 stderr=subprocess.DEVNULL,22146 )22147 try:22148 deadline = time.monotonic() + 3022149 while (22150 subprocess.run( # noqa: S60322151 ["pg_isready", "-h", str(sockdir), "-U", "test"],22152 check=False,22153 capture_output=True,22154 ).returncode22155 != 022156 ):22157 # The socket appears before recovery finishes; createdb would22158 # fail with "the database system is starting up".22159 if time.monotonic() > deadline:22160 msg = "postgres did not start"22161> raise RuntimeError(msg)22162E RuntimeError: postgres did not start2216322164nixbot/tests/support.py:319: RuntimeError22165________ ERROR at setup of test_restart_build_drops_queued_effect_items ________22166[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142216722168self = <Coroutine test_restart_build_drops_queued_effect_items>2216922170 def setup(self) -> None:22171 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22172 if runner_fixture_id not in self.fixturenames:22173 self.fixturenames.append(runner_fixture_id)22174 # When loop factories are configured, resolve the loop factory22175 # fixture early so that a factory variant change cascades cache22176 # invalidation before any async fixture checks its cache.22177 hook_caller = self.config.hook.pytest_asyncio_loop_factories22178 if hook_caller.get_hookimpls():22179 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22180> return super().setup()22181 ^^^^^^^^^^^^^^^2218222183/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22184_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22185nixbot/tests/conftest.py:33: in postgres_dsn22186 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22187 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22188/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22189 return next(self.gen)22190 ^^^^^^^^^^^^^^22191_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2219222193tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22194dbname = 'orchestrator'2219522196 @contextlib.contextmanager22197 def ephemeral_postgres(22198 tmp_path_factory: pytest.TempPathFactory, dbname: str22199 ) -> Iterator[str]:22200 """Throwaway Postgres on a unix socket with migrations applied."""22201 datadir = tmp_path_factory.mktemp("pgdata")22202 sockdir = tmp_path_factory.mktemp("pgsock")22203 subprocess.run( # noqa: S60322204 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22205 check=True,22206 capture_output=True,22207 )22208 proc = subprocess.Popen( # noqa: S60322209 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22210 stdout=subprocess.DEVNULL,22211 stderr=subprocess.DEVNULL,22212 )22213 try:22214 deadline = time.monotonic() + 3022215 while (22216 subprocess.run( # noqa: S60322217 ["pg_isready", "-h", str(sockdir), "-U", "test"],22218 check=False,22219 capture_output=True,22220 ).returncode22221 != 022222 ):22223 # The socket appears before recovery finishes; createdb would22224 # fail with "the database system is starting up".22225 if time.monotonic() > deadline:22226 msg = "postgres did not start"22227> raise RuntimeError(msg)22228E RuntimeError: postgres did not start2222922230nixbot/tests/support.py:319: RuntimeError22231___ ERROR at setup of test_restart_effects_after_pr_attach_keeps_effects_ref ___22232[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142223322234self = <Coroutine test_restart_effects_after_pr_attach_keeps_effects_ref>2223522236 def setup(self) -> None:22237 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22238 if runner_fixture_id not in self.fixturenames:22239 self.fixturenames.append(runner_fixture_id)22240 # When loop factories are configured, resolve the loop factory22241 # fixture early so that a factory variant change cascades cache22242 # invalidation before any async fixture checks its cache.22243 hook_caller = self.config.hook.pytest_asyncio_loop_factories22244 if hook_caller.get_hookimpls():22245 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22246> return super().setup()22247 ^^^^^^^^^^^^^^^2224822249/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22250_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22251nixbot/tests/conftest.py:33: in postgres_dsn22252 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22253 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22254/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22255 return next(self.gen)22256 ^^^^^^^^^^^^^^22257_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2225822259tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22260dbname = 'orchestrator'2226122262 @contextlib.contextmanager22263 def ephemeral_postgres(22264 tmp_path_factory: pytest.TempPathFactory, dbname: str22265 ) -> Iterator[str]:22266 """Throwaway Postgres on a unix socket with migrations applied."""22267 datadir = tmp_path_factory.mktemp("pgdata")22268 sockdir = tmp_path_factory.mktemp("pgsock")22269 subprocess.run( # noqa: S60322270 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22271 check=True,22272 capture_output=True,22273 )22274 proc = subprocess.Popen( # noqa: S60322275 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22276 stdout=subprocess.DEVNULL,22277 stderr=subprocess.DEVNULL,22278 )22279 try:22280 deadline = time.monotonic() + 3022281 while (22282 subprocess.run( # noqa: S60322283 ["pg_isready", "-h", str(sockdir), "-U", "test"],22284 check=False,22285 capture_output=True,22286 ).returncode22287 != 022288 ):22289 # The socket appears before recovery finishes; createdb would22290 # fail with "the database system is starting up".22291 if time.monotonic() > deadline:22292 msg = "postgres did not start"22293> raise RuntimeError(msg)22294E RuntimeError: postgres did not start2229522296nixbot/tests/support.py:319: RuntimeError22297_______ ERROR at setup of test_gated_restart_then_allowed_reuse_deploys ________22298[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142229922300self = <Coroutine test_gated_restart_then_allowed_reuse_deploys>2230122302 def setup(self) -> None:22303 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22304 if runner_fixture_id not in self.fixturenames:22305 self.fixturenames.append(runner_fixture_id)22306 # When loop factories are configured, resolve the loop factory22307 # fixture early so that a factory variant change cascades cache22308 # invalidation before any async fixture checks its cache.22309 hook_caller = self.config.hook.pytest_asyncio_loop_factories22310 if hook_caller.get_hookimpls():22311 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22312> return super().setup()22313 ^^^^^^^^^^^^^^^2231422315/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22316_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22317nixbot/tests/conftest.py:33: in postgres_dsn22318 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22319 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22320/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22321 return next(self.gen)22322 ^^^^^^^^^^^^^^22323_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2232422325tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22326dbname = 'orchestrator'2232722328 @contextlib.contextmanager22329 def ephemeral_postgres(22330 tmp_path_factory: pytest.TempPathFactory, dbname: str22331 ) -> Iterator[str]:22332 """Throwaway Postgres on a unix socket with migrations applied."""22333 datadir = tmp_path_factory.mktemp("pgdata")22334 sockdir = tmp_path_factory.mktemp("pgsock")22335 subprocess.run( # noqa: S60322336 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22337 check=True,22338 capture_output=True,22339 )22340 proc = subprocess.Popen( # noqa: S60322341 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22342 stdout=subprocess.DEVNULL,22343 stderr=subprocess.DEVNULL,22344 )22345 try:22346 deadline = time.monotonic() + 3022347 while (22348 subprocess.run( # noqa: S60322349 ["pg_isready", "-h", str(sockdir), "-U", "test"],22350 check=False,22351 capture_output=True,22352 ).returncode22353 != 022354 ):22355 # The socket appears before recovery finishes; createdb would22356 # fail with "the database system is starting up".22357 if time.monotonic() > deadline:22358 msg = "postgres did not start"22359> raise RuntimeError(msg)22360E RuntimeError: postgres did not start2236122362nixbot/tests/support.py:319: RuntimeError22363_____ ERROR at setup of test_rerun_single_effect_takes_pending_dependents ______22364[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142236522366self = <Coroutine test_rerun_single_effect_takes_pending_dependents>2236722368 def setup(self) -> None:22369 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22370 if runner_fixture_id not in self.fixturenames:22371 self.fixturenames.append(runner_fixture_id)22372 # When loop factories are configured, resolve the loop factory22373 # fixture early so that a factory variant change cascades cache22374 # invalidation before any async fixture checks its cache.22375 hook_caller = self.config.hook.pytest_asyncio_loop_factories22376 if hook_caller.get_hookimpls():22377 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22378> return super().setup()22379 ^^^^^^^^^^^^^^^2238022381/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22382_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22383nixbot/tests/conftest.py:33: in postgres_dsn22384 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22385 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22386/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22387 return next(self.gen)22388 ^^^^^^^^^^^^^^22389_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2239022391tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22392dbname = 'orchestrator'2239322394 @contextlib.contextmanager22395 def ephemeral_postgres(22396 tmp_path_factory: pytest.TempPathFactory, dbname: str22397 ) -> Iterator[str]:22398 """Throwaway Postgres on a unix socket with migrations applied."""22399 datadir = tmp_path_factory.mktemp("pgdata")22400 sockdir = tmp_path_factory.mktemp("pgsock")22401 subprocess.run( # noqa: S60322402 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22403 check=True,22404 capture_output=True,22405 )22406 proc = subprocess.Popen( # noqa: S60322407 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22408 stdout=subprocess.DEVNULL,22409 stderr=subprocess.DEVNULL,22410 )22411 try:22412 deadline = time.monotonic() + 3022413 while (22414 subprocess.run( # noqa: S60322415 ["pg_isready", "-h", str(sockdir), "-U", "test"],22416 check=False,22417 capture_output=True,22418 ).returncode22419 != 022420 ):22421 # The socket appears before recovery finishes; createdb would22422 # fail with "the database system is starting up".22423 if time.monotonic() > deadline:22424 msg = "postgres did not start"22425> raise RuntimeError(msg)22426E RuntimeError: postgres did not start2242722428nixbot/tests/support.py:319: RuntimeError22429______ ERROR at setup of test_reuse_replays_effect_statuses_to_new_commit ______22430[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142243122432self = <Coroutine test_reuse_replays_effect_statuses_to_new_commit>2243322434 def setup(self) -> None:22435 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22436 if runner_fixture_id not in self.fixturenames:22437 self.fixturenames.append(runner_fixture_id)22438 # When loop factories are configured, resolve the loop factory22439 # fixture early so that a factory variant change cascades cache22440 # invalidation before any async fixture checks its cache.22441 hook_caller = self.config.hook.pytest_asyncio_loop_factories22442 if hook_caller.get_hookimpls():22443 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22444> return super().setup()22445 ^^^^^^^^^^^^^^^2244622447/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22448_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22449nixbot/tests/conftest.py:33: in postgres_dsn22450 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22451 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22452/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22453 return next(self.gen)22454 ^^^^^^^^^^^^^^22455_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2245622457tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22458dbname = 'orchestrator'2245922460 @contextlib.contextmanager22461 def ephemeral_postgres(22462 tmp_path_factory: pytest.TempPathFactory, dbname: str22463 ) -> Iterator[str]:22464 """Throwaway Postgres on a unix socket with migrations applied."""22465 datadir = tmp_path_factory.mktemp("pgdata")22466 sockdir = tmp_path_factory.mktemp("pgsock")22467 subprocess.run( # noqa: S60322468 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22469 check=True,22470 capture_output=True,22471 )22472 proc = subprocess.Popen( # noqa: S60322473 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22474 stdout=subprocess.DEVNULL,22475 stderr=subprocess.DEVNULL,22476 )22477 try:22478 deadline = time.monotonic() + 3022479 while (22480 subprocess.run( # noqa: S60322481 ["pg_isready", "-h", str(sockdir), "-U", "test"],22482 check=False,22483 capture_output=True,22484 ).returncode22485 != 022486 ):22487 # The socket appears before recovery finishes; createdb would22488 # fail with "the database system is starting up".22489 if time.monotonic() > deadline:22490 msg = "postgres did not start"22491> raise RuntimeError(msg)22492E RuntimeError: postgres did not start2249322494nixbot/tests/support.py:319: RuntimeError22495____ ERROR at setup of test_attach_to_already_terminal_build_replays_status ____22496[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142249722498self = <Coroutine test_attach_to_already_terminal_build_replays_status>2249922500 def setup(self) -> None:22501 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22502 if runner_fixture_id not in self.fixturenames:22503 self.fixturenames.append(runner_fixture_id)22504 # When loop factories are configured, resolve the loop factory22505 # fixture early so that a factory variant change cascades cache22506 # invalidation before any async fixture checks its cache.22507 hook_caller = self.config.hook.pytest_asyncio_loop_factories22508 if hook_caller.get_hookimpls():22509 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22510> return super().setup()22511 ^^^^^^^^^^^^^^^2251222513/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22514_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22515nixbot/tests/conftest.py:33: in postgres_dsn22516 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22517 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22518/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22519 return next(self.gen)22520 ^^^^^^^^^^^^^^22521_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2252222523tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22524dbname = 'orchestrator'2252522526 @contextlib.contextmanager22527 def ephemeral_postgres(22528 tmp_path_factory: pytest.TempPathFactory, dbname: str22529 ) -> Iterator[str]:22530 """Throwaway Postgres on a unix socket with migrations applied."""22531 datadir = tmp_path_factory.mktemp("pgdata")22532 sockdir = tmp_path_factory.mktemp("pgsock")22533 subprocess.run( # noqa: S60322534 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22535 check=True,22536 capture_output=True,22537 )22538 proc = subprocess.Popen( # noqa: S60322539 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22540 stdout=subprocess.DEVNULL,22541 stderr=subprocess.DEVNULL,22542 )22543 try:22544 deadline = time.monotonic() + 3022545 while (22546 subprocess.run( # noqa: S60322547 ["pg_isready", "-h", str(sockdir), "-U", "test"],22548 check=False,22549 capture_output=True,22550 ).returncode22551 != 022552 ):22553 # The socket appears before recovery finishes; createdb would22554 # fail with "the database system is starting up".22555 if time.monotonic() > deadline:22556 msg = "postgres did not start"22557> raise RuntimeError(msg)22558E RuntimeError: postgres did not start2255922560nixbot/tests/support.py:319: RuntimeError22561___ ERROR at setup of test_cancel_during_eval_resolves_linked_eval_contexts ____22562[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142256322564self = <Coroutine test_cancel_during_eval_resolves_linked_eval_contexts>2256522566 def setup(self) -> None:22567 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22568 if runner_fixture_id not in self.fixturenames:22569 self.fixturenames.append(runner_fixture_id)22570 # When loop factories are configured, resolve the loop factory22571 # fixture early so that a factory variant change cascades cache22572 # invalidation before any async fixture checks its cache.22573 hook_caller = self.config.hook.pytest_asyncio_loop_factories22574 if hook_caller.get_hookimpls():22575 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22576> return super().setup()22577 ^^^^^^^^^^^^^^^2257822579/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22580_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22581nixbot/tests/conftest.py:33: in postgres_dsn22582 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22583 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22584/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22585 return next(self.gen)22586 ^^^^^^^^^^^^^^22587_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2258822589tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22590dbname = 'orchestrator'2259122592 @contextlib.contextmanager22593 def ephemeral_postgres(22594 tmp_path_factory: pytest.TempPathFactory, dbname: str22595 ) -> Iterator[str]:22596 """Throwaway Postgres on a unix socket with migrations applied."""22597 datadir = tmp_path_factory.mktemp("pgdata")22598 sockdir = tmp_path_factory.mktemp("pgsock")22599 subprocess.run( # noqa: S60322600 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22601 check=True,22602 capture_output=True,22603 )22604 proc = subprocess.Popen( # noqa: S60322605 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22606 stdout=subprocess.DEVNULL,22607 stderr=subprocess.DEVNULL,22608 )22609 try:22610 deadline = time.monotonic() + 3022611 while (22612 subprocess.run( # noqa: S60322613 ["pg_isready", "-h", str(sockdir), "-U", "test"],22614 check=False,22615 capture_output=True,22616 ).returncode22617 != 022618 ):22619 # The socket appears before recovery finishes; createdb would22620 # fail with "the database system is starting up".22621 if time.monotonic() > deadline:22622 msg = "postgres did not start"22623> raise RuntimeError(msg)22624E RuntimeError: postgres did not start2262522626nixbot/tests/support.py:319: RuntimeError22627____ ERROR at setup of test_effect_log_does_not_collide_with_attribute_log _____22628[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142262922630self = <Coroutine test_effect_log_does_not_collide_with_attribute_log>2263122632 def setup(self) -> None:22633 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22634 if runner_fixture_id not in self.fixturenames:22635 self.fixturenames.append(runner_fixture_id)22636 # When loop factories are configured, resolve the loop factory22637 # fixture early so that a factory variant change cascades cache22638 # invalidation before any async fixture checks its cache.22639 hook_caller = self.config.hook.pytest_asyncio_loop_factories22640 if hook_caller.get_hookimpls():22641 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22642> return super().setup()22643 ^^^^^^^^^^^^^^^2264422645/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22646_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22647nixbot/tests/conftest.py:33: in postgres_dsn22648 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22649 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22650/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22651 return next(self.gen)22652 ^^^^^^^^^^^^^^22653_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2265422655tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22656dbname = 'orchestrator'2265722658 @contextlib.contextmanager22659 def ephemeral_postgres(22660 tmp_path_factory: pytest.TempPathFactory, dbname: str22661 ) -> Iterator[str]:22662 """Throwaway Postgres on a unix socket with migrations applied."""22663 datadir = tmp_path_factory.mktemp("pgdata")22664 sockdir = tmp_path_factory.mktemp("pgsock")22665 subprocess.run( # noqa: S60322666 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22667 check=True,22668 capture_output=True,22669 )22670 proc = subprocess.Popen( # noqa: S60322671 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22672 stdout=subprocess.DEVNULL,22673 stderr=subprocess.DEVNULL,22674 )22675 try:22676 deadline = time.monotonic() + 3022677 while (22678 subprocess.run( # noqa: S60322679 ["pg_isready", "-h", str(sockdir), "-U", "test"],22680 check=False,22681 capture_output=True,22682 ).returncode22683 != 022684 ):22685 # The socket appears before recovery finishes; createdb would22686 # fail with "the database system is starting up".22687 if time.monotonic() > deadline:22688 msg = "postgres did not start"22689> raise RuntimeError(msg)22690E RuntimeError: postgres did not start2269122692nixbot/tests/support.py:319: RuntimeError22693__________ ERROR at setup of test_post_process_paths_are_forge_scoped __________22694[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142269522696self = <Coroutine test_post_process_paths_are_forge_scoped>2269722698 def setup(self) -> None:22699 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22700 if runner_fixture_id not in self.fixturenames:22701 self.fixturenames.append(runner_fixture_id)22702 # When loop factories are configured, resolve the loop factory22703 # fixture early so that a factory variant change cascades cache22704 # invalidation before any async fixture checks its cache.22705 hook_caller = self.config.hook.pytest_asyncio_loop_factories22706 if hook_caller.get_hookimpls():22707 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22708> return super().setup()22709 ^^^^^^^^^^^^^^^2271022711/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22712_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22713nixbot/tests/conftest.py:33: in postgres_dsn22714 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22715 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22716/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22717 return next(self.gen)22718 ^^^^^^^^^^^^^^22719_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2272022721tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22722dbname = 'orchestrator'2272322724 @contextlib.contextmanager22725 def ephemeral_postgres(22726 tmp_path_factory: pytest.TempPathFactory, dbname: str22727 ) -> Iterator[str]:22728 """Throwaway Postgres on a unix socket with migrations applied."""22729 datadir = tmp_path_factory.mktemp("pgdata")22730 sockdir = tmp_path_factory.mktemp("pgsock")22731 subprocess.run( # noqa: S60322732 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22733 check=True,22734 capture_output=True,22735 )22736 proc = subprocess.Popen( # noqa: S60322737 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22738 stdout=subprocess.DEVNULL,22739 stderr=subprocess.DEVNULL,22740 )22741 try:22742 deadline = time.monotonic() + 3022743 while (22744 subprocess.run( # noqa: S60322745 ["pg_isready", "-h", str(sockdir), "-U", "test"],22746 check=False,22747 capture_output=True,22748 ).returncode22749 != 022750 ):22751 # The socket appears before recovery finishes; createdb would22752 # fail with "the database system is starting up".22753 if time.monotonic() > deadline:22754 msg = "postgres did not start"22755> raise RuntimeError(msg)22756E RuntimeError: postgres did not start2275722758nixbot/tests/support.py:319: RuntimeError22759_______ ERROR at setup of test_effects_phase_error_keeps_succeeded_build _______22760[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142276122762self = <Coroutine test_effects_phase_error_keeps_succeeded_build>2276322764 def setup(self) -> None:22765 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22766 if runner_fixture_id not in self.fixturenames:22767 self.fixturenames.append(runner_fixture_id)22768 # When loop factories are configured, resolve the loop factory22769 # fixture early so that a factory variant change cascades cache22770 # invalidation before any async fixture checks its cache.22771 hook_caller = self.config.hook.pytest_asyncio_loop_factories22772 if hook_caller.get_hookimpls():22773 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22774> return super().setup()22775 ^^^^^^^^^^^^^^^2277622777/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22778_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22779nixbot/tests/conftest.py:33: in postgres_dsn22780 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22781 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22782/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22783 return next(self.gen)22784 ^^^^^^^^^^^^^^22785_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2278622787tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22788dbname = 'orchestrator'2278922790 @contextlib.contextmanager22791 def ephemeral_postgres(22792 tmp_path_factory: pytest.TempPathFactory, dbname: str22793 ) -> Iterator[str]:22794 """Throwaway Postgres on a unix socket with migrations applied."""22795 datadir = tmp_path_factory.mktemp("pgdata")22796 sockdir = tmp_path_factory.mktemp("pgsock")22797 subprocess.run( # noqa: S60322798 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22799 check=True,22800 capture_output=True,22801 )22802 proc = subprocess.Popen( # noqa: S60322803 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22804 stdout=subprocess.DEVNULL,22805 stderr=subprocess.DEVNULL,22806 )22807 try:22808 deadline = time.monotonic() + 3022809 while (22810 subprocess.run( # noqa: S60322811 ["pg_isready", "-h", str(sockdir), "-U", "test"],22812 check=False,22813 capture_output=True,22814 ).returncode22815 != 022816 ):22817 # The socket appears before recovery finishes; createdb would22818 # fail with "the database system is starting up".22819 if time.monotonic() > deadline:22820 msg = "postgres did not start"22821> raise RuntimeError(msg)22822E RuntimeError: postgres did not start2282322824nixbot/tests/support.py:319: RuntimeError22825_____ ERROR at setup of test_reuse_post_process_error_still_reports_status _____22826[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142282722828self = <Coroutine test_reuse_post_process_error_still_reports_status>2282922830 def setup(self) -> None:22831 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22832 if runner_fixture_id not in self.fixturenames:22833 self.fixturenames.append(runner_fixture_id)22834 # When loop factories are configured, resolve the loop factory22835 # fixture early so that a factory variant change cascades cache22836 # invalidation before any async fixture checks its cache.22837 hook_caller = self.config.hook.pytest_asyncio_loop_factories22838 if hook_caller.get_hookimpls():22839 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22840> return super().setup()22841 ^^^^^^^^^^^^^^^2284222843/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22844_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22845nixbot/tests/conftest.py:33: in postgres_dsn22846 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22847 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22848/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22849 return next(self.gen)22850 ^^^^^^^^^^^^^^22851_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2285222853tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22854dbname = 'orchestrator'2285522856 @contextlib.contextmanager22857 def ephemeral_postgres(22858 tmp_path_factory: pytest.TempPathFactory, dbname: str22859 ) -> Iterator[str]:22860 """Throwaway Postgres on a unix socket with migrations applied."""22861 datadir = tmp_path_factory.mktemp("pgdata")22862 sockdir = tmp_path_factory.mktemp("pgsock")22863 subprocess.run( # noqa: S60322864 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22865 check=True,22866 capture_output=True,22867 )22868 proc = subprocess.Popen( # noqa: S60322869 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22870 stdout=subprocess.DEVNULL,22871 stderr=subprocess.DEVNULL,22872 )22873 try:22874 deadline = time.monotonic() + 3022875 while (22876 subprocess.run( # noqa: S60322877 ["pg_isready", "-h", str(sockdir), "-U", "test"],22878 check=False,22879 capture_output=True,22880 ).returncode22881 != 022882 ):22883 # The socket appears before recovery finishes; createdb would22884 # fail with "the database system is starting up".22885 if time.monotonic() > deadline:22886 msg = "postgres did not start"22887> raise RuntimeError(msg)22888E RuntimeError: postgres did not start2288922890nixbot/tests/support.py:319: RuntimeError22891____ ERROR at setup of test_reuse_with_missing_output_still_post_processes _____22892[gw1] darwin -- Python 3.14.6 /nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/bin/python3.142289322894self = <Coroutine test_reuse_with_missing_output_still_post_processes>2289522896 def setup(self) -> None:22897 runner_fixture_id = f"_{self._loop_scope}_scoped_runner"22898 if runner_fixture_id not in self.fixturenames:22899 self.fixturenames.append(runner_fixture_id)22900 # When loop factories are configured, resolve the loop factory22901 # fixture early so that a factory variant change cascades cache22902 # invalidation before any async fixture checks its cache.22903 hook_caller = self.config.hook.pytest_asyncio_loop_factories22904 if hook_caller.get_hookimpls():22905 _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__)22906> return super().setup()22907 ^^^^^^^^^^^^^^^2290822909/nix/store/4fdzail6axj09flzabahq3f4b2ws3i4j-python3.14-pytest-asyncio-1.4.0/lib/python3.14/site-packages/pytest_asyncio/plugin.py:558: 22910_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 22911nixbot/tests/conftest.py:33: in postgres_dsn22912 with ephemeral_postgres(tmp_path_factory, dbname) as dsn:22913 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^22914/nix/store/i9q7np6h9bwa3ps6937lpwarkqw0izbf-python3-3.14.6/lib/python3.14/contextlib.py:141: in __enter__22915 return next(self.gen)22916 ^^^^^^^^^^^^^^22917_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2291822919tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/private/var/tb/5/scratch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/p...atch/26e0836fe0fc3254/build/pytest-of-_tribuchetbld5/pytest-0/popen-gw1'), _retention_count=3, _retention_policy='all')22920dbname = 'orchestrator'2292122922 @contextlib.contextmanager22923 def ephemeral_postgres(22924 tmp_path_factory: pytest.TempPathFactory, dbname: str22925 ) -> Iterator[str]:22926 """Throwaway Postgres on a unix socket with migrations applied."""22927 datadir = tmp_path_factory.mktemp("pgdata")22928 sockdir = tmp_path_factory.mktemp("pgsock")22929 subprocess.run( # noqa: S60322930 ["initdb", "-D", str(datadir), "-U", "test", "--auth=trust"],22931 check=True,22932 capture_output=True,22933 )22934 proc = subprocess.Popen( # noqa: S60322935 ["postgres", "-D", str(datadir), "-k", str(sockdir), "-c", "listen_addresses="],22936 stdout=subprocess.DEVNULL,22937 stderr=subprocess.DEVNULL,22938 )22939 try:22940 deadline = time.monotonic() + 3022941 while (22942 subprocess.run( # noqa: S60322943 ["pg_isready", "-h", str(sockdir), "-U", "test"],22944 check=False,22945 capture_output=True,22946 ).returncode22947 != 022948 ):22949 # The socket appears before recovery finishes; createdb would22950 # fail with "the database system is starting up".22951 if time.monotonic() > deadline:22952 msg = "postgres did not start"22953> raise RuntimeError(msg)22954E RuntimeError: postgres did not start2295522956nixbot/tests/support.py:319: RuntimeError22957=========================== short test summary info ============================22958ERROR nixbot/tests/test_visibility.py::test_anonymous_sees_public_only - Runt...22959ERROR nixbot/tests/test_visibility.py::test_unauthorized_user_sees_public_only22960ERROR nixbot/tests/test_visibility.py::test_authorized_user_sees_private - Ru...22961ERROR nixbot/tests/test_visibility.py::test_admin_sees_everything - RuntimeEr...22962ERROR nixbot/tests/test_visibility.py::test_admin_sees_disabled_repos_without_search22963ERROR nixbot/tests/test_visibility.py::test_non_admin_does_not_see_disabled_repos22964ERROR nixbot/tests/test_visibility.py::test_api_token_sees_private - RuntimeE...22965ERROR nixbot/tests/test_visibility.py::test_admin_api_token_sees_private - Ru...22966ERROR nixbot/tests/test_visibility.py::test_forge_repo_admins_can_toggle_their_repos22967ERROR nixbot/tests/test_recovery.py::test_resume_skips_terminal_attributes - ...22968ERROR nixbot/tests/test_visibility.py::test_forge_repo_writers_can_control_their_repos22969ERROR nixbot/tests/test_visibility.py::test_fetch_errors_are_not_cached - Run...22970ERROR nixbot/tests/test_recovery.py::test_settle_already_built - RuntimeError...22971ERROR nixbot/tests/test_visibility.py::test_access_cache_used - RuntimeError:...22972ERROR nixbot/tests/test_recovery.py::test_retention_cleanup - RuntimeError: p...22973ERROR nixbot/tests/test_visibility.py::test_metrics_unauthenticated_no_private_names22974ERROR nixbot/tests/test_visibility.py::test_configured_viewers_see_private - ...22975ERROR nixbot/tests/test_visibility.py::test_api_token_inherits_login_groups22976ERROR nixbot/tests/test_recovery.py::test_resume_includes_interrupted_building_attributes22977ERROR nixbot/tests/test_visibility.py::test_logout_invalidates_access_cache22978ERROR nixbot/tests/test_recovery.py::test_retention_skips_restarted_builds - ...22979ERROR nixbot/tests/test_recovery.py::test_retention_ages_out_failed_caches - ...22980ERROR nixbot/tests/test_recovery.py::test_rerun_clears_stale_eval_warnings - ...22981ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_fail_on_recovery22982ERROR nixbot/tests/test_cli.py::test_repo_list_and_toggle - RuntimeError: pos...22983ERROR nixbot/tests/test_recovery.py::test_interrupted_effects_sweep_spares_live_effects22984ERROR nixbot/tests/test_cli.py::test_build_list_and_view - RuntimeError: post...22985ERROR nixbot/tests/test_web.py::test_html_error_pages - RuntimeError: postgre...22986ERROR nixbot/tests/test_cli.py::test_build_restart_cancel - RuntimeError: pos...22987ERROR nixbot/tests/test_web.py::test_api_strips_ansi_from_errors - RuntimeErr...22988ERROR nixbot/tests/test_cli.py::test_log_summary_attr_and_drv - RuntimeError:...22989ERROR nixbot/tests/test_web.py::test_homepage - RuntimeError: postgres did no...22990ERROR nixbot/tests/test_cli.py::test_repo_and_build_inference - RuntimeError:...22991ERROR nixbot/tests/test_web.py::test_project_page_with_filters - RuntimeError...22992ERROR nixbot/tests/test_cli.py::test_auth_status - RuntimeError: postgres did...22993ERROR nixbot/tests/test_web.py::test_status_badge_urls - RuntimeError: postgr...22994ERROR nixbot/tests/test_web.py::test_all_digit_branch_is_filterable - Runtime...22995ERROR nixbot/tests/test_web.py::test_build_page - RuntimeError: postgres did ...22996ERROR nixbot/tests/test_web.py::test_attribute_rows_fragment_paginates - Runt...22997ERROR nixbot/tests/test_web.py::test_build_page_shows_eval_warning_groups - R...22998ERROR nixbot/tests/test_web.py::test_build_page_shows_per_attribute_eval_warnings22999ERROR nixbot/tests/test_upload.py::test_chunk_args_splits_on_byte_limit - Run...23000ERROR nixbot/tests/test_db.py::test_migrations_idempotent - RuntimeError: pos...23001ERROR nixbot/tests/test_web.py::test_build_page_renders_ansi_in_error - Runti...23002ERROR nixbot/tests/test_db.py::test_failed_migration_error_not_masked - Runti...23003ERROR nixbot/tests/test_web.py::test_running_build_shows_progress - RuntimeEr...23004ERROR nixbot/tests/test_web.py::test_build_page_live_markers - RuntimeError: ...23005ERROR nixbot/tests/test_db.py::test_edited_migration_rejected - RuntimeError:...23006ERROR nixbot/tests/test_upload.py::test_parse_path_info_both_formats - Runtim...23007ERROR nixbot/tests/test_web.py::test_attribute_history - RuntimeError: postgr...23008ERROR nixbot/tests/test_web.py::test_overview_ignores_pr_branches - RuntimeEr...23009ERROR nixbot/tests/test_db.py::test_catchup_migration_repairs_pre_0033_schema23010ERROR nixbot/tests/test_upload.py::test_final_upload_reports_and_clears_queue23011ERROR nixbot/tests/test_web.py::test_pending_build_shows_eval_blocker - Runti...23012ERROR nixbot/tests/test_db.py::test_huge_attr_name_does_not_break_notify_trigger23013ERROR nixbot/tests/test_web.py::test_project_filter_escapes_like_wildcards - ...23014ERROR nixbot/tests/test_upload.py::test_intermediates_batch_with_final_and_drop_invalid23015ERROR nixbot/tests/test_web.py::test_page_out_of_range_does_not_error - Runti...23016ERROR nixbot/tests/test_web.py::test_activity_page - RuntimeError: postgres d...23017ERROR nixbot/tests/test_db.py::test_schema_constraints - RuntimeError: postgr...23018ERROR nixbot/tests/test_upload.py::test_stdin_mode - RuntimeError: postgres d...23019ERROR nixbot/tests/test_web.py::test_activity_no_sentinel_on_exact_page - Run...23020ERROR nixbot/tests/test_control.py::test_control_buttons_hidden_without_permission23021ERROR nixbot/tests/test_db.py::test_check_run_store_round_trip - RuntimeError...23022ERROR nixbot/tests/test_cli_api.py::test_repos_and_builds - RuntimeError: pos...23023ERROR nixbot/tests/test_web.py::test_activity_rows_fragment_pagination - Runt...23024ERROR nixbot/tests/test_upload.py::test_pending_paths_survive_restart - Runti...23025ERROR nixbot/tests/test_cli_api.py::test_finished_attrs_cursor - RuntimeError...23026ERROR nixbot/tests/test_web.py::test_project_rows_fragment_filters - RuntimeE...23027ERROR nixbot/tests/test_control.py::test_admin_can_restart_and_cancel - Runti...23028ERROR nixbot/tests/test_upload.py::test_uploader_factory_picks_stream - Runti...23029ERROR nixbot/tests/test_db.py::test_failed_status_store_component - RuntimeEr...23030ERROR nixbot/tests/test_cli_api.py::test_control_requires_token - RuntimeErro...23031ERROR nixbot/tests/test_schedules.py::test_replace_schedules_preserves_last_run_for_unchanged_spec23032ERROR nixbot/tests/test_control.py::test_pr_author_can_control_own_pr - Runti...23033ERROR nixbot/tests/test_web.py::test_metrics_are_gauges - RuntimeError: postg...23034ERROR nixbot/tests/test_upload.py::test_stream_reports_per_path_and_clears_queue23035ERROR nixbot/tests/test_cli_api.py::test_enable_disable - RuntimeError: postg...23036ERROR nixbot/tests/test_web.py::test_metrics_are_cached - RuntimeError: postg...23037ERROR nixbot/tests/test_orchestrator.py::test_full_lifecycle - RuntimeError: ...23038ERROR nixbot/tests/test_db.py::test_failed_build_cache_component - RuntimeErr...23039ERROR nixbot/tests/test_schedules.py::test_concurrent_replace_schedules_do_not_collide23040ERROR nixbot/tests/test_cli_api.py::test_log_toc_and_text - RuntimeError: pos...23041ERROR nixbot/tests/test_forge.py::test_project_store_sync_and_legacy_import23042ERROR nixbot/tests/test_deliver.py::test_match_skip_and_run - RuntimeError: p...23043ERROR nixbot/tests/test_upload.py::test_stream_error_is_reported_with_message23044ERROR nixbot/tests/test_web.py::test_static_urls_carry_content_version - Runt...23045ERROR nixbot/tests/test_cli.py::test_log_follow_finished_attr_falls_back_to_stored_log23046ERROR nixbot/tests/test_cli_api.py::test_effect_run_text_and_stream - Runtime...23047ERROR nixbot/tests/test_db.py::test_get_or_create_build_concurrent_no_duplicates23048ERROR nixbot/tests/test_schedules.py::test_replace_schedules_tolerates_duplicate_effect_names23049ERROR nixbot/tests/test_web.py::test_legacy_project_urls_redirect - RuntimeEr...23050ERROR nixbot/tests/test_orchestrator.py::test_failure_aggregation - RuntimeEr...23051ERROR nixbot/tests/test_forge.py::test_legacy_import_runs_despite_pull_based_rows23052ERROR nixbot/tests/test_upload.py::test_stream_child_crash_refeeds_pending - ...23053ERROR nixbot/tests/test_deliver.py::test_permission_denied_records_reason - R...23054ERROR nixbot/tests/test_web.py::test_private_repo_public_badge_bypasses_session_visibility23055ERROR nixbot/tests/test_control.py::test_repo_writer_can_control_without_admin_or_authorship23056ERROR nixbot/tests/test_cli.py::test_log_effect_by_name_and_id - RuntimeError...23057ERROR nixbot/tests/test_db.py::test_commit_eval_result_atomic - RuntimeError:...23058ERROR nixbot/tests/test_schedules.py::test_store_roundtrip_and_due - RuntimeE...23059ERROR nixbot/tests/test_orchestrator.py::test_tree_hash_reuse - RuntimeError:...23060ERROR nixbot/tests/test_upload.py::test_failure_reports_retries_and_gives_up23061ERROR nixbot/tests/test_forge.py::test_legacy_import_scopes_topics_per_forge23062ERROR nixbot/tests/test_control.py::test_approve_pr_requires_writer_not_author23063ERROR nixbot/tests/test_web.py::test_legacy_redirect_hides_invisible_projects23064ERROR nixbot/tests/test_cli.py::test_log_effect_is_not_shadowed_by_attributes23065ERROR nixbot/tests/test_deliver.py::test_modified_files_gate - RuntimeError: ...23066ERROR nixbot/tests/test_control.py::test_cancel_all_requires_admin - RuntimeE...23067ERROR nixbot/tests/test_web.py::test_legacy_redirect_404s_on_ambiguous_owner_name23068ERROR nixbot/tests/test_db.py::test_cancelled_build_not_reused - RuntimeError...23069ERROR nixbot/tests/test_schedules.py::test_due_effects_window_and_bad_spec - ...23070ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_from_cancelled_build23071ERROR nixbot/tests/test_forge.py::test_prune_missing_disabled_projects - Runt...23072ERROR nixbot/tests/test_control.py::test_cancel_all_cancels_pending_and_running_builds23073ERROR nixbot/tests/test_deliver.py::test_forge_outage_is_retried - RuntimeErr...23074ERROR nixbot/tests/test_web.py::test_health_and_static - RuntimeError: postgr...23075ERROR nixbot/tests/test_db.py::test_reuse_backfills_pr_fields - RuntimeError:...23076ERROR nixbot/tests/test_control.py::test_cancel_all_button_admin_only - Runti...23077ERROR nixbot/tests/test_web.py::test_404s - RuntimeError: postgres did not start23078ERROR nixbot/tests/test_orchestrator.py::test_eval_reuse_skipped_when_drvs_gone23079ERROR nixbot/tests/test_forge.py::test_project_store_sync_skips_unchanged_rows23080ERROR nixbot/tests/test_deliver.py::test_forge_outage_gives_up - RuntimeError...23081ERROR nixbot/tests/test_work_queue.py::test_enqueue_dedupes_pending - Runtime...23082ERROR nixbot/tests/test_control.py::test_csrf_cross_origin_rejected - Runtime...23083ERROR nixbot/tests/test_orchestrator.py::test_main_push_promotes_reused_pr_build23084ERROR nixbot/tests/test_db.py::test_reuse_by_other_pr_clears_both_identity_fields23085ERROR nixbot/tests/test_control.py::test_restart_single_attribute - RuntimeEr...23086ERROR nixbot/tests/test_work_queue.py::test_claim_serializes_per_key - Runtim...23087ERROR nixbot/tests/test_forge.py::test_gitea_hook_registration - RuntimeError...23088ERROR nixbot/tests/test_deliver.py::test_lock_shared_with_push_effect_and_supersession23089ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_distinct_per_effect23090ERROR nixbot/tests/test_work_queue.py::test_settle_interrupted_requeues - Run...23091ERROR nixbot/tests/test_control.py::test_restart_unknown_attribute_is_404 - R...23092ERROR nixbot/tests/test_web.py::test_log_viewer_and_raw - RuntimeError: postg...23093ERROR nixbot/tests/test_service.py::test_scheduled_worktree_id_sanitizes_traversal23094ERROR nixbot/tests/test_orchestrator.py::test_merge_conflict_fails_build - Ru...23095ERROR nixbot/tests/test_schedules.py::test_run_recording_and_overview - Runti...23096ERROR nixbot/tests/test_db.py::test_branch_push_takes_over_reused_pr_build - ...23097ERROR nixbot/tests/test_service.py::test_resolve_credential_path - RuntimeErr...23098ERROR nixbot/tests/test_control.py::test_restart_attribute_with_special_chars_redirects_encoded23099ERROR nixbot/tests/test_forge.py::test_gitlab_heads_carry_target_branch_base23100ERROR nixbot/tests/test_web.py::test_structured_log_endpoints - RuntimeError:...23101ERROR nixbot/tests/test_deliver.py::test_checkout_is_pr_head_without_token - ...23102ERROR nixbot/tests/test_control.py::test_admin_project_toggle - RuntimeError:...23103ERROR nixbot/tests/test_orchestrator.py::test_build_reuse_clears_pr_author_in_other_context23104ERROR nixbot/tests/test_web.py::test_structured_log_window_caps_huge_derivation23105ERROR nixbot/tests/test_db.py::test_pr_does_not_capture_branch_push_build - R...23106ERROR nixbot/tests/test_service.py::test_build_service_accepts_asyncpg_dsn - ...23107ERROR nixbot/tests/test_forge.py::test_gitea_heads_encode_slashed_default_branch23108ERROR nixbot/tests/test_control.py::test_toggle_activates_newly_enabled_project23109ERROR nixbot/tests/test_web.py::test_attr_named_dot_txt_not_shadowed_by_raw_route23110ERROR nixbot/tests/test_deliver.py::test_build_success_enqueues_delivery - Ru...23111ERROR nixbot/tests/test_service.py::test_visibility_fetcher_and_cache_ttl_wired23112ERROR nixbot/tests/test_orchestrator.py::test_effects_started_flag - RuntimeE...23113ERROR nixbot/tests/test_control.py::test_run_schedule - RuntimeError: postgre...23114ERROR nixbot/tests/test_web.py::test_attr_names_with_special_characters - Run...23115ERROR nixbot/tests/test_db.py::test_complete_attribute_preserves_eval_outputs23116ERROR nixbot/tests/test_forge.py::test_reconcile_unbuilt_heads - RuntimeError...23117ERROR nixbot/tests/test_deliver.py::test_comment_and_close_webhooks_deliver23118ERROR nixbot/tests/test_control.py::test_schedules_are_listed_on_the_effects_page23119ERROR nixbot/tests/test_web.py::test_log_viewer_waits_for_queued_attribute - ...23120ERROR nixbot/tests/test_service.py::test_aclose_cancels_in_flight_tasks - Run...23121ERROR nixbot/tests/test_orchestrator.py::test_aggregation_generation_monotonic23122ERROR nixbot/tests/test_db.py::test_complete_attribute_marks_substituted_as_cached23123ERROR nixbot/tests/test_control.py::test_repo_refresh - RuntimeError: postgre...23124ERROR nixbot/tests/test_forge.py::test_gitea_watermark_stops_pagination - Run...23125ERROR nixbot/tests/test_web.py::test_log_viewer_unavailable_for_logless_status23126ERROR nixbot/tests/test_deliver.py::test_close_after_merge_push_reused_build23127ERROR nixbot/tests/test_control.py::test_api_enable_disable - RuntimeError: p...23128ERROR nixbot/tests/test_service.py::test_pr_close_discards_queued_changes - R...23129ERROR nixbot/tests/test_orchestrator.py::test_internal_error_not_recorded_in_failed_build_cache23130ERROR nixbot/tests/test_db.py::test_complete_attribute_replaces_log_metadata23131ERROR nixbot/tests/test_web.py::test_eval_error_served_like_build_log - Runti...23132ERROR nixbot/tests/test_control.py::test_api_restart_and_cancel - RuntimeErro...23133ERROR nixbot/tests/test_web.py::test_api_projects_and_builds - RuntimeError: ...23134ERROR nixbot/tests/test_deliver.py::test_build_finished_transitions - Runtime...23135ERROR nixbot/tests/test_service.py::test_build_branches_gates_branch_pushes23136ERROR nixbot/tests/test_db.py::test_record_attributes_persists_pending_rows_with_outputs23137ERROR nixbot/tests/test_control.py::test_api_token_lifecycle - RuntimeError: ...23138ERROR nixbot/tests/test_orchestrator.py::test_log_path_attribute_name_sanitized23139ERROR nixbot/tests/test_web.py::test_build_rows_link_refs - RuntimeError: pos...23140ERROR nixbot/tests/test_control.py::test_expired_api_tokens_pruned - RuntimeE...23141ERROR nixbot/tests/test_deliver.py::test_command_while_running_gets_notice - ...23142ERROR nixbot/tests/test_service.py::test_tag_push_builds_peeled_commit - Runt...23143ERROR nixbot/tests/test_web.py::test_attributes_sort_building_before_pending23144ERROR nixbot/tests/test_forge.py::test_gitlab_heads_filter_updated_after - Ru...23145ERROR nixbot/tests/test_orchestrator.py::test_cancel_interrupts_evaluation - ...23146ERROR nixbot/tests/test_db.py::test_mark_attribute_building_does_not_resurrect_cancelled_rows23147ERROR nixbot/tests/test_control.py::test_token_creation_with_expiry - Runtime...23148ERROR nixbot/tests/test_web.py::test_queue_sorts_active_before_pending - Runt...23149ERROR nixbot/tests/test_deliver.py::test_other_command_does_not_supersede - R...23150ERROR nixbot/tests/test_control.py::test_proxy_user_can_manage_api_tokens - R...23151ERROR nixbot/tests/test_service.py::test_tag_push_waits_for_a_branch_to_build_its_commit23152ERROR nixbot/tests/test_web.py::test_queue_position_is_global_and_skips_running23153ERROR nixbot/tests/test_orchestrator.py::test_build_waiting_for_eval_slot_stays_pending23154ERROR nixbot/tests/test_forge.py::test_reconcile_watermark_store - RuntimeErr...23155ERROR nixbot/tests/test_db.py::test_mark_attribute_building_sets_status_and_started_at23156ERROR nixbot/tests/test_control.py::test_bearer_token_cannot_manage_api_tokens23157ERROR nixbot/tests/test_deliver.py::test_label_change_redelivers_pull_request23158ERROR nixbot/tests/test_web.py::test_openapi_docs - RuntimeError: postgres di...23159ERROR nixbot/tests/test_service.py::test_pr_approval_gate - RuntimeError: pos...23160ERROR nixbot/tests/test_control.py::test_api_token_controls_build - RuntimeEr...23161ERROR nixbot/tests/test_orchestrator.py::test_pending_attribute_rows_recorded_for_crash_recovery23162ERROR nixbot/tests/test_web.py::test_structured_live_stream - RuntimeError: p...23163ERROR nixbot/tests/test_db.py::test_complete_attribute_if_unfinished_skips_terminal_rows23164ERROR nixbot/tests/test_forge.py::test_register_repo_hook_without_admin_warns23165ERROR nixbot/tests/test_deliver.py::test_build_outcome_and_restart_leave_event_history23166ERROR nixbot/tests/test_service.py::test_pr_approval_disabled_by_default - Ru...23167ERROR nixbot/tests/test_web.py::test_drv_raw_serves_running_attribute - Runti...23168ERROR nixbot/tests/test_control.py::test_build_service_composition - RuntimeE...23169ERROR nixbot/tests/test_orchestrator.py::test_eval_warnings_null_when_empty23170ERROR nixbot/tests/test_db.py::test_failed_build_cache_scoped_per_project - R...23171ERROR nixbot/tests/test_forge.py::test_gitlab_hook_registration - RuntimeErro...23172ERROR nixbot/tests/test_web.py::test_log_sse_stream_caps_history_backlog - Ru...23173ERROR nixbot/tests/test_deliver.py::test_restart_event_effect_reruns_with_stored_payload23174ERROR nixbot/tests/test_service.py::test_restart_gitlab_mr_build_fetches_mr_refs23175ERROR nixbot/tests/test_orchestrator.py::test_rerun_flips_stale_red_eval_status23176ERROR nixbot/tests/test_web.py::test_log_sse_stream_neutralizes_carriage_returns23177ERROR nixbot/tests/test_control.py::test_restart_removes_stale_logs - Runtime...23178ERROR nixbot/tests/test_db.py::test_eval_stats_lifecycle - RuntimeError: post...23179ERROR nixbot/tests/test_deliver.py::test_listing_failure_recorded_on_build - ...23180ERROR nixbot/tests/test_forge.py::test_register_repo_hook_500_with_403_in_body_raises23181ERROR nixbot/tests/test_web.py::test_api_builds_commit_filter - RuntimeError:...23182ERROR nixbot/tests/test_service.py::test_restart_eval_failed_build_reevaluates23183ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_failures_not_cached23184ERROR nixbot/tests/test_control.py::test_restart_clears_failed_cache - Runtim...23185ERROR nixbot/tests/test_web.py::test_log_tail_param - RuntimeError: postgres ...23186ERROR nixbot/tests/test_deliver.py::test_tag_runs_onpush_effects_with_tag - R...23187ERROR nixbot/tests/test_forge.py::test_gitlab_register_repo_hook_status_classification23188ERROR nixbot/tests/test_control.py::test_webhook_setup_shown_to_admin_only - ...23189ERROR nixbot/tests/test_service.py::test_restart_clears_stale_error_and_warnings23190ERROR nixbot/tests/test_web.py::test_api_build_failures - RuntimeError: postg...23191ERROR nixbot/tests/test_orchestrator.py::test_gitlab_mr_fetches_merge_request_refs23192ERROR nixbot/tests/test_control.py::test_webhook_secret_regeneration - Runtim...23193ERROR nixbot/tests/test_deliver.py::test_tag_waits_for_a_running_release - Ru...23194ERROR nixbot/tests/test_web.py::test_api_build_failures_rejects_non_positive_tail23195ERROR nixbot/tests/test_service.py::test_restart_unknown_attribute_is_a_noop23196ERROR nixbot/tests/test_forge.py::test_gitea_legacy_hook_delete_failure_warns23197ERROR nixbot/tests/test_control.py::test_retry_after_parsing - RuntimeError: ...23198ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[github]23199ERROR nixbot/tests/test_web.py::test_llms_txt - RuntimeError: postgres did no...23200ERROR nixbot/tests/test_deliver.py::test_tag_listing_failure_recorded_apart_from_build_effects23201ERROR nixbot/tests/test_control.py::test_work_retry_delay_honors_retry_after23202ERROR nixbot/tests/test_forge.py::test_sync_tolerates_in_batch_duplicates - R...23203ERROR nixbot/tests/test_service.py::test_restart_failed_eval_attribute_reevaluates23204ERROR nixbot/tests/test_orchestrator.py::test_rerun_fetches_forge_change_request_refs[gitlab]23205ERROR nixbot/tests/test_control.py::test_report_retry - RuntimeError: postgre...23206ERROR nixbot/tests/test_orchestrator.py::test_cancelled_build_reuse_rebuilds23207ERROR nixbot/tests/test_control.py::test_effect_item_setup_failure_settles_row23208ERROR nixbot/tests/test_web.py::test_event_broker_pushes_status_changes - Run...23209ERROR nixbot/tests/test_orchestrator.py::test_inflight_share_fans_out_final_status23210ERROR nixbot/tests/test_web.py::test_events_stream_coalesces_burst - RuntimeE...23211ERROR nixbot/tests/test_service.py::test_interrupted_reeval_keeps_attribute_rows23212ERROR nixbot/tests/test_control.py::test_restart_attribute_posts_pending - Ru...23213ERROR nixbot/tests/test_web.py::test_events_stream_refreshes_visibility - Run...23214ERROR nixbot/tests/test_orchestrator.py::test_stale_event_does_not_supersede_newer_build23215ERROR nixbot/tests/test_web.py::test_attribute_search - RuntimeError: postgre...23216ERROR nixbot/tests/test_service.py::test_restart_cancelled_build_reschedules_attributes23217ERROR nixbot/tests/test_control.py::test_recovery_reports_interrupted_effects23218ERROR nixbot/tests/test_web.py::test_build_page_shows_effects - RuntimeError:...23219ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_cleans_cancel_events23220ERROR nixbot/tests/test_service.py::test_restart_cancelled_mid_eval_reevaluates23221ERROR nixbot/tests/test_control.py::test_work_dispatch - RuntimeError: postgr...23222ERROR nixbot/tests/test_web.py::test_build_page_shows_event_effects - Runtime...23223ERROR nixbot/tests/test_orchestrator.py::test_eval_settings_wired - RuntimeEr...23224ERROR nixbot/tests/test_web.py::test_build_page_groups_dependency_checks_apart23225ERROR nixbot/tests/test_service.py::test_restart_while_unwinding_waits_then_runs23226ERROR nixbot/tests/test_control.py::test_restart_resets_effects - RuntimeErro...23227ERROR nixbot/tests/test_web.py::test_effect_log_raw_text - RuntimeError: post...23228ERROR nixbot/tests/test_control.py::test_effects_restart_route - RuntimeError...23229ERROR nixbot/tests/test_orchestrator.py::test_eval_netrc_withheld_from_pr_with_instance_wide_creds23230ERROR nixbot/tests/test_web.py::test_effect_log_viewer_status_icon - RuntimeE...23231ERROR nixbot/tests/test_service.py::test_restart_attribute_while_build_running23232ERROR nixbot/tests/test_control.py::test_single_effect_restart_route - Runtim...23233ERROR nixbot/tests/test_web.py::test_effect_changes_notify_build_events - Run...23234ERROR nixbot/tests/test_orchestrator.py::test_eval_gcroots_dir_removed_after_build23235ERROR nixbot/tests/test_control.py::test_effect_cancel_route - RuntimeError: ...23236ERROR nixbot/tests/test_service.py::test_cancel_not_running_posts_forge_status23237ERROR nixbot/tests/test_web.py::test_effects_state_api - RuntimeError: postgr...23238ERROR nixbot/tests/test_control.py::test_webhook_panel_is_forge_aware - Runti...23239ERROR nixbot/tests/test_web.py::test_pr_comment_api - RuntimeError: postgres ...23240ERROR nixbot/tests/test_orchestrator.py::test_effects_run_after_default_branch_success23241ERROR nixbot/tests/test_control.py::test_api_attr_and_effects_control - Runti...23242ERROR nixbot/tests/test_service.py::test_check_rerequested_dispatch - Runtime...23243ERROR nixbot/tests/test_web.py::test_workload_identity_api - RuntimeError: po...23244ERROR nixbot/tests/test_orchestrator.py::test_when_changed_reuses_the_last_success23245ERROR nixbot/tests/test_web.py::test_logout_revokes_session_cookie - RuntimeE...23246ERROR nixbot/tests/test_service.py::test_cancel_not_running_settles_attribute_rows23247ERROR nixbot/tests/test_web.py::test_gitlab_nested_group_routes - RuntimeErro...23248ERROR nixbot/tests/test_orchestrator.py::test_when_changed_decides_when_the_lock_is_free23249ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_renders_ansi - Runt...23250ERROR nixbot/tests/test_service.py::test_cancel_attribute_not_running_reaggregates_build23251ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_cross_project_40423252ERROR nixbot/tests/test_orchestrator.py::test_when_changed_ignores_failures_and_follows_a_restart23253ERROR nixbot/tests/test_service.py::test_pull_based_projects_synced_and_buildable23254ERROR nixbot/tests/test_web.py::test_scheduled_run_log_unavailable_placeholder23255ERROR nixbot/tests/test_orchestrator.py::test_pr_worktree_config_cannot_grant_effects23256ERROR nixbot/tests/test_web.py::test_scheduled_run_viewer_waiting_before_log23257ERROR nixbot/tests/test_service.py::test_topic_does_not_hard_filter_discovery23258ERROR nixbot/tests/test_web.py::test_project_tabs_link_builds_and_effects - R...23259ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_runs_effects_again23260ERROR nixbot/tests/test_web.py::test_failing_badge_counts_effects_whose_latest_run_failed23261ERROR nixbot/tests/test_service.py::test_startup_reevaluates_interrupted_eval23262ERROR nixbot/tests/test_web.py::test_old_schedule_history_url_redirects - Run...23263ERROR nixbot/tests/test_orchestrator.py::test_rerun_effects_cancels_hung_effect23264ERROR nixbot/tests/test_web.py::test_project_effects_filter_and_paginate - Ru...23265ERROR nixbot/tests/test_service.py::test_rerun_of_interrupted_eval_reevaluates23266ERROR nixbot/tests/test_web.py::test_scheduled_run_stream_replays_history - R...23267ERROR nixbot/tests/test_orchestrator.py::test_cancel_hung_effect - RuntimeErr...23268ERROR nixbot/tests/test_service.py::test_rerun_resumes_building_rows_and_keeps_finished23269ERROR nixbot/tests/test_web.py::test_scheduled_run_notify_build_events - Runt...23270ERROR nixbot/tests/test_orchestrator.py::test_rerun_single_effect - RuntimeEr...23271ERROR nixbot/tests/test_web.py::test_api_log_toc_and_text - RuntimeError: pos...23272ERROR nixbot/tests/test_service.py::test_rerun_reevaluates_when_drv_paths_were_garbage_collected23273ERROR nixbot/tests/test_web.py::test_api_log_toc_flat_log_fallback - RuntimeE...23274ERROR nixbot/tests/test_orchestrator.py::test_recovery_rerun_runs_effects - R...23275ERROR nixbot/tests/test_web.py::test_api_log_stream_json - RuntimeError: post...23276ERROR nixbot/tests/test_service.py::test_reeval_failure_marks_build_failed - ...23277ERROR nixbot/tests/test_web.py::test_build_eval_stats_surface - RuntimeError:...23278ERROR nixbot/tests/test_orchestrator.py::test_unsupported_system_attr_does_not_block_aggregation23279ERROR nixbot/tests/test_service.py::test_gitlab_discovery_and_hook_registration23280ERROR nixbot/tests/test_orchestrator.py::test_linked_context_reported_on_eval_failure23281ERROR nixbot/tests/test_service.py::test_health_serves_while_startup_blocks23282ERROR nixbot/tests/test_orchestrator.py::test_eval_failure_settles_streamed_attributes23283ERROR nixbot/tests/test_orchestrator.py::test_effect_rows_roundtrip - Runtime...23284ERROR nixbot/tests/test_orchestrator.py::test_pending_effects_replace_skipped_rows23285ERROR nixbot/tests/test_orchestrator.py::test_effect_items_resume_only_pending23286ERROR nixbot/tests/test_orchestrator.py::test_effect_crash_settles_the_row - ...23287ERROR nixbot/tests/test_orchestrator.py::test_concurrent_effects_use_independent_worktrees23288ERROR nixbot/tests/test_orchestrator.py::test_locked_effect_gets_shared_dedup_key23289ERROR nixbot/tests/test_orchestrator.py::test_effect_item_not_claimable_until_dep_settles23290ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_failure_skips_dependent23291ERROR nixbot/tests/test_orchestrator.py::test_lock_serializes_builds_without_interleaving23292ERROR nixbot/tests/test_orchestrator.py::test_effect_dep_cycle_fails_discovery23293ERROR nixbot/tests/test_orchestrator.py::test_failed_effect_reports_failure_status23294ERROR nixbot/tests/test_orchestrator.py::test_post_process_error_does_not_wedge_build23295ERROR nixbot/tests/test_orchestrator.py::test_unexpected_eval_path_error_settles_build23296ERROR nixbot/tests/test_orchestrator.py::test_reuse_empty_succeeded_build_posts_eval_success23297ERROR nixbot/tests/test_orchestrator.py::test_stale_event_reusing_old_build_does_not_cancel_newer23298ERROR nixbot/tests/test_orchestrator.py::test_reuse_for_default_branch_push_runs_effects23299ERROR nixbot/tests/test_orchestrator.py::test_tag_reusing_deployed_build_delivers_its_own_effects23300ERROR nixbot/tests/test_orchestrator.py::test_tag_attached_to_in_flight_build_delivers_on_success23301ERROR nixbot/tests/test_orchestrator.py::test_restart_of_gated_build_settles_effect_rows23302ERROR nixbot/tests/test_orchestrator.py::test_restart_build_drops_queued_effect_items23303ERROR nixbot/tests/test_orchestrator.py::test_restart_effects_after_pr_attach_keeps_effects_ref23304ERROR nixbot/tests/test_orchestrator.py::test_gated_restart_then_allowed_reuse_deploys23305ERROR nixbot/tests/test_orchestrator.py::test_rerun_single_effect_takes_pending_dependents23306ERROR nixbot/tests/test_orchestrator.py::test_reuse_replays_effect_statuses_to_new_commit23307ERROR nixbot/tests/test_orchestrator.py::test_attach_to_already_terminal_build_replays_status23308ERROR nixbot/tests/test_orchestrator.py::test_cancel_during_eval_resolves_linked_eval_contexts23309ERROR nixbot/tests/test_orchestrator.py::test_effect_log_does_not_collide_with_attribute_log23310ERROR nixbot/tests/test_orchestrator.py::test_post_process_paths_are_forge_scoped23311ERROR nixbot/tests/test_orchestrator.py::test_effects_phase_error_keeps_succeeded_build23312ERROR nixbot/tests/test_orchestrator.py::test_reuse_post_process_error_still_reports_status23313ERROR nixbot/tests/test_orchestrator.py::test_reuse_with_missing_output_still_post_processes23314================= 477 passed, 29 skipped, 356 errors in 39.94s =================