| """Helper macros and rules for tests.""" |
| |
| load("@bazel_skylib//lib:paths.bzl", "paths") |
| load("@bazel_skylib//rules:expand_template.bzl", "expand_template") |
| |
| def flatbuffers_as_external_repo_test(name, directory): |
| """Run all tests in a bazel workspace that imports flatbuffers as an external repository. |
| |
| Args: |
| name: The name of the test target. |
| directory: The directory in which the bazel workspace is located. This is the directory |
| that imports flatbuffers as an external repository. |
| """ |
| expand_template( |
| name = name + "__template_expansion", |
| out = name + ".sh", |
| substitutions = { |
| "{{REPOSITORY_DIR}}": paths.join(native.package_name(), directory), |
| }, |
| template = "//tests:bazel_repository_test_template.sh", |
| ) |
| |
| native.sh_test( |
| name = name, |
| srcs = [":%s.sh" % name], |
| data = [ |
| "//:distribution", |
| "@bazel_linux_x86_64//file", |
| ] + native.glob( |
| [ |
| directory + "/**/*", |
| ], |
| exclude = [ |
| directory + "/bazel-*/**", |
| ], |
| ), |
| tags = [ |
| # Since we have bazel downloading external repositories inside this |
| # test, we need to give it access to the internet. |
| "requires-network", |
| ], |
| # We only have x86_64 Linux bazel exposed so restrict the test to that. |
| target_compatible_with = [ |
| "@platforms//cpu:x86_64", |
| "@platforms//os:linux", |
| ], |
| deps = ["@bazel_tools//tools/bash/runfiles"], |
| ) |