• 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

77.78
/src/python/pants/backend/helm/goals/package.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
3✔
5

6
import logging
3✔
7
import os
3✔
8
from dataclasses import dataclass
3✔
9

10
from pants.backend.helm.target_types import HelmChartFieldSet, HelmChartOutputPathField
3✔
11
from pants.backend.helm.util_rules.chart import HelmChartRequest, get_helm_chart
3✔
12
from pants.backend.helm.util_rules.chart_metadata import HelmChartMetadata
3✔
13
from pants.backend.helm.util_rules.tool import HelmProcess
3✔
14
from pants.core.goals.package import BuiltPackage, BuiltPackageArtifact, PackageFieldSet
3✔
15
from pants.engine.fs import AddPrefix, CreateDigest, Directory, RemovePrefix
3✔
16
from pants.engine.intrinsics import create_digest, digest_to_snapshot, remove_prefix
3✔
17
from pants.engine.process import execute_process_or_raise
3✔
18
from pants.engine.rules import collect_rules, concurrently, implicitly, rule
3✔
19
from pants.engine.unions import UnionRule
3✔
20
from pants.util.logging import LogLevel
3✔
21

22
logger = logging.getLogger(__name__)
3✔
23

24

25
@dataclass(frozen=True)
3✔
26
class BuiltHelmArtifact(BuiltPackageArtifact):
3✔
27
    info: HelmChartMetadata | None = None
3✔
28

29
    @classmethod
3✔
30
    def create(cls, relpath: str, info: HelmChartMetadata) -> BuiltHelmArtifact:
3✔
31
        return cls(
×
32
            relpath=relpath,
33
            info=info,
34
            extra_log_lines=(f"Built Helm chart artifact: {relpath}",),
35
        )
36

37

38
@dataclass(frozen=True)
3✔
39
class HelmPackageFieldSet(HelmChartFieldSet, PackageFieldSet):
3✔
40
    output_path: HelmChartOutputPathField
3✔
41

42

43
@rule(desc="Package Helm chart", level=LogLevel.DEBUG)
3✔
44
async def run_helm_package(field_set: HelmPackageFieldSet) -> BuiltPackage:
3✔
45
    result_dir = "__out"
×
46

47
    chart, result_digest = await concurrently(
×
48
        get_helm_chart(HelmChartRequest(field_set), **implicitly()),
49
        create_digest(CreateDigest([Directory(result_dir)])),
50
    )
51

52
    process_output_file = os.path.join(result_dir, f"{chart.info.artifact_name}.tgz")
×
53

54
    process_result = await execute_process_or_raise(
×
55
        **implicitly(
56
            HelmProcess(
57
                argv=["package", chart.name, "-d", result_dir],
58
                input_digest=result_digest,
59
                extra_immutable_input_digests=chart.immutable_input_digests,
60
                output_files=(process_output_file,),
61
                description=f"Packaging Helm chart: {field_set.address}",
62
            )
63
        )
64
    )
65

66
    stripped_output_digest = await remove_prefix(
×
67
        RemovePrefix(process_result.output_digest, result_dir)
68
    )
69

70
    final_snapshot = await digest_to_snapshot(
×
71
        **implicitly(
72
            AddPrefix(
73
                stripped_output_digest, field_set.output_path.value_or_default(file_ending=None)
74
            )
75
        )
76
    )
77
    return BuiltPackage(
×
78
        final_snapshot.digest,
79
        artifacts=tuple(
80
            BuiltHelmArtifact.create(file, chart.info) for file in final_snapshot.files
81
        ),
82
    )
83

84

85
def rules():
3✔
86
    return [*collect_rules(), UnionRule(PackageFieldSet, HelmPackageFieldSet)]
3✔
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