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

pantsbuild / pants / 21803785359

08 Feb 2026 07:13PM UTC coverage: 43.3% (-37.0%) from 80.277%
21803785359

Pull #23085

github

web-flow
Merge 7c1cd926d into 40389cc58
Pull Request #23085: A helper method for indexing paths by source root

2 of 6 new or added lines in 1 file covered. (33.33%)

17114 existing lines in 539 files now uncovered.

26075 of 60219 relevant lines covered (43.3%)

0.43 hits per line

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

87.5
/src/python/pants/backend/helm/goals/package_test.py
1
# Copyright 2022 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
import os
1✔
7

8
import pytest
1✔
9

10
from pants.backend.helm.goals import package
1✔
11
from pants.backend.helm.goals.package import BuiltHelmArtifact, HelmPackageFieldSet
1✔
12
from pants.backend.helm.subsystems.helm import HelmSubsystem
1✔
13
from pants.backend.helm.target_types import HelmChartTarget
1✔
14
from pants.backend.helm.target_types import rules as target_types_rules
1✔
15
from pants.backend.helm.testutil import (
1✔
16
    HELM_TEMPLATE_HELPERS_FILE,
17
    HELM_VALUES_FILE,
18
    K8S_SERVICE_TEMPLATE,
19
    gen_chart_file,
20
)
21
from pants.backend.helm.util_rules import chart, sources, tool
1✔
22
from pants.build_graph.address import Address
1✔
23
from pants.core.goals.package import BuiltPackage
1✔
24
from pants.core.util_rules import config_files, external_tool, source_files
1✔
25
from pants.engine.rules import QueryRule
1✔
26
from pants.source.source_root import rules as source_root_rules
1✔
27
from pants.testutil.rule_runner import RuleRunner
1✔
28

29

30
@pytest.fixture
1✔
31
def rule_runner() -> RuleRunner:
1✔
32
    return RuleRunner(
1✔
33
        target_types=[HelmChartTarget],
34
        rules=[
35
            *config_files.rules(),
36
            *external_tool.rules(),
37
            *tool.rules(),
38
            *chart.rules(),
39
            *package.rules(),
40
            *source_files.rules(),
41
            *source_root_rules(),
42
            *sources.rules(),
43
            *target_types_rules(),
44
            *HelmSubsystem.rules(),
45
            QueryRule(BuiltPackage, [HelmPackageFieldSet]),
46
        ],
47
    )
48

49

50
def _assert_build_package(rule_runner: RuleRunner, *, chart_name: str, chart_version: str) -> None:
1✔
51
    target = rule_runner.get_target(Address(f"src/{chart_name}", target_name=chart_name))
1✔
52
    field_set = HelmPackageFieldSet.create(target)
1✔
53

54
    dest_dir = field_set.output_path.value_or_default(file_ending=None)
1✔
55
    result = rule_runner.request(BuiltPackage, [field_set])
1✔
56

57
    assert len(result.artifacts) == 1
1✔
58
    assert isinstance(result.artifacts[0], BuiltHelmArtifact)
1✔
59
    assert result.artifacts[0].relpath == os.path.join(
1✔
60
        dest_dir, f"{chart_name}-{chart_version}.tgz"
61
    )
62
    assert result.artifacts[0].info
1✔
63

64

65
@pytest.mark.platform_specific_behavior
1✔
66
def test_helm_package(rule_runner: RuleRunner) -> None:
1✔
67
    chart_name = "foo"
1✔
68
    chart_version = "0.1.0"
1✔
69

70
    rule_runner.write_files(
1✔
71
        {
72
            f"src/{chart_name}/BUILD": f"helm_chart(name='{chart_name}')",
73
            f"src/{chart_name}/Chart.yaml": gen_chart_file(chart_name, version=chart_version),
74
            f"src/{chart_name}/values.yaml": HELM_VALUES_FILE,
75
            f"src/{chart_name}/templates/_helpers.tpl": HELM_TEMPLATE_HELPERS_FILE,
76
            f"src/{chart_name}/templates/service.yaml": K8S_SERVICE_TEMPLATE,
77
        }
78
    )
79

80
    _assert_build_package(rule_runner, chart_name=chart_name, chart_version=chart_version)
1✔
81

82

83
def test_helm_package_with_custom_output_path(rule_runner: RuleRunner) -> None:
1✔
UNCOV
84
    chart_name = "bar"
×
UNCOV
85
    chart_version = "0.2.0"
×
86

UNCOV
87
    output_path = "charts"
×
88

UNCOV
89
    rule_runner.write_files(
×
90
        {
91
            f"src/{chart_name}/BUILD": f"""helm_chart(name="{chart_name}", output_path="{output_path}")""",
92
            f"src/{chart_name}/Chart.yaml": gen_chart_file(chart_name, version=chart_version),
93
            f"src/{chart_name}/values.yaml": HELM_VALUES_FILE,
94
            f"src/{chart_name}/templates/_helpers.tpl": HELM_TEMPLATE_HELPERS_FILE,
95
            f"src/{chart_name}/templates/service.yaml": K8S_SERVICE_TEMPLATE,
96
        }
97
    )
98

UNCOV
99
    _assert_build_package(rule_runner, chart_name=chart_name, chart_version=chart_version)
×
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