• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants / 19015773527

02 Nov 2025 05:33PM UTC coverage: 17.872% (-62.4%) from 80.3%
19015773527

Pull #22816

github

web-flow
Merge a12d75757 into 6c024e162
Pull Request #22816: Update Pants internal Python to 3.14

4 of 5 new or added lines in 3 files covered. (80.0%)

28452 existing lines in 683 files now uncovered.

9831 of 55007 relevant lines covered (17.87%)

0.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/python/pants/backend/java/lint/google_java_format/rules.py
1
# Copyright 2021 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
UNCOV
3
import logging
×
UNCOV
4
from dataclasses import dataclass
×
5

UNCOV
6
from pants.backend.java.lint.google_java_format.skip_field import SkipGoogleJavaFormatField
×
UNCOV
7
from pants.backend.java.lint.google_java_format.subsystem import GoogleJavaFormatSubsystem
×
UNCOV
8
from pants.backend.java.target_types import JavaSourceField
×
UNCOV
9
from pants.core.goals.fmt import FmtResult, FmtTargetsRequest
×
UNCOV
10
from pants.core.goals.resolves import ExportableTool
×
UNCOV
11
from pants.core.util_rules.partitions import PartitionerType
×
UNCOV
12
from pants.engine.process import execute_process_or_raise
×
UNCOV
13
from pants.engine.rules import collect_rules, implicitly, rule
×
UNCOV
14
from pants.engine.target import FieldSet, Target
×
UNCOV
15
from pants.engine.unions import UnionRule
×
UNCOV
16
from pants.jvm.jdk_rules import InternalJdk, JvmProcess
×
UNCOV
17
from pants.jvm.resolve import jvm_tool
×
UNCOV
18
from pants.jvm.resolve.coursier_fetch import ToolClasspathRequest, materialize_classpath_for_tool
×
UNCOV
19
from pants.jvm.resolve.jvm_tool import GenerateJvmLockfileFromTool
×
UNCOV
20
from pants.util.logging import LogLevel
×
UNCOV
21
from pants.util.strutil import pluralize
×
22

UNCOV
23
logger = logging.getLogger(__name__)
×
24

25

UNCOV
26
@dataclass(frozen=True)
×
UNCOV
27
class GoogleJavaFormatFieldSet(FieldSet):
×
UNCOV
28
    required_fields = (JavaSourceField,)
×
29

30
    source: JavaSourceField
31

UNCOV
32
    @classmethod
×
UNCOV
33
    def opt_out(cls, tgt: Target) -> bool:
×
34
        return tgt.get(SkipGoogleJavaFormatField).value
×
35

36

UNCOV
37
class GoogleJavaFormatRequest(FmtTargetsRequest):
×
UNCOV
38
    field_set_type = GoogleJavaFormatFieldSet
×
UNCOV
39
    tool_subsystem = GoogleJavaFormatSubsystem  # type: ignore[assignment]
×
UNCOV
40
    partitioner_type = PartitionerType.DEFAULT_SINGLE_PARTITION
×
41

42

UNCOV
43
@rule(desc="Format with Google Java Format", level=LogLevel.DEBUG)
×
UNCOV
44
async def google_java_format_fmt(
×
45
    request: GoogleJavaFormatRequest.Batch,
46
    tool: GoogleJavaFormatSubsystem,
47
    jdk: InternalJdk,
48
) -> FmtResult:
49
    lockfile_request = GenerateJvmLockfileFromTool.create(tool)
×
50
    tool_classpath = await materialize_classpath_for_tool(
×
51
        ToolClasspathRequest(lockfile=lockfile_request)
52
    )
53

54
    toolcp_relpath = "__toolcp"
×
55
    extra_immutable_input_digests = {
×
56
        toolcp_relpath: tool_classpath.digest,
57
    }
58

59
    maybe_java11_or_higher_options = []
×
60
    if jdk.jre_major_version >= 11:
×
61
        maybe_java11_or_higher_options = [
×
62
            "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
63
            "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
64
            "--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
65
            "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
66
            "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
67
        ]
68

69
    args = [
×
70
        *maybe_java11_or_higher_options,
71
        "com.google.googlejavaformat.java.Main",
72
        *(["--aosp"] if tool.aosp else []),
73
        "--replace",
74
        *request.files,
75
    ]
76

77
    result = await execute_process_or_raise(
×
78
        **implicitly(
79
            JvmProcess(
80
                jdk=jdk,
81
                argv=args,
82
                classpath_entries=tool_classpath.classpath_entries(toolcp_relpath),
83
                input_digest=request.snapshot.digest,
84
                extra_jvm_options=tool.jvm_options,
85
                extra_immutable_input_digests=extra_immutable_input_digests,
86
                extra_nailgun_keys=extra_immutable_input_digests,
87
                output_files=request.files,
88
                description=f"Run Google Java Format on {pluralize(len(request.files), 'file')}.",
89
                level=LogLevel.DEBUG,
90
            ),
91
        )
92
    )
93
    return await FmtResult.create(request, result)
×
94

95

UNCOV
96
def rules():
×
UNCOV
97
    return [
×
98
        *collect_rules(),
99
        *jvm_tool.rules(),
100
        *GoogleJavaFormatRequest.rules(),
101
        UnionRule(ExportableTool, GoogleJavaFormatSubsystem),
102
    ]
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc