-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
With Python 3.12.8/3.13.1
several tests fail:
============================= test session starts ==============================
platform linux -- Python 3.12.8, pytest-8.3.4, pluggy-1.5.0 -- /opt/hostedtoolcache/Python/3.12.8/x64/bin/python
...
___________________________ test_invalid_hook_choice ___________________________
def test_invalid_hook_choice():
invalid_hook = "invalid_hook_name"
result = subprocess.run(
args=[sys.executable, "-m", BACKEND_CALLER_MOD, "be", invalid_hook],
capture_output=True,
)
expected_err_msg = (
"argument hook_name: invalid choice: '{}' (choose from {})\n"
).format(
invalid_hook,
", ".join([f"{x!r}" for x in backend_caller.SUPPORTED_HOOKS]),
)
assert result.returncode
> assert expected_err_msg.encode("utf-8") in result.stderr
E assert b"argument hook_name: invalid choice: 'invalid_hook_name' (choose from 'build_wheel', 'build_sdist', 'get_requires_for_build_wheel', 'get_requires_for_build_sdist', 'prepare_metadata_for_build_wheel')\n" in b"usage: backend_caller.py [-h] [--backend-path BACKEND_PATH]\n [--result-fd RESULT_FD] [-v] [--hook-args HOOK_ARGS]\n backend\n {build_wheel,build_sdist,get_requires_for_build_wheel,get_requires_for_build_sdist,prepare_metadata_for_build_wheel}\nbackend_caller.py: error: argument hook_name: invalid choice: 'invalid_hook_name' (choose from build_wheel, build_sdist, get_requires_for_build_wheel, get_requires_for_build_sdist, prepare_metadata_for_build_wheel)\n"
E + where b"argument hook_name: invalid choice: 'invalid_hook_name' (choose from 'build_wheel', 'build_sdist', 'get_requires_for_build_wheel', 'get_requires_for_build_sdist', 'prepare_metadata_for_build_wheel')\n" = <built-in method encode of str object at 0x7f7336a1f750>('utf-8')
E + where <built-in method encode of str object at 0x7f7336a1f750> = "argument hook_name: invalid choice: 'invalid_hook_name' (choose from 'build_wheel', 'build_sdist', 'get_requires_for_build_wheel', 'get_requires_for_build_sdist', 'prepare_metadata_for_build_wheel')\n".encode
E + and b"usage: backend_caller.py [-h] [--backend-path BACKEND_PATH]\n [--result-fd RESULT_FD] [-v] [--hook-args HOOK_ARGS]\n backend\n {build_wheel,build_sdist,get_requires_for_build_wheel,get_requires_for_build_sdist,prepare_metadata_for_build_wheel}\nbackend_caller.py: error: argument hook_name: invalid choice: 'invalid_hook_name' (choose from build_wheel, build_sdist, get_requires_for_build_wheel, get_requires_for_build_sdist, prepare_metadata_for_build_wheel)\n" = CompletedProcess(args=['/opt/hostedtoolcache/Python/3.12.8/x64/bin/python', '-m', 'pyproject_installer.lib.backend_helper.backend_caller', 'be', 'invalid_hook_name'], returncode=2, stdout=b'', stderr=b"usage: backend_caller.py [-h] [--backend-path BACKEND_PATH]\n [--result-fd RESULT_FD] [-v] [--hook-args HOOK_ARGS]\n backend\n {build_wheel,build_sdist,get_requires_for_build_wheel,get_requires_for_build_sdist,prepare_metadata_for_build_wheel}\nbackend_caller.py: error: argument hook_name: invalid choice: 'invalid_hook_name' (choose from build_wheel, build_sdist, get_requires_for_build_wheel, get_requires_for_build_sdist, prepare_metadata_for_build_wheel)\n").stderr
tests/unit/test_build/test_backend_caller.py:140: AssertionError
...
_______________________ test_deps_cli_add_wrong_srctype ________________________
mock_deps_command = <MagicMock name='deps_command' id='140132789667696'>
capsys = <_pytest.capture.CaptureFixture object at 0x7f7335268680>
def test_deps_cli_add_wrong_srctype(mock_deps_command, capsys):
"""Run deps add with wrong srctype
- mock deps_command
- check args
"""
action = "add"
srcname = "foo"
srctype = "bar"
deps_args = ["deps", action, srcname, srctype]
with pytest.raises(SystemExit) as exc:
project_main.main(deps_args)
assert exc.value.code == ExitCodes.WRONG_USAGE
supported_types_msg = ", ".join(
f"'{x}'" for x in project_main.SUPPORTED_COLLECTORS
)
expected_err_msg = (
f"invalid choice: '{srctype}' (choose from {supported_types_msg})"
)
captured = capsys.readouterr()
assert not captured.out
> assert expected_err_msg in captured.err
E assert "invalid choice: 'bar' (choose from 'pep517', 'pep518', 'metadata', 'pip_reqfile', 'poetry', 'tox', 'hatch', 'pdm', 'pipenv', 'pep735')" in "usage: python -m pyproject_installer deps add [-h]\n srcname\n {pep517,pep518,metadata,pip_reqfile,poetry,tox,hatch,pdm,pipenv,pep735}\n [srcargs ...]\npython -m pyproject_installer deps add: error: argument srctype: invalid choice: 'bar' (choose from pep517, pep518, metadata, pip_reqfile, poetry, tox, hatch, pdm, pipenv, pep735)\n"
E + where "usage: python -m pyproject_installer deps add [-h]\n srcname\n {pep517,pep518,metadata,pip_reqfile,poetry,tox,hatch,pdm,pipenv,pep735}\n [srcargs ...]\npython -m pyproject_installer deps add: error: argument srctype: invalid choice: 'bar' (choose from pep517, pep518, metadata, pip_reqfile, poetry, tox, hatch, pdm, pipenv, pep735)\n" = CaptureResult(out='', err="usage: python -m pyproject_installer deps add [-h]\n srcname\n {pep517,pep518,metadata,pip_reqfile,poetry,tox,hatch,pdm,pipenv,pep735}\n [srcargs ...]\npython -m pyproject_installer deps add: error: argument srctype: invalid choice: 'bar' (choose from pep517, pep518, metadata, pip_reqfile, poetry, tox, hatch, pdm, pipenv, pep735)\n").err
tests/unit/test_main.py:1117: AssertionError
Root cause:
https://docs.python.org/release/3.12.8/whatsnew/changelog.html#python-3-12-8
gh-117766: Always use str() to print choices in argparse.
See for details:
python/cpython#117766
Metadata
Metadata
Assignees
Labels
No labels