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

pantsbuild / pants / 18822648545

26 Oct 2025 07:24PM UTC coverage: 79.831% (-0.4%) from 80.28%
18822648545

Pull #22809

github

web-flow
Merge 9401c4830 into 170094e99
Pull Request #22809: golang: fix Go SDK version check for coverage experiment

0 of 1 new or added line in 1 file covered. (0.0%)

439 existing lines in 25 files now uncovered.

77436 of 97000 relevant lines covered (79.83%)

3.35 hits per line

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

87.5
/src/python/pants/backend/go/util_rules/go_mod_test.py
1
# Copyright 2021 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

4
from __future__ import annotations
1✔
5

6
from textwrap import dedent
1✔
7

8
import pytest
1✔
9

10
from pants.backend.go.target_types import GoModTarget, GoPackageTarget
1✔
11
from pants.backend.go.util_rules import go_mod, sdk
1✔
12
from pants.backend.go.util_rules.go_mod import (
1✔
13
    GoModInfo,
14
    GoModInfoRequest,
15
    OwningGoMod,
16
    OwningGoModRequest,
17
)
18
from pants.build_graph.address import Address
1✔
19
from pants.engine.rules import QueryRule
1✔
20
from pants.testutil.rule_runner import RuleRunner
1✔
21

22

23
@pytest.fixture
1✔
24
def rule_runner() -> RuleRunner:
1✔
25
    rule_runner = RuleRunner(
1✔
26
        rules=[
27
            *sdk.rules(),
28
            *go_mod.rules(),
29
            QueryRule(OwningGoMod, [OwningGoModRequest]),
30
            QueryRule(GoModInfo, [GoModInfoRequest]),
31
        ],
32
        target_types=[GoModTarget, GoPackageTarget],
33
    )
34
    rule_runner.set_options([], env_inherit={"PATH"})
1✔
35
    return rule_runner
1✔
36

37

38
def test_owning_go_mod(rule_runner: RuleRunner) -> None:
1✔
39
    rule_runner.write_files(
1✔
40
        {
41
            "go.mod": "",
42
            "f.go": "",
43
            "BUILD": "go_mod(name='mod')\ngo_package(name='pkg')",
44
            "dir/f.go": "",
45
            "dir/BUILD": "go_package()",
46
            "dir/subdir/go.mod": "",
47
            "dir/subdir/BUILD": "go_mod(name='mod')\ngo_package()",
48
            "dir/subdir/f.go": "",
49
            "dir/subdir/another/f.go": "",
50
            "dir/subdir/another/BUILD": "go_package()",
51
        }
52
    )
53

54
    def assert_owner(pkg: Address, mod: Address) -> None:
1✔
55
        owner = rule_runner.request(OwningGoMod, [OwningGoModRequest(pkg)])
1✔
56
        assert owner.address == mod
1✔
57

58
    assert_owner(Address("", target_name="pkg"), Address("", target_name="mod"))
1✔
59
    assert_owner(Address("dir"), Address("", target_name="mod"))
1✔
60
    assert_owner(Address("dir/subdir"), Address("dir/subdir", target_name="mod"))
1✔
61
    assert_owner(Address("dir/subdir/another"), Address("dir/subdir", target_name="mod"))
1✔
62

63

64
def test_go_mod_info(rule_runner: RuleRunner) -> None:
1✔
65
    go_mod_content = dedent(
1✔
66
        """\
67
        module go.example.com/foo
68
        go 1.17
69
        require github.com/golang/protobuf v1.4.2
70
        """
71
    )
72
    go_sum_content = "does not matter"
1✔
73
    rule_runner.write_files(
1✔
74
        {"foo/go.mod": go_mod_content, "foo/go.sum": go_sum_content, "foo/BUILD": "go_mod()"}
75
    )
76
    go_mod_info = rule_runner.request(GoModInfo, [GoModInfoRequest(Address("foo"))])
1✔
UNCOV
77
    assert go_mod_info.import_path == "go.example.com/foo"
×
UNCOV
78
    assert (
×
79
        go_mod_info.digest
80
        == rule_runner.make_snapshot(
81
            {"foo/go.mod": go_mod_content, "foo/go.sum": go_sum_content}
82
        ).digest
83
    )
UNCOV
84
    assert go_mod_info.mod_path == "foo/go.mod"
×
UNCOV
85
    assert go_mod_info.minimum_go_version == "1.17"
×
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