blob: 6c71273a008f202ec27f2f6355ea3e001a964ebd [file] [log] [blame] [edit]
load("@bazel_binaries//:defs.bzl", "bazel_binaries")
load(
"@rules_bazel_integration_test//bazel_integration_test:defs.bzl",
"bazel_integration_tests",
)
genrule(
name = "update_bit_ignore",
srcs = [],
outs = [
"update_bit_ignore.sh",
],
cmd = "\n".join([
"cat <<'EOS' > $@",
"#!/usr/bin/env bash",
"cd $${BUILD_WORKSPACE_DIRECTORY}",
"echo 'common --deleted_packages='$$(find examples -type 'd' | grep -v '^examples$$' | tr '\n' ',' | sed 's/,$$//')" +
"> bit-ignore.bazelrc",
"EOS",
]),
executable = True,
)
[
bazel_integration_tests(
name = "%s_test" % example,
timeout = "eternal",
additional_env_inherit = [
"ANDROID_HOME",
"ANDROID_SDK_ROOT",
"ANDROID_NDK_HOME",
],
bazel_versions = [
version
for version in bazel_binaries.versions.all
if version in metadata["only"] or (not metadata["only"] and version not in metadata["exclude"])
],
tags = [],
test_runner = "//src/main/kotlin/io/bazel/kotlin/test:BazelIntegrationTestRunner",
workspace_files = glob(
["%s/**/**" % example],
# exclude any bazel directories if existing
exclude = ["%s/bazel-*/**" % example],
),
workspace_path = example,
)
for (example, metadata) in {
example: {
"exclude": [
# Cut to the file name, and use it as an excluded bazel version. For exclusion to work
# the file name in the `exclude` directory must match the bazel version in `bazel_binaries.versions.all`.
# This is done as a secondary loop for readability and avoiding over-globbing.
version.rpartition("/")[2]
for version in glob(
["%s/exclude/*" % example],
allow_empty = True,
)
],
"only": [
# Cut to the file name, and use it as an only bazel version. For exclusion to work
# the file name in the `only` directory must match the bazel version in `bazel_binaries.versions.all`.
# This is done as a secondary loop for readability and avoiding over-globbing.
version.rpartition("/")[2]
for version in glob(
["%s/only/*" % example],
allow_empty = True,
)
],
}
for example in {
# Cut to the directory.
file.partition("/")[0]: True
for file in glob(
["**/*"],
# Exclude files in `examples`.
exclude = [
"*",
# Node is currently broken.
"node/**",
# Anvil is broken by a verison upgrade.
"anvil/**",
],
)
}
}.items()
]