From 5ae0ffc3420e30a40f9d6c162838ea0a9c36f757 Mon Sep 17 00:00:00 2001 From: Tom Dyas Date: Sun, 15 May 2022 21:47:00 -0400 Subject: [PATCH 1/2] don't generate default tool lockfiles [ci skip-rust] # Building wheels and fs_util will be skipped. Delete if not intended. [ci skip-build-wheels] --- src/python/pants/jvm/resolve/jvm_tool.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/python/pants/jvm/resolve/jvm_tool.py b/src/python/pants/jvm/resolve/jvm_tool.py index 8603e142af0..9e919d9b997 100644 --- a/src/python/pants/jvm/resolve/jvm_tool.py +++ b/src/python/pants/jvm/resolve/jvm_tool.py @@ -187,7 +187,9 @@ async def setup_lockfile_request_from_tool( return GenerateJvmLockfile( artifacts=artifacts, resolve_name=request.resolve_name, - lockfile_dest=request.write_lockfile_dest, + lockfile_dest=request.write_lockfile_dest + if request.read_lockfile_dest != DEFAULT_TOOL_LOCKFILE + else DEFAULT_TOOL_LOCKFILE, ) From cd8be507affe58ac6885b7e439ef3ae408f51c2c Mon Sep 17 00:00:00 2001 From: Tom Dyas Date: Mon, 16 May 2022 18:35:15 -0400 Subject: [PATCH 2/2] add test [ci skip-rust] [ci skip-build-wheels] --- src/python/pants/jvm/resolve/jvm_tool_test.py | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/python/pants/jvm/resolve/jvm_tool_test.py b/src/python/pants/jvm/resolve/jvm_tool_test.py index 4f4b31ef3de..acb090d2cbc 100644 --- a/src/python/pants/jvm/resolve/jvm_tool_test.py +++ b/src/python/pants/jvm/resolve/jvm_tool_test.py @@ -5,7 +5,7 @@ import textwrap -from pants.core.goals.generate_lockfiles import GenerateToolLockfileSentinel +from pants.core.goals.generate_lockfiles import DEFAULT_TOOL_LOCKFILE, GenerateToolLockfileSentinel from pants.core.util_rules import config_files, source_files from pants.core.util_rules.external_tool import rules as external_tool_rules from pants.engine.fs import Digest, DigestContents @@ -20,6 +20,7 @@ from pants.jvm.target_types import JvmArtifactTarget from pants.jvm.util_rules import rules as util_rules from pants.testutil.rule_runner import PYTHON_BOOTSTRAP_ENV, QueryRule, RuleRunner +from pants.util.ordered_set import FrozenOrderedSet class MockJvmTool(JvmToolBase): @@ -36,6 +37,10 @@ class MockJvmToolLockfileSentinel(GenerateToolLockfileSentinel): resolve_name = MockJvmTool.options_scope +class MockInternalToolLockfileSentinel(GenerateToolLockfileSentinel): + resolve_name = "mock-internal-tool" + + @rule def generate_test_tool_lockfile_request( _: MockJvmToolLockfileSentinel, tool: MockJvmTool @@ -43,6 +48,25 @@ def generate_test_tool_lockfile_request( return GenerateJvmLockfileFromTool.create(tool) +@rule +def generate_internal_test_tool_lockfile_request( + _: MockInternalToolLockfileSentinel, +) -> GenerateJvmLockfileFromTool: + return GenerateJvmLockfileFromTool( + artifact_inputs=FrozenOrderedSet( + { + "com.google.code.gson:gson:2.9.0", + } + ), + artifact_option_name="n/a", + lockfile_option_name="n/a", + resolve_name=MockInternalToolLockfileSentinel.resolve_name, + read_lockfile_dest=DEFAULT_TOOL_LOCKFILE, + write_lockfile_dest="mock-write-lockfile.lock", + default_lockfile_resource=("pants.backend.jvm.resolve", "mock-internal-tool.lock"), + ) + + def test_jvm_tool_base_extracts_correct_coordinates() -> None: rule_runner = RuleRunner( rules=[ @@ -55,8 +79,10 @@ def test_jvm_tool_base_extracts_correct_coordinates() -> None: *jvm_tool.rules(), *lockfile_rules(), generate_test_tool_lockfile_request, + generate_internal_test_tool_lockfile_request, SubsystemRule(MockJvmTool), QueryRule(GenerateJvmLockfile, (MockJvmToolLockfileSentinel,)), + QueryRule(GenerateJvmLockfile, (MockInternalToolLockfileSentinel,)), QueryRule(DigestContents, (Digest,)), ], target_types=[JvmArtifactTarget], @@ -89,3 +115,9 @@ def test_jvm_tool_base_extracts_correct_coordinates() -> None: Coordinate(group="junit", artifact="junit", version="4.13.2"), Coordinate(group="org.hamcrest", artifact="hamcrest-core", version="1.3"), ] + + # Ensure that an internal-only tool will not have a lockfile generated. + default_lockfile_result = rule_runner.request( + GenerateJvmLockfile, [MockInternalToolLockfileSentinel()] + ) + assert default_lockfile_result.lockfile_dest == DEFAULT_TOOL_LOCKFILE