nixbot

builds
1tribuchet: building on eliza2structuredAttrs is enabled3Sourcing python-remove-tests-dir-hook4Sourcing python-catch-conflicts-hook.sh5Sourcing python-remove-bin-bytecode-hook.sh6Sourcing pypa-build-hook7Using pypaBuildPhase8Sourcing python-runtime-deps-check-hook9Using pythonRuntimeDepsCheckHook10Sourcing pypa-install-hook11Using pypaInstallPhase12Sourcing python-imports-check-hook.sh13Using pythonImportsCheckPhase14Sourcing python-namespaces-hook15Sourcing python-catch-conflicts-hook.sh
unpackPhase
16unpacking source archive /nix/store/rjshzyiafm037hqgkimh1vdrfkfj38im-source17source root is source18setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/tests/test_wip.py"
configurePhase
19no configure script, doing nothing
buildPhase
20Executing pypaBuildPhase21Creating a wheel...22pypa build flags: --no-isolation --outdir dist/ --wheel23* Getting build dependencies for wheel...24/nix/store/7wqmhkx1lp5j15m2p4mv6vfrw08nzd90-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated25!!2627 ********************************************************************************28 Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).2930 By 2027-Feb-18, you need to update your project and remove deprecated calls31 or your builds will no longer be supported.3233 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.34 ********************************************************************************3536!!37 corresp(dist, value, root_dir)38running egg_info39creating nixpkgs_review.egg-info40writing nixpkgs_review.egg-info/PKG-INFO41writing dependency_links to nixpkgs_review.egg-info/dependency_links.txt42writing entry points to nixpkgs_review.egg-info/entry_points.txt43writing top-level names to nixpkgs_review.egg-info/top_level.txt44writing manifest file 'nixpkgs_review.egg-info/SOURCES.txt'45reading manifest file 'nixpkgs_review.egg-info/SOURCES.txt'46writing manifest file 'nixpkgs_review.egg-info/SOURCES.txt'47* Building wheel...48/nix/store/7wqmhkx1lp5j15m2p4mv6vfrw08nzd90-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated49!!5051 ********************************************************************************52 Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).5354 By 2027-Feb-18, you need to update your project and remove deprecated calls55 or your builds will no longer be supported.5657 See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.58 ********************************************************************************5960!!61 corresp(dist, value, root_dir)62running bdist_wheel63running build64running build_py65creating build/lib/tests66copying tests/test_rev.py -> build/lib/tests67copying tests/test_github.py -> build/lib/tests68copying tests/test_escape_attr.py -> build/lib/tests69copying tests/test_pr.py -> build/lib/tests70copying tests/test_store_flag.py -> build/lib/tests71copying tests/test_github_actions.py -> build/lib/tests72copying tests/test_option_flag.py -> build/lib/tests73copying tests/test_wip.py -> build/lib/tests74copying tests/__init__.py -> build/lib/tests75copying tests/conftest.py -> build/lib/tests76copying tests/test_nixpkgs.py -> build/lib/tests77copying tests/test_eval.py -> build/lib/tests78creating build/lib/nixpkgs_review79copying nixpkgs_review/allow.py -> build/lib/nixpkgs_review80copying nixpkgs_review/report.py -> build/lib/nixpkgs_review81copying nixpkgs_review/utils.py -> build/lib/nixpkgs_review82copying nixpkgs_review/git.py -> build/lib/nixpkgs_review83copying nixpkgs_review/http_requests.py -> build/lib/nixpkgs_review84copying nixpkgs_review/buildenv.py -> build/lib/nixpkgs_review85copying nixpkgs_review/__init__.py -> build/lib/nixpkgs_review86copying nixpkgs_review/builddir.py -> build/lib/nixpkgs_review87copying nixpkgs_review/overlay.py -> build/lib/nixpkgs_review88copying nixpkgs_review/nix.py -> build/lib/nixpkgs_review89copying nixpkgs_review/errors.py -> build/lib/nixpkgs_review90copying nixpkgs_review/review.py -> build/lib/nixpkgs_review91copying nixpkgs_review/nixpkgs.py -> build/lib/nixpkgs_review92copying nixpkgs_review/github.py -> build/lib/nixpkgs_review93creating build/lib/nixpkgs_review/cli94copying nixpkgs_review/cli/pr.py -> build/lib/nixpkgs_review/cli95copying nixpkgs_review/cli/utils.py -> build/lib/nixpkgs_review/cli96copying nixpkgs_review/cli/comments.py -> build/lib/nixpkgs_review/cli97copying nixpkgs_review/cli/rev.py -> build/lib/nixpkgs_review/cli98copying nixpkgs_review/cli/approve.py -> build/lib/nixpkgs_review/cli99copying nixpkgs_review/cli/post_result.py -> build/lib/nixpkgs_review/cli100copying nixpkgs_review/cli/merge.py -> build/lib/nixpkgs_review/cli101copying nixpkgs_review/cli/__init__.py -> build/lib/nixpkgs_review/cli102copying nixpkgs_review/cli/wip.py -> build/lib/nixpkgs_review/cli103running egg_info104writing nixpkgs_review.egg-info/PKG-INFO105writing dependency_links to nixpkgs_review.egg-info/dependency_links.txt106writing entry points to nixpkgs_review.egg-info/entry_points.txt107writing top-level names to nixpkgs_review.egg-info/top_level.txt108reading manifest file 'nixpkgs_review.egg-info/SOURCES.txt'109writing manifest file 'nixpkgs_review.egg-info/SOURCES.txt'110creating build/lib/nixpkgs_review/nix111copying nixpkgs_review/nix/evalAttrs.nix -> build/lib/nixpkgs_review/nix112copying nixpkgs_review/nix/listPackages.nix -> build/lib/nixpkgs_review/nix113installing to build/bdist.linux-aarch64/wheel114running install115running install_lib116creating build/bdist.linux-aarch64/wheel117creating build/bdist.linux-aarch64/wheel/tests118copying build/lib/tests/test_pr.py -> build/bdist.linux-aarch64/wheel/./tests119copying build/lib/tests/test_nixpkgs.py -> build/bdist.linux-aarch64/wheel/./tests120copying build/lib/tests/test_eval.py -> build/bdist.linux-aarch64/wheel/./tests121copying build/lib/tests/test_github.py -> build/bdist.linux-aarch64/wheel/./tests122copying build/lib/tests/test_rev.py -> build/bdist.linux-aarch64/wheel/./tests123copying build/lib/tests/test_github_actions.py -> build/bdist.linux-aarch64/wheel/./tests124copying build/lib/tests/test_escape_attr.py -> build/bdist.linux-aarch64/wheel/./tests125copying build/lib/tests/test_option_flag.py -> build/bdist.linux-aarch64/wheel/./tests126copying build/lib/tests/test_store_flag.py -> build/bdist.linux-aarch64/wheel/./tests127copying build/lib/tests/conftest.py -> build/bdist.linux-aarch64/wheel/./tests128copying build/lib/tests/__init__.py -> build/bdist.linux-aarch64/wheel/./tests129copying build/lib/tests/test_wip.py -> build/bdist.linux-aarch64/wheel/./tests130creating build/bdist.linux-aarch64/wheel/nixpkgs_review131copying build/lib/nixpkgs_review/http_requests.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review132copying build/lib/nixpkgs_review/overlay.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review133copying build/lib/nixpkgs_review/nixpkgs.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review134creating build/bdist.linux-aarch64/wheel/nixpkgs_review/nix135copying build/lib/nixpkgs_review/nix/listPackages.nix -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/nix136copying build/lib/nixpkgs_review/nix/evalAttrs.nix -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/nix137copying build/lib/nixpkgs_review/builddir.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review138copying build/lib/nixpkgs_review/__init__.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review139copying build/lib/nixpkgs_review/buildenv.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review140copying build/lib/nixpkgs_review/nix.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review141copying build/lib/nixpkgs_review/errors.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review142copying build/lib/nixpkgs_review/review.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review143copying build/lib/nixpkgs_review/github.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review144copying build/lib/nixpkgs_review/git.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review145copying build/lib/nixpkgs_review/allow.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review146copying build/lib/nixpkgs_review/utils.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review147creating build/bdist.linux-aarch64/wheel/nixpkgs_review/cli148copying build/lib/nixpkgs_review/cli/post_result.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli149copying build/lib/nixpkgs_review/cli/merge.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli150copying build/lib/nixpkgs_review/cli/wip.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli151copying build/lib/nixpkgs_review/cli/__init__.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli152copying build/lib/nixpkgs_review/cli/rev.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli153copying build/lib/nixpkgs_review/cli/comments.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli154copying build/lib/nixpkgs_review/cli/approve.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli155copying build/lib/nixpkgs_review/cli/utils.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli156copying build/lib/nixpkgs_review/cli/pr.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review/cli157copying build/lib/nixpkgs_review/report.py -> build/bdist.linux-aarch64/wheel/./nixpkgs_review158running install_egg_info159Copying nixpkgs_review.egg-info to build/bdist.linux-aarch64/wheel/./nixpkgs_review-4.0.0-py3.14.egg-info160running install_scripts161creating build/bdist.linux-aarch64/wheel/nixpkgs_review-4.0.0.dist-info/WHEEL162creating '/build/source/dist/.tmp-yov__c_1/nixpkgs_review-4.0.0-py3-none-any.whl' and adding 'build/bdist.linux-aarch64/wheel' to it163adding 'nixpkgs_review/__init__.py'164adding 'nixpkgs_review/allow.py'165adding 'nixpkgs_review/builddir.py'166adding 'nixpkgs_review/buildenv.py'167adding 'nixpkgs_review/errors.py'168adding 'nixpkgs_review/git.py'169adding 'nixpkgs_review/github.py'170adding 'nixpkgs_review/http_requests.py'171adding 'nixpkgs_review/nix.py'172adding 'nixpkgs_review/nixpkgs.py'173adding 'nixpkgs_review/overlay.py'174adding 'nixpkgs_review/report.py'175adding 'nixpkgs_review/review.py'176adding 'nixpkgs_review/utils.py'177adding 'nixpkgs_review/cli/__init__.py'178adding 'nixpkgs_review/cli/approve.py'179adding 'nixpkgs_review/cli/comments.py'180adding 'nixpkgs_review/cli/merge.py'181adding 'nixpkgs_review/cli/post_result.py'182adding 'nixpkgs_review/cli/pr.py'183adding 'nixpkgs_review/cli/rev.py'184adding 'nixpkgs_review/cli/utils.py'185adding 'nixpkgs_review/cli/wip.py'186adding 'nixpkgs_review/nix/evalAttrs.nix'187adding 'nixpkgs_review/nix/listPackages.nix'188adding 'tests/__init__.py'189adding 'tests/conftest.py'190adding 'tests/test_escape_attr.py'191adding 'tests/test_eval.py'192adding 'tests/test_github.py'193adding 'tests/test_github_actions.py'194adding 'tests/test_nixpkgs.py'195adding 'tests/test_option_flag.py'196adding 'tests/test_pr.py'197adding 'tests/test_rev.py'198adding 'tests/test_store_flag.py'199adding 'tests/test_wip.py'200adding 'nixpkgs_review-4.0.0.dist-info/METADATA'201adding 'nixpkgs_review-4.0.0.dist-info/WHEEL'202adding 'nixpkgs_review-4.0.0.dist-info/entry_points.txt'203adding 'nixpkgs_review-4.0.0.dist-info/top_level.txt'204adding 'nixpkgs_review-4.0.0.dist-info/RECORD'205removing build/bdist.linux-aarch64/wheel206Successfully built nixpkgs_review-4.0.0-py3-none-any.whl207Finished creating a wheel...208Finished executing pypaBuildPhase
pythonRuntimeDepsCheckHook
209Executing pythonRuntimeDepsCheck210Checking runtime dependencies for nixpkgs_review-4.0.0-py3-none-any.whl211Finished executing pythonRuntimeDepsCheck
installPhase
212Executing pypaInstallPhase213Successfully installed nixpkgs_review-4.0.0-py3-none-any.whl214Finished executing pypaInstallPhase
pythonOutputDistPhase
215Executing pythonOutputDistPhase216Finished executing pythonOutputDistPhase
fixupPhase
217shrinking RPATHs of ELF executables and libraries in /nix/store/5lypz0n0ca2ll05sdpxq9gwnjj73nhvb-nixpkgs-review-dist218checking for references to /build/ in /nix/store/5lypz0n0ca2ll05sdpxq9gwnjj73nhvb-nixpkgs-review-dist...219patching script interpreter paths in /nix/store/5lypz0n0ca2ll05sdpxq9gwnjj73nhvb-nixpkgs-review-dist220shrinking RPATHs of ELF executables and libraries in /nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review221checking for references to /build/ in /nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review...222patching script interpreter paths in /nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review223stripping (with command strip and flags -S -p) in /nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review/lib /nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review/bin224Rewriting #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python3.14 to #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8225wrapping `/nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review/bin/nixpkgs-review'...226Rewriting #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python3.14 to #!/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8227wrapping `/nix/store/zpxdzv7574vmhy6m50643ga51s192bw6-nixpkgs-review/bin/nix-review'...228Executing pythonRemoveTestsDir229Finished executing pythonRemoveTestsDir
installCheckPhase
230============================= test session starts ==============================231platform linux -- Python 3.14.8, pytest-9.1.1, pluggy-1.6.0232rootdir: /build/source233configfile: pyproject.toml234plugins: xdist-3.8.0235created: 192/192 workers236192 workers [53 items]237238..s..s.....s.....s....FFFF...........................239=================================== FAILURES ===================================240_____________________ test_eval_tests[single-tests2-True] ______________________241[gw7] linux -- Python 3.14.8 /nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python242243tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw7/test_eval_tests_single_tests2_0')244package = 'single', tests = {'single.tests'}, include_tests = True245246 @pytest.mark.parametrize("include_tests", [False, True])247 @pytest.mark.parametrize(248 ("package", "tests"),249 [250 (251 "selfReferencing",252 {"selfReferencing.tests.self", "selfReferencing.tests.nested.test"},253 ),254 ("overridden", {"overridden.tests.inherited"}),255 ("single", {"single.tests"}),256 ("group", {"group.package.tests.nested.test"}),257 ],258 )259 def test_eval_tests(260 tmp_path: Path, package: str, tests: set[str], *, include_tests: bool261 ) -> None:262 nixpkgs = real_nixpkgs()263 fixture = TEST_ROOT / "assets/recursive-tests.nix"264 (tmp_path / "default.nix").write_text(265 f"{{ system, ... }}: import {fixture} {{ "266 f"pkgs = import {nixpkgs} {{ inherit system; config = {{}}; }}; }}"267 )268 config = tmp_path / "config.nix"269 config.write_text("{}")270 attrs = tmp_path / "attrs.json"271> attrs.write_text(json.dumps({current_system(): [package]}))272 ^^^^^^^^^^^^^^^^273274tests/test_eval.py:43: 275_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 276nixpkgs_review/utils.py:99: in current_system277 system = subprocess.run(278_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 279280input = None, capture_output = False, timeout = None, check = True281popenargs = (['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', ...],)282kwargs = {'stdout': -1, 'text': True}283284 def run(*popenargs,285 input=None, capture_output=False, timeout=None, check=False, **kwargs):286 """Run command with arguments and return a CompletedProcess instance.287 288 The returned instance will have attributes args, returncode, stdout and289 stderr. By default, stdout and stderr are not captured, and those attributes290 will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,291 or pass capture_output=True to capture both.292 293 If check is True and the exit code was non-zero, it raises a294 CalledProcessError. The CalledProcessError object will have the return code295 in the returncode attribute, and output & stderr attributes if those streams296 were captured.297 298 If timeout (seconds) is given and the process takes too long,299 a TimeoutExpired exception will be raised.300 301 There is an optional argument "input", allowing you to302 pass bytes or a string to the subprocess's stdin. If you use this argument303 you may not also use the Popen constructor's "stdin" argument, as304 it will be used internally.305 306 By default, all communication is in bytes, and therefore any "input" should307 be bytes, and the stdout and stderr will be bytes. If in text mode, any308 "input" should be a string, and stdout and stderr will be strings decoded309 according to locale encoding, or by "encoding" if set. Text mode is310 triggered by setting any of text, encoding, errors or universal_newlines.311 312 The other arguments are the same as for the Popen constructor.313 """314 if input is not None:315 if kwargs.get('stdin') is not None:316 raise ValueError('stdin and input arguments may not both be used.')317 kwargs['stdin'] = PIPE318 319 if capture_output:320 if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:321 raise ValueError('stdout and stderr arguments may not be used '322 'with capture_output.')323 kwargs['stdout'] = PIPE324 kwargs['stderr'] = PIPE325 326 with Popen(*popenargs, **kwargs) as process:327 try:328 stdout, stderr = process.communicate(input, timeout=timeout)329 except TimeoutExpired as exc:330 process.kill()331 if _mswindows:332 # Windows accumulates the output in a single blocking333 # read() call run on child threads, with the timeout334 # being done in a join() on those threads. communicate()335 # _after_ kill() is required to collect that and add it336 # to the exception.337 exc.stdout, exc.stderr = process.communicate()338 else:339 # POSIX _communicate already populated the output so340 # far into the TimeoutExpired exception.341 process.wait()342 raise343 except: # Including KeyboardInterrupt, communicate handled that.344 process.kill()345 # We don't call process.wait() as .__exit__ does that for us.346 raise347 retcode = process.poll()348 if check and retcode:349> raise CalledProcessError(retcode, process.args,350 output=stdout, stderr=stderr)351E subprocess.CalledProcessError: Command '['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', '--expr', 'builtins.currentSystem']' returned non-zero exit status 1.352353/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/lib/python3.14/subprocess.py:578: CalledProcessError354----------------------------- Captured stderr call -----------------------------355warning: you don't have Internet access; disabling some network-dependent features356warning: /nix/var/nix does not exist, so Nix will use "/homeless-shelter/.local/share/nix/root" as a chroot store357error: SQLite database '/homeless-shelter/.local/share/nix/root/nix/var/nix/db/db.sqlite' is busy358_____________________ test_eval_tests[single-tests2-False] _____________________359[gw5] linux -- Python 3.14.8 /nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python360361tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw5/test_eval_tests_single_tests2_0')362package = 'single', tests = {'single.tests'}, include_tests = False363364 @pytest.mark.parametrize("include_tests", [False, True])365 @pytest.mark.parametrize(366 ("package", "tests"),367 [368 (369 "selfReferencing",370 {"selfReferencing.tests.self", "selfReferencing.tests.nested.test"},371 ),372 ("overridden", {"overridden.tests.inherited"}),373 ("single", {"single.tests"}),374 ("group", {"group.package.tests.nested.test"}),375 ],376 )377 def test_eval_tests(378 tmp_path: Path, package: str, tests: set[str], *, include_tests: bool379 ) -> None:380 nixpkgs = real_nixpkgs()381 fixture = TEST_ROOT / "assets/recursive-tests.nix"382 (tmp_path / "default.nix").write_text(383 f"{{ system, ... }}: import {fixture} {{ "384 f"pkgs = import {nixpkgs} {{ inherit system; config = {{}}; }}; }}"385 )386 config = tmp_path / "config.nix"387 config.write_text("{}")388 attrs = tmp_path / "attrs.json"389> attrs.write_text(json.dumps({current_system(): [package]}))390 ^^^^^^^^^^^^^^^^391392tests/test_eval.py:43: 393_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 394nixpkgs_review/utils.py:99: in current_system395 system = subprocess.run(396_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 397398input = None, capture_output = False, timeout = None, check = True399popenargs = (['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', ...],)400kwargs = {'stdout': -1, 'text': True}401402 def run(*popenargs,403 input=None, capture_output=False, timeout=None, check=False, **kwargs):404 """Run command with arguments and return a CompletedProcess instance.405 406 The returned instance will have attributes args, returncode, stdout and407 stderr. By default, stdout and stderr are not captured, and those attributes408 will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,409 or pass capture_output=True to capture both.410 411 If check is True and the exit code was non-zero, it raises a412 CalledProcessError. The CalledProcessError object will have the return code413 in the returncode attribute, and output & stderr attributes if those streams414 were captured.415 416 If timeout (seconds) is given and the process takes too long,417 a TimeoutExpired exception will be raised.418 419 There is an optional argument "input", allowing you to420 pass bytes or a string to the subprocess's stdin. If you use this argument421 you may not also use the Popen constructor's "stdin" argument, as422 it will be used internally.423 424 By default, all communication is in bytes, and therefore any "input" should425 be bytes, and the stdout and stderr will be bytes. If in text mode, any426 "input" should be a string, and stdout and stderr will be strings decoded427 according to locale encoding, or by "encoding" if set. Text mode is428 triggered by setting any of text, encoding, errors or universal_newlines.429 430 The other arguments are the same as for the Popen constructor.431 """432 if input is not None:433 if kwargs.get('stdin') is not None:434 raise ValueError('stdin and input arguments may not both be used.')435 kwargs['stdin'] = PIPE436 437 if capture_output:438 if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:439 raise ValueError('stdout and stderr arguments may not be used '440 'with capture_output.')441 kwargs['stdout'] = PIPE442 kwargs['stderr'] = PIPE443 444 with Popen(*popenargs, **kwargs) as process:445 try:446 stdout, stderr = process.communicate(input, timeout=timeout)447 except TimeoutExpired as exc:448 process.kill()449 if _mswindows:450 # Windows accumulates the output in a single blocking451 # read() call run on child threads, with the timeout452 # being done in a join() on those threads. communicate()453 # _after_ kill() is required to collect that and add it454 # to the exception.455 exc.stdout, exc.stderr = process.communicate()456 else:457 # POSIX _communicate already populated the output so458 # far into the TimeoutExpired exception.459 process.wait()460 raise461 except: # Including KeyboardInterrupt, communicate handled that.462 process.kill()463 # We don't call process.wait() as .__exit__ does that for us.464 raise465 retcode = process.poll()466 if check and retcode:467> raise CalledProcessError(retcode, process.args,468 output=stdout, stderr=stderr)469E subprocess.CalledProcessError: Command '['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', '--expr', 'builtins.currentSystem']' returned non-zero exit status 1.470471/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/lib/python3.14/subprocess.py:578: CalledProcessError472----------------------------- Captured stderr call -----------------------------473warning: you don't have Internet access; disabling some network-dependent features474warning: /nix/var/nix does not exist, so Nix will use "/homeless-shelter/.local/share/nix/root" as a chroot store475error: SQLite database '/homeless-shelter/.local/share/nix/root/nix/var/nix/db/db.sqlite' is busy476___________________ test_eval_tests[overridden-tests1-False] ___________________477[gw3] linux -- Python 3.14.8 /nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python478479tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw3/test_eval_tests_overridden_tes0')480package = 'overridden', tests = {'overridden.tests.inherited'}481include_tests = False482483 @pytest.mark.parametrize("include_tests", [False, True])484 @pytest.mark.parametrize(485 ("package", "tests"),486 [487 (488 "selfReferencing",489 {"selfReferencing.tests.self", "selfReferencing.tests.nested.test"},490 ),491 ("overridden", {"overridden.tests.inherited"}),492 ("single", {"single.tests"}),493 ("group", {"group.package.tests.nested.test"}),494 ],495 )496 def test_eval_tests(497 tmp_path: Path, package: str, tests: set[str], *, include_tests: bool498 ) -> None:499 nixpkgs = real_nixpkgs()500 fixture = TEST_ROOT / "assets/recursive-tests.nix"501 (tmp_path / "default.nix").write_text(502 f"{{ system, ... }}: import {fixture} {{ "503 f"pkgs = import {nixpkgs} {{ inherit system; config = {{}}; }}; }}"504 )505 config = tmp_path / "config.nix"506 config.write_text("{}")507 attrs = tmp_path / "attrs.json"508> attrs.write_text(json.dumps({current_system(): [package]}))509 ^^^^^^^^^^^^^^^^510511tests/test_eval.py:43: 512_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 513nixpkgs_review/utils.py:99: in current_system514 system = subprocess.run(515_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 516517input = None, capture_output = False, timeout = None, check = True518popenargs = (['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', ...],)519kwargs = {'stdout': -1, 'text': True}520521 def run(*popenargs,522 input=None, capture_output=False, timeout=None, check=False, **kwargs):523 """Run command with arguments and return a CompletedProcess instance.524 525 The returned instance will have attributes args, returncode, stdout and526 stderr. By default, stdout and stderr are not captured, and those attributes527 will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,528 or pass capture_output=True to capture both.529 530 If check is True and the exit code was non-zero, it raises a531 CalledProcessError. The CalledProcessError object will have the return code532 in the returncode attribute, and output & stderr attributes if those streams533 were captured.534 535 If timeout (seconds) is given and the process takes too long,536 a TimeoutExpired exception will be raised.537 538 There is an optional argument "input", allowing you to539 pass bytes or a string to the subprocess's stdin. If you use this argument540 you may not also use the Popen constructor's "stdin" argument, as541 it will be used internally.542 543 By default, all communication is in bytes, and therefore any "input" should544 be bytes, and the stdout and stderr will be bytes. If in text mode, any545 "input" should be a string, and stdout and stderr will be strings decoded546 according to locale encoding, or by "encoding" if set. Text mode is547 triggered by setting any of text, encoding, errors or universal_newlines.548 549 The other arguments are the same as for the Popen constructor.550 """551 if input is not None:552 if kwargs.get('stdin') is not None:553 raise ValueError('stdin and input arguments may not both be used.')554 kwargs['stdin'] = PIPE555 556 if capture_output:557 if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:558 raise ValueError('stdout and stderr arguments may not be used '559 'with capture_output.')560 kwargs['stdout'] = PIPE561 kwargs['stderr'] = PIPE562 563 with Popen(*popenargs, **kwargs) as process:564 try:565 stdout, stderr = process.communicate(input, timeout=timeout)566 except TimeoutExpired as exc:567 process.kill()568 if _mswindows:569 # Windows accumulates the output in a single blocking570 # read() call run on child threads, with the timeout571 # being done in a join() on those threads. communicate()572 # _after_ kill() is required to collect that and add it573 # to the exception.574 exc.stdout, exc.stderr = process.communicate()575 else:576 # POSIX _communicate already populated the output so577 # far into the TimeoutExpired exception.578 process.wait()579 raise580 except: # Including KeyboardInterrupt, communicate handled that.581 process.kill()582 # We don't call process.wait() as .__exit__ does that for us.583 raise584 retcode = process.poll()585 if check and retcode:586> raise CalledProcessError(retcode, process.args,587 output=stdout, stderr=stderr)588E subprocess.CalledProcessError: Command '['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', '--expr', 'builtins.currentSystem']' returned non-zero exit status 1.589590/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/lib/python3.14/subprocess.py:578: CalledProcessError591----------------------------- Captured stderr call -----------------------------592warning: you don't have Internet access; disabling some network-dependent features593warning: /nix/var/nix does not exist, so Nix will use "/homeless-shelter/.local/share/nix/root" as a chroot store594error: SQLite database '/homeless-shelter/.local/share/nix/root/nix/var/nix/db/db.sqlite' is busy595_____________________ test_eval_tests[group-tests3-False] ______________________596[gw6] linux -- Python 3.14.8 /nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/bin/python597598tmp_path = PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw6/test_eval_tests_group_tests3_F0')599package = 'group', tests = {'group.package.tests.nested.test'}600include_tests = False601602 @pytest.mark.parametrize("include_tests", [False, True])603 @pytest.mark.parametrize(604 ("package", "tests"),605 [606 (607 "selfReferencing",608 {"selfReferencing.tests.self", "selfReferencing.tests.nested.test"},609 ),610 ("overridden", {"overridden.tests.inherited"}),611 ("single", {"single.tests"}),612 ("group", {"group.package.tests.nested.test"}),613 ],614 )615 def test_eval_tests(616 tmp_path: Path, package: str, tests: set[str], *, include_tests: bool617 ) -> None:618 nixpkgs = real_nixpkgs()619 fixture = TEST_ROOT / "assets/recursive-tests.nix"620 (tmp_path / "default.nix").write_text(621 f"{{ system, ... }}: import {fixture} {{ "622 f"pkgs = import {nixpkgs} {{ inherit system; config = {{}}; }}; }}"623 )624 config = tmp_path / "config.nix"625 config.write_text("{}")626 attrs = tmp_path / "attrs.json"627> attrs.write_text(json.dumps({current_system(): [package]}))628 ^^^^^^^^^^^^^^^^629630tests/test_eval.py:43: 631_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 632nixpkgs_review/utils.py:99: in current_system633 system = subprocess.run(634_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 635636input = None, capture_output = False, timeout = None, check = True637popenargs = (['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', ...],)638kwargs = {'stdout': -1, 'text': True}639640 def run(*popenargs,641 input=None, capture_output=False, timeout=None, check=False, **kwargs):642 """Run command with arguments and return a CompletedProcess instance.643 644 The returned instance will have attributes args, returncode, stdout and645 stderr. By default, stdout and stderr are not captured, and those attributes646 will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them,647 or pass capture_output=True to capture both.648 649 If check is True and the exit code was non-zero, it raises a650 CalledProcessError. The CalledProcessError object will have the return code651 in the returncode attribute, and output & stderr attributes if those streams652 were captured.653 654 If timeout (seconds) is given and the process takes too long,655 a TimeoutExpired exception will be raised.656 657 There is an optional argument "input", allowing you to658 pass bytes or a string to the subprocess's stdin. If you use this argument659 you may not also use the Popen constructor's "stdin" argument, as660 it will be used internally.661 662 By default, all communication is in bytes, and therefore any "input" should663 be bytes, and the stdout and stderr will be bytes. If in text mode, any664 "input" should be a string, and stdout and stderr will be strings decoded665 according to locale encoding, or by "encoding" if set. Text mode is666 triggered by setting any of text, encoding, errors or universal_newlines.667 668 The other arguments are the same as for the Popen constructor.669 """670 if input is not None:671 if kwargs.get('stdin') is not None:672 raise ValueError('stdin and input arguments may not both be used.')673 kwargs['stdin'] = PIPE674 675 if capture_output:676 if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:677 raise ValueError('stdout and stderr arguments may not be used '678 'with capture_output.')679 kwargs['stdout'] = PIPE680 kwargs['stderr'] = PIPE681 682 with Popen(*popenargs, **kwargs) as process:683 try:684 stdout, stderr = process.communicate(input, timeout=timeout)685 except TimeoutExpired as exc:686 process.kill()687 if _mswindows:688 # Windows accumulates the output in a single blocking689 # read() call run on child threads, with the timeout690 # being done in a join() on those threads. communicate()691 # _after_ kill() is required to collect that and add it692 # to the exception.693 exc.stdout, exc.stderr = process.communicate()694 else:695 # POSIX _communicate already populated the output so696 # far into the TimeoutExpired exception.697 process.wait()698 raise699 except: # Including KeyboardInterrupt, communicate handled that.700 process.kill()701 # We don't call process.wait() as .__exit__ does that for us.702 raise703 retcode = process.poll()704 if check and retcode:705> raise CalledProcessError(retcode, process.args,706 output=stdout, stderr=stderr)707E subprocess.CalledProcessError: Command '['nix', '--extra-experimental-features', 'nix-command', 'eval', '--impure', '--raw', '--expr', 'builtins.currentSystem']' returned non-zero exit status 1.708709/nix/store/lq2fsnmg0q3y0vlxn91w8s8wvj1m6fld-python3-3.14.8/lib/python3.14/subprocess.py:578: CalledProcessError710----------------------------- Captured stderr call -----------------------------711warning: you don't have Internet access; disabling some network-dependent features712warning: /nix/var/nix does not exist, so Nix will use "/homeless-shelter/.local/share/nix/root" as a chroot store713error: SQLite database '/homeless-shelter/.local/share/nix/root/nix/var/nix/db/db.sqlite' is busy714=========================== short test summary info ============================715FAILED tests/test_eval.py::test_eval_tests[single-tests2-True] - subprocess.C...716FAILED tests/test_eval.py::test_eval_tests[single-tests2-False] - subprocess....717FAILED tests/test_eval.py::test_eval_tests[overridden-tests1-False] - subproc...718FAILED tests/test_eval.py::test_eval_tests[group-tests3-False] - subprocess.C...719!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 4 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!720!!!!!!!!!!!! xdist.dsession.Interrupted: stopping after 1 failures !!!!!!!!!!!!!721============= 4 failed, 45 passed, 4 skipped in 563.17s (0:09:23) ==============