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

pantsbuild / pants / 18252174847

05 Oct 2025 01:36AM UTC coverage: 43.382% (-36.9%) from 80.261%
18252174847

push

github

web-flow
run tests on mac arm (#22717)

Just doing the minimal to pull forward the x86_64 pattern.

ref #20993

25776 of 59416 relevant lines covered (43.38%)

1.3 hits per line

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

0.0
/src/python/pants/backend/java/bsp/rules.py
1
# Copyright 2022 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.bsp.spec import JavacOptionsItem, JavacOptionsParams, JavacOptionsResult
×
7
from pants.backend.java.target_types import JavaFieldSet, JavaSourceField
×
8
from pants.base.build_root import BuildRoot
×
9
from pants.bsp.protocol import BSPHandlerMapping
×
10
from pants.bsp.spec.base import BuildTargetIdentifier
×
11
from pants.bsp.util_rules.lifecycle import BSPLanguageSupport
×
12
from pants.bsp.util_rules.queries import compute_handler_query_rules
×
13
from pants.bsp.util_rules.targets import (
×
14
    BSPBuildTargetsMetadataRequest,
15
    BSPBuildTargetsMetadataResult,
16
    BSPCompileRequest,
17
    BSPCompileResult,
18
    BSPResourcesRequest,
19
    BSPResourcesResult,
20
)
21
from pants.engine.internals.selectors import concurrently
×
22
from pants.engine.rules import collect_rules, implicitly, rule
×
23
from pants.engine.target import FieldSet
×
24
from pants.engine.unions import UnionRule
×
25
from pants.jvm.bsp.compile import _jvm_bsp_compile, jvm_classes_directory
×
26
from pants.jvm.bsp.compile import rules as jvm_compile_rules
×
27
from pants.jvm.bsp.resources import _jvm_bsp_resources
×
28
from pants.jvm.bsp.resources import rules as jvm_resources_rules
×
29
from pants.jvm.compile import ClasspathEntryRequestFactory
×
30
from pants.jvm.target_types import JvmResolveField
×
31

32
LANGUAGE_ID = "java"
×
33

34
_logger = logging.getLogger(__name__)
×
35

36

37
class JavaBSPLanguageSupport(BSPLanguageSupport):
×
38
    language_id = LANGUAGE_ID
×
39
    can_compile = True
×
40
    can_provide_resources = True
×
41

42

43
@dataclass(frozen=True)
×
44
class JavaMetadataFieldSet(FieldSet):
×
45
    required_fields = (JavaSourceField, JvmResolveField)
×
46

47
    source: JavaSourceField
×
48
    resolve: JvmResolveField
×
49

50

51
class JavaBSPBuildTargetsMetadataRequest(BSPBuildTargetsMetadataRequest):
×
52
    language_id = LANGUAGE_ID
×
53
    can_merge_metadata_from = ()
×
54
    field_set_type = JavaMetadataFieldSet
×
55

56
    resolve_prefix = "jvm"
×
57
    resolve_field = JvmResolveField
×
58

59

60
@rule
×
61
async def bsp_resolve_java_metadata(
×
62
    _: JavaBSPBuildTargetsMetadataRequest,
63
) -> BSPBuildTargetsMetadataResult:
64
    return BSPBuildTargetsMetadataResult()
×
65

66

67
# -----------------------------------------------------------------------------------------------
68
# Javac Options Request
69
# See https://build-server-protocol.github.io/docs/extensions/java.html#javac-options-request
70
# -----------------------------------------------------------------------------------------------
71

72

73
class JavacOptionsHandlerMapping(BSPHandlerMapping):
×
74
    method_name = "buildTarget/javacOptions"
×
75
    request_type = JavacOptionsParams
×
76
    response_type = JavacOptionsResult
×
77

78

79
@dataclass(frozen=True)
×
80
class HandleJavacOptionsRequest:
×
81
    bsp_target_id: BuildTargetIdentifier
×
82

83

84
@dataclass(frozen=True)
×
85
class HandleJavacOptionsResult:
×
86
    item: JavacOptionsItem
×
87

88

89
@rule
×
90
async def handle_bsp_java_options_request(
×
91
    request: HandleJavacOptionsRequest,
92
    build_root: BuildRoot,
93
) -> HandleJavacOptionsResult:
94
    return HandleJavacOptionsResult(
×
95
        JavacOptionsItem(
96
            target=request.bsp_target_id,
97
            options=(),
98
            classpath=(),
99
            # TODO: Why is this hardcoded and not under pants_workdir?
100
            class_directory=build_root.pathlib_path.joinpath(
101
                ".pants.d", "bsp", jvm_classes_directory(request.bsp_target_id)
102
            ).as_uri(),
103
        )
104
    )
105

106

107
@rule
×
108
async def bsp_javac_options_request(request: JavacOptionsParams) -> JavacOptionsResult:
×
109
    results = await concurrently(
×
110
        handle_bsp_java_options_request(HandleJavacOptionsRequest(btgt), **implicitly())
111
        for btgt in request.targets
112
    )
113
    return JavacOptionsResult(items=tuple(result.item for result in results))
×
114

115

116
# -----------------------------------------------------------------------------------------------
117
# Compile Request
118
# -----------------------------------------------------------------------------------------------
119

120

121
@dataclass(frozen=True)
×
122
class JavaBSPCompileRequest(BSPCompileRequest):
×
123
    field_set_type = JavaFieldSet
×
124

125

126
@rule
×
127
async def bsp_java_compile_request(
×
128
    request: JavaBSPCompileRequest, classpath_entry_request: ClasspathEntryRequestFactory
129
) -> BSPCompileResult:
130
    result: BSPCompileResult = await _jvm_bsp_compile(request, classpath_entry_request)
×
131
    return result
×
132

133

134
# -----------------------------------------------------------------------------------------------
135
# Resources Request
136
# -----------------------------------------------------------------------------------------------
137

138

139
@dataclass(frozen=True)
×
140
class JavaBSPResourcesRequest(BSPResourcesRequest):
×
141
    field_set_type = JavaFieldSet
×
142

143

144
@rule
×
145
async def bsp_java_resources_request(
×
146
    request: JavaBSPResourcesRequest,
147
    build_root: BuildRoot,
148
) -> BSPResourcesResult:
149
    result: BSPResourcesResult = await _jvm_bsp_resources(request, build_root)
×
150
    return result
×
151

152

153
def rules():
×
154
    base_rules = (
×
155
        *collect_rules(),
156
        *jvm_compile_rules(),
157
        *jvm_resources_rules(),
158
        UnionRule(BSPLanguageSupport, JavaBSPLanguageSupport),
159
        UnionRule(BSPBuildTargetsMetadataRequest, JavaBSPBuildTargetsMetadataRequest),
160
        UnionRule(BSPHandlerMapping, JavacOptionsHandlerMapping),
161
        UnionRule(BSPCompileRequest, JavaBSPCompileRequest),
162
        UnionRule(BSPResourcesRequest, JavaBSPResourcesRequest),
163
    )
164
    return (*base_rules, *compute_handler_query_rules(base_rules))
×
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