| # 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. |
| |
| """Tests for basic bzlmod functionality.""" |
| |
| load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") |
| load("@rules_testing//lib:util.bzl", "util") |
| |
| def _simple_test(name): |
| util.helper_target( |
| native.filegroup, |
| name = name + "_subject", |
| srcs = ["src.txt"], |
| data = ["data.txt"], |
| ) |
| analysis_test( |
| name = name, |
| impl = _simple_test_impl, |
| target = name + "_subject", |
| ) |
| |
| def _simple_test_impl(env, target): |
| subject = env.expect.that_target(target) |
| subject.default_outputs().contains_exactly(["src.txt"]) |
| subject.runfiles().contains_exactly(["{workspace}/data.txt"]) |
| |
| def bzlmod_test_suite(name): |
| test_suite(name = name, tests = [ |
| _simple_test, |
| _trigger_toolchains_test, |
| ]) |
| |
| def _needs_toolchain_impl(ctx): |
| # We just need to trigger toolchain resolution, we don't |
| # care about the result. |
| _ = ctx.toolchains["//:fake"] # @unused |
| |
| _needs_toolchain = rule( |
| implementation = _needs_toolchain_impl, |
| toolchains = [config_common.toolchain_type("//:fake", mandatory = False)], |
| ) |
| |
| def _trigger_toolchains_test_impl(env, target): |
| # Building is sufficient evidence of success |
| _ = env, target # @unused |
| |
| # A regression test for https://github.com/bazelbuild/rules_testing/issues/33 |
| def _trigger_toolchains_test(name): |
| util.helper_target( |
| _needs_toolchain, |
| name = name + "_subject", |
| ) |
| analysis_test( |
| name = name, |
| impl = _trigger_toolchains_test_impl, |
| target = name + "_subject", |
| ) |