| load("@rules_python//python:defs.bzl", "py_test") | 
 | load("//:workspace_deps.bzl", "gen_workspace_stanza") | 
 |  | 
 | package(default_visibility = ["//visibility:private"]) | 
 |  | 
 | exports_files([ | 
 |     "bin/bazel", | 
 |     "bin/bazel_jdk_minimal", | 
 |     "bin/bazel_nojdk", | 
 |     "integration_test_setup.sh", | 
 |     "sandboxing_test_utils.sh", | 
 |     "unittest.bash", | 
 |     "shell_utils.sh", | 
 | ]) | 
 |  | 
 | filegroup( | 
 |     name = "srcs", | 
 |     srcs = glob(["**"]) + [ | 
 |         "//src/test/shell/bazel:srcs", | 
 |         "//src/test/shell/integration:srcs", | 
 |     ], | 
 |     visibility = ["//src:__pkg__"], | 
 | ) | 
 |  | 
 | gen_workspace_stanza( | 
 |     name = "testenv_sh", | 
 |     out = "testenv.sh", | 
 |     repos = [ | 
 |         "bazel_skylib", | 
 |         "rules_cc", | 
 |         "rules_java", | 
 |         "rules_license", | 
 |         "rules_pkg", | 
 |         "rules_proto", | 
 |         "rules_python", | 
 |         "rules_testing", | 
 |     ], | 
 |     template = "testenv.sh.tmpl", | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | sh_library( | 
 |     name = "bashunit", | 
 |     srcs = [ | 
 |         "unittest.bash", | 
 |         "unittest_utils.sh", | 
 |     ], | 
 |     data = [ | 
 |         ":testenv.sh", | 
 |         "//src/test/tools/bzlmod:MODULE.bazel.lock", | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |     ], | 
 |     visibility = ["//visibility:public"], | 
 | ) | 
 |  | 
 | # Test bashunit with python to avoid recursion. | 
 | py_test( | 
 |     name = "bashunit_test", | 
 |     size = "medium", | 
 |     srcs = ["unittest_test.py"], | 
 |     data = [ | 
 |         ":bashunit", | 
 |         # This test relies on writing shell scripts that use bash runfiles | 
 |         # to load the actual copy of unittest.bash being tested. | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |     ], | 
 |     main = "unittest_test.py", | 
 |     tags = [ | 
 |         "no_windows",  # test runs bash scripts in a subprocess | 
 |     ], | 
 | ) | 
 |  | 
 | sh_library( | 
 |     name = "shell_utils", | 
 |     srcs = ["shell_utils.sh"], | 
 |     visibility = ["//src/test/shell/integration:__pkg__"], | 
 | ) | 
 |  | 
 | sh_test( | 
 |     name = "shell_utils_test", | 
 |     srcs = ["shell_utils_test.sh"], | 
 |     data = [ | 
 |         ":bashunit", | 
 |         ":shell_utils", | 
 |         ":testenv.sh", | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |     ], | 
 | ) | 
 |  | 
 | sh_test( | 
 |     name = "shell_utils_symlinks_test", | 
 |     srcs = ["shell_utils_symlinks_test.sh"], | 
 |     data = [ | 
 |         ":bashunit", | 
 |         ":shell_utils", | 
 |         ":testenv.sh", | 
 |         "@bazel_tools//tools/bash/runfiles", | 
 |     ], | 
 |     tags = [ | 
 |         "no_windows",  # test asserts symlink behavior | 
 |     ], | 
 | ) |