diff --git a/piptools/scripts/compile.py b/piptools/scripts/compile.py index 8e4e6a0ae..a959d2ec4 100755 --- a/piptools/scripts/compile.py +++ b/piptools/scripts/compile.py @@ -348,7 +348,7 @@ def cli( resolver = Resolver( constraints, repository, - prereleases=pre, + prereleases=repository.finder.allow_all_prereleases or pre, clear_caches=rebuild, allow_unsafe=allow_unsafe, ) diff --git a/tests/test_cli_compile.py b/tests/test_cli_compile.py index 542ff45ef..46b146334 100644 --- a/tests/test_cli_compile.py +++ b/tests/test_cli_compile.py @@ -649,22 +649,28 @@ def test_build_isolation_option(MockPyPIRepository, runner, option, expected): @pytest.mark.parametrize( - "pre_option, expected_package", + "cli_option, infile_option, expected_package", [ # no --pre pip-compile should resolve to the last stable version - ([], "small-fake-a==0.2"), + (False, False, "small-fake-a==0.2"), # pip-compile --pre should resolve to the last pre-released version - (["-p"], "small-fake-a==0.3b1"), + (True, False, "small-fake-a==0.3b1"), + (False, True, "small-fake-a==0.3b1"), + (True, True, "small-fake-a==0.3b1"), ], ) -def test_pre_option(runner, pre_option, expected_package): +def test_pre_option(runner, cli_option, infile_option, expected_package): """ Tests pip-compile respects --pre option. """ with open("requirements.in", "w") as req_in: + if infile_option: + req_in.write("--pre\n") req_in.write("small-fake-a\n") - out = runner.invoke(cli, ["-n", "-f", MINIMAL_WHEELS_PATH] + pre_option) + out = runner.invoke( + cli, ["-n", "-f", MINIMAL_WHEELS_PATH] + (["-p"] if cli_option else []) + ) assert out.exit_code == 0, out.output assert expected_package in out.output.splitlines(), out.output