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

pantsbuild / pants / 26342152999

23 May 2026 07:59PM UTC coverage: 91.165% (-1.6%) from 92.792%
26342152999

push

github

web-flow
Run Linux ARM CI on Depot runners (#23363)

RunsOn is deprecating their v2 stack, and rather than migrate
to v3 we should use the resources kindly donated by Depot.

GitHub also now has Linux ARM runners, should we need them.

87305 of 95766 relevant lines covered (91.16%)

3.87 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).
3
import logging
×
4
from dataclasses import dataclass
×
5

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

23
logger = logging.getLogger(__name__)
×
24

25

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

30
    source: JavaSourceField
31

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

36

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

42

43
@rule(desc="Format with Google Java Format", level=LogLevel.DEBUG)
×
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

96
def rules():
×
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

© 2026 Coveralls, Inc