# Copyright 2017 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. """Test usage of modules.bzl.""" load("//lib:modules.bzl", "modules") load("//rules:build_test.bzl", "build_test") def _repo_rule_impl(repository_ctx): repository_ctx.file("WORKSPACE") repository_ctx.file("BUILD", """exports_files(["hello"])""") repository_ctx.file("hello", "Hello, Bzlmod!") _repo_rule = repository_rule(_repo_rule_impl) def _workspace_macro(register_toolchains = False): _repo_rule(name = "foo") _repo_rule(name = "bar") if register_toolchains: native.register_toolchains() as_extension_test_ext = modules.as_extension( _workspace_macro, doc = "Only used for testing modules.as_extension().", ) def _use_all_repos_ext_impl(module_ctx): _repo_rule(name = "baz") _repo_rule(name = "qux") return modules.use_all_repos(module_ctx) use_all_repos_test_ext = module_extension( _use_all_repos_ext_impl, doc = "Only used for testing modules.use_all_repos().", ) # buildifier: disable=unnamed-macro def modules_test_suite(): """Creates the tests for modules.bzl if Bzlmod is enabled.""" is_bzlmod_enabled = str(Label("//tests:module_tests.bzl")).startswith("@@") if not is_bzlmod_enabled: return build_test( name = "modules_as_extension_test", targets = [ "@foo//:hello", "@bar//:hello", ], ) build_test( name = "modules_use_all_repos_test", targets = [ "@baz//:hello", "@qux//:hello", ], )