| 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() | |
| ] |