aboutsummaryrefslogtreecommitdiff
path: root/tools/test_helpers.bzl
diff options
context:
space:
mode:
authorJingwen Chen <jingwen@google.com>2023-03-25 07:49:02 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-03-25 07:49:02 +0000
commit50a220cc046640f32b067a0f8aee427606fdf13e (patch)
tree39314478665e3c080e3df6fe4a97609182f089b5 /tools/test_helpers.bzl
parent8a99d2b6dff36f04be445f3c5e8f69874da57a04 (diff)
parent0f22c081a0b9df29e574400ebf7003014b04a06d (diff)
downloadbazelbuild-rules_license-50a220cc046640f32b067a0f8aee427606fdf13e.tar.gz
Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_license/+/2500461 Change-Id: Ia4417578b69e463bda18867fef6a3815971f3b3a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'tools/test_helpers.bzl')
-rw-r--r--tools/test_helpers.bzl47
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/test_helpers.bzl b/tools/test_helpers.bzl
index 30f1980..3ffb9b7 100644
--- a/tools/test_helpers.bzl
+++ b/tools/test_helpers.bzl
@@ -38,3 +38,50 @@ def golden_test(
golden,
],
)
+
+def golden_cmd_test(
+ name,
+ cmd,
+ golden, # Required
+ toolchains = [],
+ tools = None,
+ exec_tools = None,
+ srcs = [], # Optional
+ **kwargs): # Rest
+ """Compares cmd output to golden output, passes if they are identical.
+
+ Args:
+ name: Name of the build rule.
+ cmd: The command to run to generate output.
+ golden: The golden file to be compared.
+ toolchains: List of toolchains needed to run the command, passed to genrule.
+ tools: List of tools needed to run the command, passed to genrule.
+ exec_tools: List of tools needed to run the command, passed to genrule.
+ srcs: List of sources needed as input to the command, passed to genrule.
+ **kwargs: Any additional parameters for the generated golden_test.
+ """
+ actual = name + ".output"
+
+ # There are some cases where tools are provided and exec_tools are provided.
+ # Specifying both in the same genrule, confuses the host vs exec rules,
+ # which prevents python3 from execution.
+ if tools and exec_tools:
+ fail("Only set one: tools or exec_tools. " +
+ "Setting both confuses python execution mode (host vs exec).")
+ native.genrule(
+ name = name + "_output",
+ srcs = srcs,
+ outs = [actual],
+ cmd = cmd + " > '$@'", # Redirect to collect output
+ toolchains = toolchains,
+ tools = tools,
+ exec_tools = exec_tools,
+ testonly = True,
+ )
+
+ golden_test(
+ name = name,
+ subject = actual,
+ golden = golden,
+ **kwargs
+ )