Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 213 additions & 7 deletions tests/integration/test_issue_3003.py
Original file line number Diff line number Diff line change
Expand Up @@ -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_CONVENTIONS_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):
Expand All @@ -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_CONVENTIONS_BETA
)
)
)
touch(os.path.join(project_dir, "src", "project", "__init__.py"))
Expand Down Expand Up @@ -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=[
Expand Down Expand Up @@ -146,11 +156,207 @@ def test_edge_case_semver_version_satisfied(
"latest-compatible",
"--venv-repository",
project_venv.venv_dir,
"opentelemetry-semantic-conventions==0.59b0",
OPEN_TELEMETRY_SEMANTIC_CONVENTIONS_BETA,
"-o",
pex,
"--no-compress",
],
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_CONVENTIONS_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_CONVENTIONS_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_CONVENTIONS_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_CONVENTIONS_BETA,
"-o",
pex,
"--no-compress",
],
python=py310.binary,
).assert_success()
assert_opentelemetry_semconv(python=py310, pex_root=pex_root, pex=pex)