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

pantsbuild / pants / 22285099215

22 Feb 2026 08:52PM UTC coverage: 75.854% (-17.1%) from 92.936%
22285099215

Pull #23121

github

web-flow
Merge c7299df9c into ba8359840
Pull Request #23121: fix issue with optional fields in dependency validator

28 of 29 new or added lines in 2 files covered. (96.55%)

11174 existing lines in 400 files now uncovered.

53694 of 70786 relevant lines covered (75.85%)

1.88 hits per line

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

57.14
/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
1✔
4

5
from typing import ClassVar
1✔
6

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

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

24

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

30
    language_id: ClassVar[str]
1✔
31
    can_compile: bool = False
1✔
32
    can_test: bool = False
1✔
33
    can_run: bool = False
1✔
34
    can_debug: bool = False
1✔
35
    can_provide_resources: bool = False
1✔
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):
1✔
45
    method_name = "build/initialize"
1✔
46
    request_type = InitializeBuildParams
1✔
47
    response_type = InitializeBuildResult
1✔
48

49

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

UNCOV
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():
1✔
95
    return (
1✔
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

© 2026 Coveralls, Inc