Skip to content

Commit c786da4

Browse files
A GooglerBlaze Rules Copybara
authored andcommitted
Add bindir to formatting variables
Format flag values in action.contains_flag_values. This is useful in comparisons. Using "bindir" as this is already used as a variable in genrules. PiperOrigin-RevId: 737539501
1 parent 6c33817 commit c786da4

File tree

6 files changed

+18
-9
lines changed

6 files changed

+18
-9
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
[0.X.0]: https://github.com/bazelbuild/rules_testing/releases/tag/v0.X.0
66

77
## Changed
8-
* Nothing yet
8+
* Add `{bindir}` to formatting variables.
9+
* Format values in `ActionsSubject.contains_flag_values()`.
910

1011
### Added
1112
* Nothing yet

MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ bazel_dep(
1717
repo_name = "io_bazel_stardoc",
1818
)
1919
bazel_dep(name = "rules_python", version = "0.37.2", dev_dependency = True)
20+
bazel_dep(name = "rules_shell", version = "0.4.0", dev_dependency = True)
2021

2122
python = use_extension(
2223
"@rules_python//python/extensions:python.bzl",

docs/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
load("@docs-pypi//:requirements.bzl", "requirement")
1616
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
1717
load("@rules_python//python:py_binary.bzl", "py_binary")
18+
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
1819

1920
package(
2021
default_applicable_licenses = ["//:package_license"],

lib/private/action_subject.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ def _action_subject_contains_flag_values(self, flag_values):
253253
"""
254254
missing = []
255255
for flag, value in sorted(flag_values):
256+
value = self.meta.format_str(value)
256257
if flag not in self.parsed_flags:
257258
missing.append("'{}' (not specified)".format(flag))
258259
elif value not in self.parsed_flags[flag]:
@@ -291,6 +292,7 @@ def _action_subject_contains_none_of_flag_values(self, flag_values):
291292
"""
292293
unexpected = []
293294
for flag, value in sorted(flag_values):
295+
value = self.meta.format_str(value)
294296
if flag not in self.parsed_flags:
295297
continue
296298
elif value in self.parsed_flags[flag]:

lib/private/expect.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""# Expect"""
1616

17+
load("//lib:util.bzl", "TestingAspectInfo")
1718
load(":action_subject.bzl", "ActionSubject")
1819
load(":bool_subject.bzl", "BoolSubject")
1920
load(":collection_subject.bzl", "CollectionSubject")
@@ -249,7 +250,7 @@ def _expect_that_target(self, target):
249250
format_str_kwargs = {
250251
"name": target.label.name,
251252
"package": target.label.package,
252-
},
253+
} | {"bindir": target[TestingAspectInfo].bin_path} if TestingAspectInfo in target else {},
253254
))
254255

255256
def _expect_that_value(self, value, *, factory, expr = "value"):

tests/truth_tests.bzl

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def _action_subject_test(env, target):
6767
subject.contains_flag_values([
6868
("--arg1flag", "arg1value"),
6969
("--arg2flag", "arg2value"),
70+
("--generated_input", "{bindir}/{package}/input.gen.txt"),
7071
])
7172
_assert_no_failures(
7273
fake_env,
@@ -1575,16 +1576,18 @@ def _assert_failure(fake_env, expected_strs, *, env, msg = ""):
15751576

15761577
def _test_helper_impl(ctx):
15771578
action_output = ctx.actions.declare_file("action.txt")
1579+
generated_input = _empty_file(ctx, "input.gen.txt")
1580+
args = ctx.actions.args()
1581+
args.add("arg1")
1582+
args.add("--boolflag")
1583+
args.add("--arg1flag", "arg1value")
1584+
args.add("arg2value", format = "--arg2flag=%s")
1585+
args.add("--generated_input", generated_input)
15781586
ctx.actions.run(
1587+
inputs = [generated_input],
15791588
outputs = [action_output],
15801589
executable = ctx.executable.tool,
1581-
arguments = [
1582-
"arg1",
1583-
"--boolflag",
1584-
"--arg1flag",
1585-
"arg1value",
1586-
"--arg2flag=arg2value",
1587-
],
1590+
arguments = [args],
15881591
mnemonic = "Action1",
15891592
)
15901593
if _IS_BAZEL_6_OR_HIGHER:

0 commit comments

Comments
 (0)