aboutsummaryrefslogtreecommitdiff
path: root/tools/bazel_integration_test/bazel_integration_test.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bazel_integration_test/bazel_integration_test.bzl')
-rw-r--r--tools/bazel_integration_test/bazel_integration_test.bzl134
1 files changed, 0 insertions, 134 deletions
diff --git a/tools/bazel_integration_test/bazel_integration_test.bzl b/tools/bazel_integration_test/bazel_integration_test.bzl
deleted file mode 100644
index c016551..0000000
--- a/tools/bazel_integration_test/bazel_integration_test.bzl
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright 2023 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"Define a rule for running bazel test under Bazel"
-
-load("//:version.bzl", "SUPPORTED_BAZEL_VERSIONS", "bazel_version_to_binary_label")
-load("//python:defs.bzl", "py_test")
-
-BAZEL_BINARY = bazel_version_to_binary_label(SUPPORTED_BAZEL_VERSIONS[0])
-
-_ATTRS = {
- "bazel_binary": attr.label(
- default = BAZEL_BINARY,
- doc = """The bazel binary files to test against.
-
-It is assumed by the test runner that the bazel binary is found at label_workspace/bazel (wksp/bazel.exe on Windows)""",
- ),
- "bazel_commands": attr.string_list(
- default = ["info", "test --test_output=errors ..."],
- doc = """The list of bazel commands to run.
-
-Note that if a command contains a bare `--` argument, the --test_arg passed to Bazel will appear before it.
-""",
- ),
- "bzlmod": attr.bool(
- default = False,
- doc = """Whether the test uses bzlmod.""",
- ),
- "workspace_files": attr.label(
- doc = """A filegroup of all files in the workspace-under-test necessary to run the test.""",
- ),
-}
-
-def _config_impl(ctx):
- if len(SUPPORTED_BAZEL_VERSIONS) > 1:
- fail("""
- bazel_integration_test doesn't support multiple Bazel versions to test against yet.
- """)
- if len(ctx.files.workspace_files) == 0:
- fail("""
-No files were found to run under integration testing. See comment in /.bazelrc.
-You probably need to run
- tools/bazel_integration_test/update_deleted_packages.sh
-""")
-
- # Serialize configuration file for test runner
- config = ctx.actions.declare_file("%s.json" % ctx.attr.name)
- ctx.actions.write(
- output = config,
- content = """
-{{
- "workspaceRoot": "{TMPL_workspace_root}",
- "bazelBinaryWorkspace": "{TMPL_bazel_binary_workspace}",
- "bazelCommands": [ {TMPL_bazel_commands} ],
- "bzlmod": {TMPL_bzlmod}
-}}
-""".format(
- TMPL_workspace_root = ctx.files.workspace_files[0].dirname,
- TMPL_bazel_binary_workspace = ctx.attr.bazel_binary.label.workspace_name,
- TMPL_bazel_commands = ", ".join(["\"%s\"" % s for s in ctx.attr.bazel_commands]),
- TMPL_bzlmod = str(ctx.attr.bzlmod).lower(),
- ),
- )
-
- return [DefaultInfo(
- files = depset([config]),
- runfiles = ctx.runfiles(files = [config]),
- )]
-
-_config = rule(
- implementation = _config_impl,
- doc = "Configures an integration test that runs a specified version of bazel against an external workspace.",
- attrs = _ATTRS,
-)
-
-def bazel_integration_test(name, override_bazel_version = None, bzlmod = False, dirname = None, **kwargs):
- """Wrapper macro to set default srcs and run a py_test with config
-
- Args:
- name: name of the resulting py_test
- override_bazel_version: bazel version to use in test
- bzlmod: whether the test uses bzlmod
- dirname: the directory name of the test. Defaults to value of `name` after trimming the `_example` suffix.
- **kwargs: additional attributes like timeout and visibility
- """
-
- # By default, we assume sources for "pip_example" are in examples/pip/**/*
- dirname = dirname or name[:-len("_example")]
- native.filegroup(
- name = "_%s_sources" % name,
- srcs = native.glob(
- ["%s/**/*" % dirname],
- exclude = ["%s/bazel-*/**" % dirname],
- ),
- )
- workspace_files = kwargs.pop("workspace_files", "_%s_sources" % name)
-
- bazel_binary = BAZEL_BINARY if not override_bazel_version else bazel_version_to_binary_label(override_bazel_version)
- _config(
- name = "_%s_config" % name,
- workspace_files = workspace_files,
- bazel_binary = bazel_binary,
- bzlmod = bzlmod,
- )
-
- tags = kwargs.pop("tags", [])
- tags.append("integration-test")
-
- py_test(
- name = name,
- srcs = [Label("//tools/bazel_integration_test:test_runner.py")],
- main = "test_runner.py",
- args = [native.package_name() + "/_%s_config.json" % name],
- deps = [Label("//python/runfiles")],
- data = [
- bazel_binary,
- "//:distribution",
- "_%s_config" % name,
- workspace_files,
- ],
- tags = tags,
- **kwargs
- )