|
33 | 33 | PexResolveInfo,
|
34 | 34 | VenvPex,
|
35 | 35 | VenvPexProcess,
|
| 36 | + _build_pex_description, |
36 | 37 | resolve_requirements_constraints_file,
|
37 | 38 | )
|
38 | 39 | from pants.backend.python.util_rules.pex import rules as pex_rules
|
@@ -681,3 +682,49 @@ def test_venv_pex_resolve_info(rule_runner: RuleRunner, pex_type: type[Pex | Ven
|
681 | 682 | assert dists[3].version == Version("2.23.0")
|
682 | 683 | assert Requirement.parse('PySocks!=1.5.7,>=1.5.6; extra == "socks"') in dists[3].requires_dists
|
683 | 684 | assert dists[4].project_name == "urllib3"
|
| 685 | + |
| 686 | + |
| 687 | +def test_build_pex_description() -> None: |
| 688 | + def assert_description( |
| 689 | + requirements: PexRequirements, |
| 690 | + *, |
| 691 | + use_repo_pex: bool = False, |
| 692 | + description: str | None = None, |
| 693 | + expected: str, |
| 694 | + ) -> None: |
| 695 | + repo_pex = Pex(EMPTY_DIGEST, "repo.pex", None) if use_repo_pex else None |
| 696 | + request = PexRequest( |
| 697 | + output_filename="new.pex", |
| 698 | + internal_only=True, |
| 699 | + requirements=requirements, |
| 700 | + description=description, |
| 701 | + repository_pex=repo_pex, |
| 702 | + ) |
| 703 | + assert _build_pex_description(request) == expected |
| 704 | + |
| 705 | + assert_description(PexRequirements(), description="Custom!", expected="Custom!") |
| 706 | + assert_description( |
| 707 | + PexRequirements(), description="Custom!", use_repo_pex=True, expected="Custom!" |
| 708 | + ) |
| 709 | + |
| 710 | + assert_description(PexRequirements(), expected="Building new.pex") |
| 711 | + assert_description(PexRequirements(), use_repo_pex=True, expected="Building new.pex") |
| 712 | + |
| 713 | + assert_description( |
| 714 | + PexRequirements(["req"]), expected="Building new.pex with 1 requirement: req" |
| 715 | + ) |
| 716 | + assert_description( |
| 717 | + PexRequirements(["req"]), |
| 718 | + use_repo_pex=True, |
| 719 | + expected="Extracting 1 requirement to build new.pex from repo.pex: req", |
| 720 | + ) |
| 721 | + |
| 722 | + assert_description( |
| 723 | + PexRequirements(["req1", "req2"]), |
| 724 | + expected="Building new.pex with 2 requirements: req1, req2", |
| 725 | + ) |
| 726 | + assert_description( |
| 727 | + PexRequirements(["req1", "req2"]), |
| 728 | + use_repo_pex=True, |
| 729 | + expected="Extracting 2 requirements to build new.pex from repo.pex: req1, req2", |
| 730 | + ) |
0 commit comments