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

pantsbuild / pants / 19015773527

02 Nov 2025 05:33PM UTC coverage: 17.872% (-62.4%) from 80.3%
19015773527

Pull #22816

github

web-flow
Merge a12d75757 into 6c024e162
Pull Request #22816: Update Pants internal Python to 3.14

4 of 5 new or added lines in 3 files covered. (80.0%)

28452 existing lines in 683 files now uncovered.

9831 of 55007 relevant lines covered (17.87%)

0.18 hits per line

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

0.0
/src/python/pants/backend/javascript/run/rules.py
1
# Copyright 2023 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
UNCOV
3
from __future__ import annotations
×
4

UNCOV
5
from collections.abc import Iterable
×
UNCOV
6
from dataclasses import dataclass
×
7

UNCOV
8
from pants.backend.javascript import install_node_package
×
UNCOV
9
from pants.backend.javascript.install_node_package import (
×
10
    InstalledNodePackageRequest,
11
    add_sources_to_installed_node_package,
12
)
UNCOV
13
from pants.backend.javascript.nodejs_project_environment import (
×
14
    NodeJsProjectEnvironmentProcess,
15
    setup_nodejs_project_environment_process,
16
)
UNCOV
17
from pants.backend.javascript.package_json import (
×
18
    NodeBuildScriptEntryPointField,
19
    NodeBuildScriptExtraEnvVarsField,
20
    NodePackageDependenciesField,
21
    NodeRunScriptEntryPointField,
22
    NodeRunScriptExtraEnvVarsField,
23
)
UNCOV
24
from pants.core.environments.target_types import EnvironmentField
×
UNCOV
25
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior, RunRequest
×
UNCOV
26
from pants.core.util_rules.env_vars import environment_vars_subset
×
UNCOV
27
from pants.engine.env_vars import EnvironmentVarsRequest
×
UNCOV
28
from pants.engine.rules import Rule, collect_rules, implicitly, rule
×
UNCOV
29
from pants.engine.unions import UnionRule
×
30

31

UNCOV
32
@dataclass(frozen=True)
×
UNCOV
33
class RunNodeBuildScriptFieldSet(RunFieldSet):
×
UNCOV
34
    required_fields = (NodeBuildScriptEntryPointField, NodePackageDependenciesField)
×
UNCOV
35
    run_in_sandbox_behavior = RunInSandboxBehavior.RUN_REQUEST_HERMETIC
×
36

UNCOV
37
    entry_point: NodeBuildScriptEntryPointField
×
UNCOV
38
    extra_env_vars: NodeBuildScriptExtraEnvVarsField
×
UNCOV
39
    environment: EnvironmentField
×
40

41

UNCOV
42
@dataclass(frozen=True)
×
UNCOV
43
class RunNodeScriptFieldSet(RunFieldSet):
×
UNCOV
44
    required_fields = (NodeRunScriptEntryPointField, NodePackageDependenciesField)
×
UNCOV
45
    run_in_sandbox_behavior = RunInSandboxBehavior.RUN_REQUEST_HERMETIC
×
46

UNCOV
47
    entry_point: NodeRunScriptEntryPointField
×
UNCOV
48
    extra_env_vars: NodeRunScriptExtraEnvVarsField
×
UNCOV
49
    environment: EnvironmentField
×
50

51

UNCOV
52
@rule
×
UNCOV
53
async def run_node_script(
×
54
    field_set: RunNodeScriptFieldSet,
55
) -> RunRequest:
56
    installation = await add_sources_to_installed_node_package(
×
57
        InstalledNodePackageRequest(field_set.address)
58
    )
59
    target_env_vars = await environment_vars_subset(
×
60
        EnvironmentVarsRequest(field_set.extra_env_vars.value or ()), **implicitly()
61
    )
62
    package_dir = "{chroot}" + "/" + installation.project_env.package_dir()
×
63

64
    process = await setup_nodejs_project_environment_process(
×
65
        NodeJsProjectEnvironmentProcess(
66
            installation.project_env,
67
            args=(
68
                *installation.package_manager.current_directory_args,
69
                package_dir,
70
                "run",
71
                str(field_set.entry_point.value),
72
            ),
73
            description=f"Running {str(field_set.entry_point.value)}.",
74
            input_digest=installation.digest,
75
            extra_env=target_env_vars,
76
        ),
77
        **implicitly(),
78
    )
79

80
    return RunRequest(
×
81
        digest=process.input_digest,
82
        args=process.argv,
83
        extra_env=process.env,
84
        immutable_input_digests=process.immutable_input_digests,
85
    )
86

87

UNCOV
88
@rule
×
UNCOV
89
async def run_node_build_script(
×
90
    field_set: RunNodeBuildScriptFieldSet,
91
) -> RunRequest:
92
    installation = await add_sources_to_installed_node_package(
×
93
        InstalledNodePackageRequest(field_set.address)
94
    )
95
    target_env_vars = await environment_vars_subset(
×
96
        EnvironmentVarsRequest(field_set.extra_env_vars.value or ()), **implicitly()
97
    )
98
    package_dir = "{chroot}" + "/" + installation.project_env.package_dir()
×
99

100
    process = await setup_nodejs_project_environment_process(
×
101
        NodeJsProjectEnvironmentProcess(
102
            installation.project_env,
103
            args=(
104
                *installation.package_manager.current_directory_args,
105
                package_dir,
106
                "run",
107
                str(field_set.entry_point.value),
108
            ),
109
            description=f"Running {str(field_set.entry_point.value)}.",
110
            input_digest=installation.digest,
111
            extra_env=target_env_vars,
112
        ),
113
        **implicitly(),
114
    )
115

116
    return RunRequest(
×
117
        digest=process.input_digest,
118
        args=process.argv,
119
        extra_env=process.env,
120
        immutable_input_digests=process.immutable_input_digests,
121
    )
122

123

UNCOV
124
def rules() -> Iterable[Rule | UnionRule]:
×
UNCOV
125
    return [
×
126
        *collect_rules(),
127
        *install_node_package.rules(),
128
        *RunNodeBuildScriptFieldSet.rules(),
129
        *RunNodeScriptFieldSet.rules(),
130
    ]
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