From 8925b9b0d2a99c061de907729b76647b3e795131 Mon Sep 17 00:00:00 2001 From: John Sirois Date: Thu, 1 Jan 2026 19:52:48 -0800 Subject: [PATCH 1/2] Test all resolvers support auto `--pre`. Closes #3005 --- tests/integration/test_issue_3003.py | 220 ++++++++++++++++++++++++++- 1 file changed, 213 insertions(+), 7 deletions(-) diff --git a/tests/integration/test_issue_3003.py b/tests/integration/test_issue_3003.py index 7c64ad7cc..d7585612b 100644 --- a/tests/integration/test_issue_3003.py +++ b/tests/integration/test_issue_3003.py @@ -14,9 +14,18 @@ from pex.compatibility import commonpath from pex.interpreter import PythonInterpreter from pex.venv.virtualenv import Virtualenv -from testing import run_pex_command +from testing import make_env, run_pex_command +from testing.cli import run_pex3 from testing.pytest_utils.tmp import Tempdir +OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA = "opentelemetry-semantic-conventions==0.59b0" + + +@pytest.fixture +def pex_root(tmpdir): + # type: (Tempdir) -> str + return tmpdir.join("pex-root") + @pytest.fixture def project_dir(tmpdir): @@ -37,9 +46,11 @@ def project_dir(tmpdir): description = "Repro of issue 3003" requires-python = "==3.10.*" dependencies = [ - "opentelemetry-semantic-conventions==0.59b0", + "{opentelemetry_requirement}", ] - """ + """.format( + opentelemetry_requirement=OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA + ) ) ) touch(os.path.join(project_dir, "src", "project", "__init__.py")) @@ -77,15 +88,14 @@ def assert_opentelemetry_semconv( assert pex_root == commonpath((pex_root, output)) -def test_edge_case_semver_version_satisfied( +def test_edge_case_semver_version_satisfied_venv_repository( tmpdir, # type: Tempdir - project_dir, # type: str + pex_root, # type: str project_venv, # type: Virtualenv py310, # type: PythonInterpreter ): # type: (...) -> None - pex_root = tmpdir.join("pex-root") pex = tmpdir.join("project.pex") run_pex_command( args=[ @@ -146,7 +156,7 @@ def test_edge_case_semver_version_satisfied( "latest-compatible", "--venv-repository", project_venv.venv_dir, - "opentelemetry-semantic-conventions==0.59b0", + OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, "-o", pex, "--no-compress", @@ -154,3 +164,199 @@ def test_edge_case_semver_version_satisfied( python=project_venv.interpreter.binary, ).assert_success() assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex) + + +@pytest.fixture +def pex_lock( + project_dir, # type: str + pex_root, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> str + + lock = os.path.join(project_dir, "lock.json") + run_pex3( + "lock", + "create", + "--pex-root", + pex_root, + project_dir, + "--indent", + "2", + "-o", + lock, + python=py310.binary, + ).assert_success() + return lock + + +@pytest.fixture +def pylock_toml( + project_dir, # type: str + pex_root, # type: str + pex_lock, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> str + + pylock_toml = os.path.join(project_dir, "pylock.toml") + run_pex3( + "lock", + "export", + "--pex-root", + pex_root, + "--format", + "pep-751", + "-o", + pylock_toml, + pex_lock, + python=py310.binary, + ).assert_success() + return pylock_toml + + +def test_edge_case_semver_version_satisfied_locks( + tmpdir, # type: Tempdir + pex_root, # type: str + pex_lock, # type: str + pylock_toml, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> None + + pex = tmpdir.join("project.pex") + run_pex_command( + args=[ + "--pex-root", + pex_root, + "--runtime-pex-root", + pex_root, + "--pylock", + pylock_toml, + OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + "-o", + pex, + "--no-compress", + ], + python=py310.binary, + ).assert_success() + assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex) + + run_pex_command( + args=[ + "--pex-root", + pex_root, + "--runtime-pex-root", + pex_root, + "--lock", + pex_lock, + OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + "-o", + pex, + "--no-compress", + ], + python=py310.binary, + ).assert_success() + assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex) + + +@pytest.fixture +def repository_pex( + tmpdir, # type: Tempdir + pex_root, # type: str + project_dir, # type: str + py310, # type: PythonInterpreter +): + repository_pex = tmpdir.join("repository.pex") + run_pex_command( + args=[ + "--pex-root", + pex_root, + "--runtime-pex-root", + pex_root, + "--include-tools", + project_dir, + "-o", + repository_pex, + ], + python=py310.binary, + ).assert_success() + return repository_pex + + +@pytest.fixture +def pre_resolved_dists( + tmpdir, # type: Tempdir + pex_root, # type: str + repository_pex, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> str + + pre_resolved_dists = tmpdir.join("pre-resolved-dists") + subprocess.check_call( + args=[ + py310.binary, + repository_pex, + "repository", + "extract", + "--dest-dir", + pre_resolved_dists, + ], + env=make_env(PEX_TOOLS=1), + ) + return pre_resolved_dists + + +def test_edge_case_semver_version_satisfied_pex_repository( + tmpdir, # type: Tempdir + pex_root, # type: str + repository_pex, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> None + + pex = tmpdir.join("project.pex") + run_pex_command( + args=[ + "--pex-root", + pex_root, + "--runtime-pex-root", + pex_root, + "--pex-repository", + repository_pex, + OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + "-o", + pex, + "--no-compress", + ], + python=py310.binary, + ).assert_success() + assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex) + + +def test_edge_case_semver_version_satisfied_pre_resolved_dists( + tmpdir, # type: Tempdir + pex_root, # type: str + pre_resolved_dists, # type: str + py310, # type: PythonInterpreter +): + # type: (...) -> None + + pex = tmpdir.join("project.pex") + run_pex_command( + args=[ + "--pex-root", + pex_root, + "--runtime-pex-root", + pex_root, + "--pre-resolved-dists", + pre_resolved_dists, + OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + "-o", + pex, + "--no-compress", + ], + python=py310.binary, + ).assert_success() + assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex) From 9b374c3c4dbc77062585d274c0d00384f578506f Mon Sep 17 00:00:00 2001 From: John Sirois Date: Thu, 1 Jan 2026 19:57:59 -0800 Subject: [PATCH 2/2] Fix typo. --- tests/integration/test_issue_3003.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/integration/test_issue_3003.py b/tests/integration/test_issue_3003.py index d7585612b..53df5b9ab 100644 --- a/tests/integration/test_issue_3003.py +++ b/tests/integration/test_issue_3003.py @@ -18,7 +18,7 @@ from testing.cli import run_pex3 from testing.pytest_utils.tmp import Tempdir -OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA = "opentelemetry-semantic-conventions==0.59b0" +OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA = "opentelemetry-semantic-conventions==0.59b0" @pytest.fixture @@ -49,7 +49,7 @@ def project_dir(tmpdir): "{opentelemetry_requirement}", ] """.format( - opentelemetry_requirement=OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA + opentelemetry_requirement=OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA ) ) ) @@ -156,7 +156,7 @@ def test_edge_case_semver_version_satisfied_venv_repository( "latest-compatible", "--venv-repository", project_venv.venv_dir, - OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA, "-o", pex, "--no-compress", @@ -233,7 +233,7 @@ def test_edge_case_semver_version_satisfied_locks( pex_root, "--pylock", pylock_toml, - OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA, "-o", pex, "--no-compress", @@ -250,7 +250,7 @@ def test_edge_case_semver_version_satisfied_locks( pex_root, "--lock", pex_lock, - OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA, "-o", pex, "--no-compress", @@ -325,7 +325,7 @@ def test_edge_case_semver_version_satisfied_pex_repository( pex_root, "--pex-repository", repository_pex, - OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA, "-o", pex, "--no-compress", @@ -352,7 +352,7 @@ def test_edge_case_semver_version_satisfied_pre_resolved_dists( pex_root, "--pre-resolved-dists", pre_resolved_dists, - OPEN_TELEMETRY_SEMANTIC_CONVERSIONS_BETA, + OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA, "-o", pex, "--no-compress",