aboutsummaryrefslogtreecommitdiff
path: root/tests/native_binary/BUILD
diff options
context:
space:
mode:
Diffstat (limited to 'tests/native_binary/BUILD')
-rw-r--r--tests/native_binary/BUILD103
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/native_binary/BUILD b/tests/native_binary/BUILD
new file mode 100644
index 0000000..852d607
--- /dev/null
+++ b/tests/native_binary/BUILD
@@ -0,0 +1,103 @@
+load("//rules:copy_file.bzl", "copy_file")
+load("//rules:native_binary.bzl", "native_binary", "native_test")
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+package(
+ default_testonly = 1,
+ default_visibility = ["//visibility:private"],
+)
+
+cc_binary(
+ name = "assertarg",
+ srcs = ["assertarg.cc"],
+)
+
+cc_binary(
+ name = "assertdata",
+ srcs = ["assertdata.cc"],
+ deps = ["@bazel_tools//tools/cpp/runfiles"],
+ # Depends on the runfiles library but doesn't have data-dependencies, on
+ # purpose. We supplement the runfiles in the native_binary / native_test
+ # rule.
+)
+
+# A rule that copies "assertarg"'s output as an opaque executable, simulating a
+# binary that's not built from source and needs to be wrapped in native_binary.
+copy_file(
+ name = "copy_assertarg_exe",
+ src = ":assertarg",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "assertarg_copy.exe",
+ is_executable = True,
+)
+
+# A rule that copies "assertdata"'s output as an opaque executable, simulating a
+# binary that's not built from source and needs to be wrapped in native_binary.
+copy_file(
+ name = "copy_assertdata_exe",
+ src = ":assertdata",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "assertdata_copy.exe",
+ is_executable = True,
+)
+
+_ARGS = [
+ "'a b'",
+ "c\\ d",
+ "$(location testdata.txt) $$(location testdata.txt) $(location testdata.txt)",
+ "'$(location testdata.txt) $$(location testdata.txt) $(location testdata.txt)'",
+ "$$TEST_SRCDIR",
+
+ # TODO(laszlocsomor): uncomment this (and its counterpart in assertarg.cc)
+ # after https://github.com/bazelbuild/bazel/issues/6622 is resolved and the
+ # Bash-less test wrapper is the default on Windows.
+ # "$${TEST_SRCDIR}",
+]
+
+native_binary(
+ name = "args_bin",
+ src = ":copy_assertarg_exe",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "args_bin.exe",
+ args = _ARGS,
+ # We only need the data-dependency for $(location) expansion.
+ data = ["testdata.txt"],
+)
+
+native_test(
+ name = "args_test",
+ src = ":copy_assertarg_exe",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "args_test.exe",
+ args = _ARGS,
+ # We only need the data-dependency for $(location) expansion.
+ data = ["testdata.txt"],
+)
+
+native_binary(
+ name = "data_bin",
+ src = ":copy_assertdata_exe",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "data_bin.exe",
+ data = ["testdata.txt"],
+)
+
+native_test(
+ name = "data_test",
+ src = ":copy_assertdata_exe",
+ # On Windows we need the ".exe" extension.
+ # On other platforms the extension doesn't matter.
+ # Therefore we can use ".exe" on every platform.
+ out = "data_test.exe",
+ data = ["testdata.txt"],
+)