• 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/bsp/util_rules/lifecycle.py
1
# Copyright 2022 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3
from __future__ import annotations
×
4

5
from typing import ClassVar
×
6

7
from pants.bsp.protocol import BSPHandlerMapping
×
8
from pants.bsp.spec.lifecycle import (
×
9
    BuildServerCapabilities,
10
    CompileProvider,
11
    DebugProvider,
12
    InitializeBuildParams,
13
    InitializeBuildResult,
14
    RunProvider,
15
    TestProvider,
16
)
17
from pants.engine.rules import collect_rules, rule
×
18
from pants.engine.unions import UnionMembership, UnionRule, union
×
19
from pants.version import VERSION
×
20

21
# Version of BSP supported by Pants.
22
BSP_VERSION = "2.0.0"
×
23

24

25
@union
×
26
class BSPLanguageSupport:
×
27
    """Union exposed by language backends to inform BSP core rules of capabilities to advertise to
28
    clients."""
29

30
    language_id: ClassVar[str]
×
31
    can_compile: bool = False
×
32
    can_test: bool = False
×
33
    can_run: bool = False
×
34
    can_debug: bool = False
×
35
    can_provide_resources: bool = False
×
36

37

38
# -----------------------------------------------------------------------------------------------
39
# Initialize Build Request
40
# See https://build-server-protocol.github.io/docs/specification.html#initialize-build-request
41
# -----------------------------------------------------------------------------------------------
42

43

44
class InitializeBuildHandlerMapping(BSPHandlerMapping):
×
45
    method_name = "build/initialize"
×
46
    request_type = InitializeBuildParams
×
47
    response_type = InitializeBuildResult
×
48

49

50
@rule
×
51
async def bsp_build_initialize(
×
52
    _request: InitializeBuildParams, union_membership: UnionMembership
53
) -> InitializeBuildResult:
54
    compile_provider_language_ids = []
×
55
    test_provider_language_ids = []
×
56
    run_provider_language_ids = []
×
57
    debug_provider_language_ids = []
×
58
    resources_provider = False
×
59
    language_support_impls = union_membership.get(BSPLanguageSupport)
×
60
    for lang in language_support_impls:
×
61
        if lang.can_compile:
×
62
            compile_provider_language_ids.append(lang.language_id)
×
63
        if lang.can_test:
×
64
            test_provider_language_ids.append(lang.language_id)
×
65
        if lang.can_run:
×
66
            run_provider_language_ids.append(lang.language_id)
×
67
        if lang.can_debug:
×
68
            debug_provider_language_ids.append(lang.language_id)
×
69
        if lang.can_provide_resources:
×
70
            resources_provider = True
×
71

72
    return InitializeBuildResult(
×
73
        display_name="Pants",
74
        version=VERSION,
75
        bsp_version=BSP_VERSION,  # TODO: replace with an actual BSP version
76
        capabilities=BuildServerCapabilities(
77
            compile_provider=CompileProvider(
78
                language_ids=tuple(sorted(compile_provider_language_ids))
79
            ),
80
            test_provider=TestProvider(language_ids=tuple(sorted(test_provider_language_ids))),
81
            run_provider=RunProvider(language_ids=tuple(sorted(run_provider_language_ids))),
82
            debug_provider=DebugProvider(language_ids=tuple(sorted(debug_provider_language_ids))),
83
            inverse_sources_provider=None,
84
            dependency_sources_provider=True,
85
            dependency_modules_provider=True,
86
            resources_provider=resources_provider,
87
            can_reload=None,
88
            build_target_changed_provider=None,
89
        ),
90
        data=None,
91
    )
92

93

94
def rules():
×
95
    return (
×
96
        *collect_rules(),
97
        UnionRule(BSPHandlerMapping, InitializeBuildHandlerMapping),
98
    )
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