Skip to content

Commit

Permalink
Fix pants_requirements target generator to use resolves (cherry-pic…
Browse files Browse the repository at this point in the history
…k of pantsbuild#14417) (pantsbuild#14423)

[ci skip-rust]
  • Loading branch information
Eric-Arellano committed Feb 10, 2022
1 parent ef78aa0 commit 7cfcc14
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Licensed under the Apache License, Version 2.0 (see LICENSE).

from pants.backend.python.target_types import (
PythonRequirementCompatibleResolvesField,
PythonRequirementModulesField,
PythonRequirementsField,
PythonRequirementTarget,
Expand Down Expand Up @@ -41,7 +42,11 @@ class PantsRequirementsTargetGenerator(Target):
"also invite you to share your ideas at "
"https://github.com/pantsbuild/pants/issues/new/choose)"
)
core_fields = (*COMMON_TARGET_FIELDS, PantsRequirementsTestutilField)
core_fields = (
*COMMON_TARGET_FIELDS,
PantsRequirementsTestutilField,
PythonRequirementCompatibleResolvesField,
)


class GenerateFromPantsRequirementsRequest(GenerateTargetsRequest):
Expand Down Expand Up @@ -83,6 +88,9 @@ def create_tgt(dist: str, module: str) -> PythonRequirementTarget:
{
PythonRequirementsField.alias: (f"{dist}{version}",),
PythonRequirementModulesField.alias: (module,),
PythonRequirementCompatibleResolvesField.alias: generator[
PythonRequirementCompatibleResolvesField
].value,
},
generator.address.create_generated(dist),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@
determine_version,
)
from pants.backend.python.pip_requirement import PipRequirement
from pants.backend.python.target_types import PythonRequirementModulesField, PythonRequirementsField
from pants.backend.python.target_types import (
PythonRequirementCompatibleResolvesField,
PythonRequirementModulesField,
PythonRequirementsField,
)
from pants.engine.addresses import Address
from pants.engine.target import GeneratedTargets
from pants.testutil.rule_runner import QueryRule, RuleRunner
Expand Down Expand Up @@ -43,7 +47,9 @@ def test_target_generator() -> None:
{
"BUILD": (
"pants_requirements(name='default')\n"
"pants_requirements(name='no_testutil', testutil=False)\n"
"pants_requirements(\n"
" name='no_testutil', testutil=False, compatible_resolves=['a']\n"
")"
)
}
)
Expand All @@ -65,10 +71,14 @@ def test_target_generator() -> None:
assert testutil_req[PythonRequirementsField].value == (
PipRequirement.parse(f"pantsbuild.pants.testutil{determine_version()}"),
)
for t in (pants_req, testutil_req):
assert not t[PythonRequirementCompatibleResolvesField].value

generator = rule_runner.get_target(Address("", target_name="no_testutil"))
result = rule_runner.request(
GeneratedTargets, [GenerateFromPantsRequirementsRequest(generator)]
)
assert len(result) == 1
assert next(iter(result.keys())).generated_name == "pantsbuild.pants"
pants_req = next(iter(result.values()))
assert pants_req[PythonRequirementCompatibleResolvesField].value == ("a",)

0 comments on commit 7cfcc14

Please sign in to comment.