Skip to content

Flip incompatible_disable_autoloads_in_main_repo #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions examples/py/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
load("@rules_python//python:py_binary.bzl", "py_binary")
load("@rules_python//python:py_library.bzl", "py_library")

py_library(
name = "lib",
srcs = ["lib.py"],
4 changes: 4 additions & 0 deletions examples/py_native/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
load("@rules_python//python:py_binary.bzl", "py_binary")
load("@rules_python//python:py_library.bzl", "py_library")
load("@rules_python//python:py_test.bzl", "py_test")

filegroup(
name = "srcs",
srcs = glob(["*.py"]) + [
2 changes: 2 additions & 0 deletions examples/py_native/fibonacci/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
load("@rules_python//python:py_library.bzl", "py_library")

filegroup(
name = "srcs",
srcs = glob(["*.py"]) + [
4 changes: 4 additions & 0 deletions examples/shell/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("@rules_shell//shell:sh_library.bzl", "sh_library")
load("@rules_shell//shell:sh_test.bzl", "sh_test")

package(default_visibility = ["//visibility:public"])

sh_binary(
1 change: 1 addition & 0 deletions src/BUILD
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@ load("@bazel_pip_dev_deps//:requirements.bzl", "requirement")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_python//python:defs.bzl", "py_binary", "py_library")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("//src:build_defs.bzl", "transition_java_language_8_archive")
load("//src:release_archive.bzl", "release_archive")
load(":embedded_tools.bzl", "srcsfile")
Original file line number Diff line number Diff line change
@@ -149,7 +149,7 @@ public final class BuildLanguageOptions extends OptionsBase {

@Option(
name = "incompatible_disable_autoloads_in_main_repo",
defaultValue = "false",
defaultValue = "true",
documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
@@ -950,7 +950,7 @@ public StarlarkSemantics toStarlarkSemantics() {
public static final String INCOMPATIBLE_STOP_EXPORTING_LANGUAGE_MODULES =
"-incompatible_stop_exporting_language_modules";
public static final String INCOMPATIBLE_DISABLE_AUTOLOADS_IN_MAIN_REPO =
"-incompatible_disable_autoloads_in_main_repo";
"+incompatible_disable_autoloads_in_main_repo";
Comment on lines 952 to +953
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent Flag Setting in Command Line Options

The PR changes the default value of 'incompatible_disable_autoloads_in_main_repo' to true but also modifies the command line flag from a negative prefix ('-') to a positive prefix ('+'). This creates inconsistency between the flag's default value and its command line representation. When a flag has a '+' prefix, it means the flag is enabled by default and can be disabled with '-'. This inconsistency could lead to confusion and potential security issues if developers mistakenly believe they've disabled autoloads when they haven't.

Suggested change
public static final String INCOMPATIBLE_DISABLE_AUTOLOADS_IN_MAIN_REPO =
"-incompatible_disable_autoloads_in_main_repo";
"+incompatible_disable_autoloads_in_main_repo";
public static final String INCOMPATIBLE_DISABLE_AUTOLOADS_IN_MAIN_REPO =
"-incompatible_disable_autoloads_in_main_repo";
Standards
  • CWE-1173
  • Secure Configuration Management

public static final String INCOMPATIBLE_ALLOW_TAGS_PROPAGATION =
"+incompatible_allow_tags_propagation";
public static final String EXPERIMENTAL_BUILTINS_DUMMY = "-experimental_builtins_dummy";
1 change: 1 addition & 0 deletions src/main/java/com/google/devtools/build/skyframe/BUILD
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@rules_java//java:defs.bzl", "java_library")
load("//tools/build_rules:utilities.bzl", "java_library_srcs")
1 change: 1 addition & 0 deletions src/main/starlark/tests/builtins_bzl/builtin_test_setup.sh
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ function setup_tests() {
add_bazel_skylib "MODULE.bazel"
add_rules_python "MODULE.bazel"
add_platforms "MODULE.bazel"
add_rules_shell "MODULE.bazel"
src=$(get_runfiles_dir $1)
dest="${2:-$1}"
if [ ! -e "$src" ]; then
Original file line number Diff line number Diff line change
@@ -15,6 +15,10 @@ load(
"runfiles_test",
"wrapped_cc_lib",
)
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_import.bzl", "cc_import")
load("@rules_shell//shell:sh_test.bzl", "sh_test")

LINKABLE_MORE_THAN_ONCE = "LINKABLE_MORE_THAN_ONCE"

Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
load(":starlark_tests.bzl", "analysis_test_suite")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_import.bzl", "cc_import")
load("@rules_shell//shell:sh_test.bzl", "sh_test")

cc_static_library(
name = "static",
Original file line number Diff line number Diff line change
@@ -38,6 +38,8 @@ protected ImmutableList<ToolsSetup> getAdditionalTools() {

@Test
public void testCompileAndRunHelloWorldStub() throws Exception {
context().write(MODULE_DOT_BAZEL, "bazel_dep(name = 'rules_python', version = '0.40.0')");

writeHelloWorldFiles();

BuilderRunner bazel = context().bazel();
@@ -51,7 +53,11 @@ public void testCompileAndRunHelloWorldStub() throws Exception {
}

private void writeHelloWorldFiles() throws IOException {
context().write("python/hello/BUILD", "py_binary(name = 'hello', srcs = ['hello.py'])");
context()
.write(
"python/hello/BUILD",
"load('@rules_python//python:py_binary.bzl', 'py_binary')",
"py_binary(name = 'hello', srcs = ['hello.py'])");
context().write("python/hello/hello.py", String.format("print ('%s')", HELLO));
}
}
65 changes: 30 additions & 35 deletions src/test/py/bazel/bazel_external_repository_test.py
Original file line number Diff line number Diff line change
@@ -66,23 +66,20 @@ def tearDown(self):
def testNewHttpArchive(self):
ip, port = self._http_server.server_address
rule_definition = [
(
'http_archive ='
' use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl",'
' "http_archive")'
),
'bazel_dep(name = "rules_python", version = "0.40.0")',
'http_archive = use_repo_rule(',
' "@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")',
'http_archive(',
' name = "hello_archive",',
' urls = ["http://%s:%s/hello-1.0.0.tar.gz"],' % (ip, port),
(
' sha256 = '
'"154740b327bcfee5669ef2ce0a04bf0904227a3bfe0fee08a5aaca96ea5a601a",'
),
' sha256 = ',
' "154740b327bcfee5669ef2ce0a04bf0904227a3bfe0fee08a5aaca96ea5a601a",',
' strip_prefix = "hello-1.0.0",',
' build_file = "@//third_party:hello.BUILD",',
')',
]
build_file = [
'load("@rules_python//python:py_library.bzl", "py_library")',
'py_library(',
' name = "hello",',
' srcs = ["hello.py"],',
@@ -189,20 +186,16 @@ def testNewHttpTarWithSparseFile(self):

ip, port = self._http_server.server_address
rule_definition = [
(
'http_archive ='
' use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl",'
' "http_archive")'
),
'bazel_dep(name = "rules_python", version = "0.40.0")',
'http_archive = use_repo_rule(',
' "@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")',
'http_archive(',
' name = "sparse_archive",',
' urls = ["http://%s:%s/sparse_archive.tar"],' % (ip, port),
' build_file = "@//:sparse_archive.BUILD",',
' sha256 = ',
(
' "a1a2b2ce4acd51a8cc1ab80adce6f134ac73e885219911a960a42000e312bb65",'
')'
),
' "a1a2b2ce4acd51a8cc1ab80adce6f134ac73e885219911a960a42000e312bb65",',
')',
]
self.ScratchFile('MODULE.bazel', rule_definition)
self.ScratchFile(
@@ -224,13 +217,12 @@ def testNewHttpTarWithSparseFile(self):
self.ScratchFile(
'BUILD',
[
'load("@rules_python//python:py_test.bzl", "py_test")',
'py_test(',
' name = "test",',
' srcs = ["test.py"],',
(
' args = ["$(rlocationpath @sparse_archive//:sparse_file)"],'
' data = ['
),
' args = ["$(rlocationpath @sparse_archive//:sparse_file)"],',
' data = [',
' "@sparse_archive//:sparse_file",',
' "@bazel_tools//tools/python/runfiles",',
' ],)',
@@ -260,10 +252,11 @@ def _CreatePyWritingStarlarkRule(self, print_string):
def testNewLocalRepositoryNoticesFileChangeInRepoRoot(self):
"""Regression test for https://github.com/bazelbuild/bazel/issues/7063."""
rule_definition = [
'bazel_dep(name = "rules_python", version = "0.40.0")',
'new_local_repository = use_repo_rule(',
(
'new_local_repository ='
' use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl",'
' "new_local_repository")'
' "@bazel_tools//tools/build_defs/repo:local.bzl",'
' "new_local_repository")'
),
'new_local_repository(',
' name = "r",',
@@ -273,11 +266,15 @@ def testNewLocalRepositoryNoticesFileChangeInRepoRoot(self):
]
self.ScratchFile('MODULE.bazel', rule_definition)
self._CreatePyWritingStarlarkRule('hello!')
self.ScratchFile('BUILD', [
'load("@r//:foo.bzl", "gen_py")',
'gen_py(name = "gen")',
'py_binary(name = "bin", srcs = [":gen"], main = "gen.py")',
])
self.ScratchFile(
'BUILD',
[
'load("@r//:foo.bzl", "gen_py")',
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'gen_py(name = "gen")',
'py_binary(name = "bin", srcs = [":gen"], main = "gen.py")',
],
)

_, stdout, _ = self.RunBazel(['run', '//:bin'])
self.assertIn('hello!', os.linesep.join(stdout))
@@ -294,11 +291,9 @@ def setUpOtherRepoMyRepo(self):
self.ScratchFile(
'my_repo/MODULE.bazel',
[
(
'local_repository ='
' use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl",'
' "local_repository")'
),
'local_repository = use_repo_rule(',
' "@bazel_tools//tools/build_defs/repo:local.bzl",',
' "local_repository")',
'local_repository(name = "other_repo", path="../other_repo")',
],
)
215 changes: 150 additions & 65 deletions src/test/py/bazel/launcher_test.py
Original file line number Diff line number Diff line change
@@ -237,14 +237,21 @@ def _buildAndCheckArgumentPassing(self, package, target_name):
self.assertEqual(stdout, arguments)

def testJavaBinaryLauncher(self):
self.ScratchFile('foo/BUILD', [
'java_binary(',
' name = "foo",',
' srcs = ["Main.java"],',
' main_class = "Main",',
' data = ["//bar:bar.txt"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'java_binary(',
' name = "foo",',
' srcs = ["Main.java"],',
' main_class = "Main",',
' data = ["//bar:bar.txt"],',
')',
],
)
self.ScratchFile('foo/Main.java', [
'public class Main {',
' public static void main(String[] args) {'
@@ -266,13 +273,20 @@ def testJavaBinaryLauncher(self):
self._buildJavaTargets(bazel_bin, '.exe' if self.IsWindows() else '')

def testJavaBinaryArgumentPassing(self):
self.ScratchFile('foo/BUILD', [
'java_binary(',
' name = "bin",',
' srcs = ["Main.java"],',
' main_class = "Main",',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'java_binary(',
' name = "bin",',
' srcs = ["Main.java"],',
' main_class = "Main",',
')',
],
)
self.ScratchFile('foo/Main.java', [
'public class Main {',
' public static void main(String[] args) {'
@@ -286,6 +300,9 @@ def testJavaBinaryArgumentPassing(self):
self._buildAndCheckArgumentPassing('foo', 'bin')

def testShBinaryLauncher(self):
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_shell", version = "0.3.0")']
)
self.ScratchFile(
'foo/BUILD',
[
@@ -295,6 +312,7 @@ def testShBinaryLauncher(self):
# On Windows, if the srcs's extension is one of ".exe", ".cmd", or
# ".bat", then Bazel requires the rule's name has the same
# extension, and the output file will be a copy of the source file.
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
'sh_binary(',
' name = "bin1.sh",',
' srcs = ["foo.sh"],',
@@ -310,7 +328,8 @@ def testShBinaryLauncher(self):
' srcs = ["foo.cmd"],',
' data = ["//bar:bar.txt"],',
')',
])
],
)
foo_sh = self.ScratchFile('foo/foo.sh', [
'#!/bin/bash',
'echo hello shell',
@@ -328,12 +347,19 @@ def testShBinaryLauncher(self):
self._buildShBinaryTargets(bazel_bin, '.exe' if self.IsWindows() else '')

def testShBinaryArgumentPassing(self):
self.ScratchFile('foo/BUILD', [
'sh_binary(',
' name = "bin",',
' srcs = ["bin.sh"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_shell", version = "0.3.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
'sh_binary(',
' name = "bin",',
' srcs = ["bin.sh"],',
')',
],
)
foo_sh = self.ScratchFile('foo/bin.sh', [
'#!/bin/bash',
'# Store arguments in a array',
@@ -350,6 +376,9 @@ def testShBinaryArgumentPassing(self):
self._buildAndCheckArgumentPassing('foo', 'bin')

def testPyBinaryLauncher(self):
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)
self.ScratchFile(
'foo/foo.bzl',
[
@@ -372,12 +401,30 @@ def testPyBinaryLauncher(self):
')',
],
)
self.ScratchFile('foo/BUILD', [
'load(":foo.bzl", "helloworld")', '', 'py_binary(', ' name = "foo",',
' srcs = ["foo.py"],', ' data = ["//bar:bar.txt"],', ')', '',
'py_test(', ' name = "test",', ' srcs = ["test.py"],', ')', '',
'helloworld(', ' name = "hello",', ' out = "hello.txt",', ')'
])
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'load("@rules_python//python:py_test.bzl", "py_test")',
'load(":foo.bzl", "helloworld")',
'',
'py_binary(',
' name = "foo",',
' srcs = ["foo.py"],',
' data = ["//bar:bar.txt"],',
')',
'',
'py_test(',
' name = "test",',
' srcs = ["test.py"],',
')',
'',
'helloworld(',
' name = "hello",',
' out = "hello.txt",',
')',
],
)
foo_py = self.ScratchFile('foo/foo.py', [
'#!/usr/bin/env python3',
'import sys',
@@ -406,12 +453,19 @@ def testPyBinaryLauncher(self):
self._buildPyTargets(bazel_bin, '.exe' if self.IsWindows() else '')

def testPyBinaryArgumentPassing(self):
self.ScratchFile('foo/BUILD', [
'py_binary(',
' name = "bin",',
' srcs = ["bin.py"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'py_binary(',
' name = "bin",',
' srcs = ["bin.py"],',
')',
],
)
self.ScratchFile('foo/bin.py', [
'import sys',
'for arg in sys.argv[1:]:',
@@ -422,12 +476,19 @@ def testPyBinaryArgumentPassing(self):

def testPyBinaryLauncherWithDifferentArgv0(self):
"""Test for https://github.com/bazelbuild/bazel/issues/14343."""
self.ScratchFile('foo/BUILD', [
'py_binary(',
' name = "bin",',
' srcs = ["bin.py"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'py_binary(',
' name = "bin",',
' srcs = ["bin.py"],',
')',
],
)
self.ScratchFile('foo/bin.py', ['print("Hello world")'])

_, stdout, _ = self.RunBazel(['info', 'bazel-bin'])
@@ -447,15 +508,22 @@ def testWindowsJavaExeLauncher(self):
# Skip this test on non-Windows platforms
if not self.IsWindows():
return
self.ScratchFile('foo/BUILD', [
'java_binary(',
' name = "foo",',
' srcs = ["Main.java"],',
' main_class = "Main",',
' jvm_flags = ["--flag1", "--flag2"],',
' data = ["advice-1.jar", "advice-2.jar"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'java_binary(',
' name = "foo",',
' srcs = ["Main.java"],',
' main_class = "Main",',
' jvm_flags = ["--flag1", "--flag2"],',
' data = ["advice-1.jar", "advice-2.jar"],',
')',
],
)
self.ScratchFile('foo/advice-1.jar')
self.ScratchFile('foo/advice-2.jar')
self.ScratchFile('foo/Main.java', [
@@ -569,17 +637,25 @@ def testWindowsJavaExeLauncher(self):
def testWindowsNativeLauncherInNonEnglishPath(self):
if not self.IsWindows():
return
self.ScratchFile('bin/BUILD', [
'java_binary(',
' name = "bin_java",',
' srcs = ["Main.java"],',
' main_class = "Main",',
')',
'sh_binary(',
' name = "bin_sh",',
' srcs = ["main.sh"],',
')',
])
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'bin/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
'java_binary(',
' name = "bin_java",',
' srcs = ["Main.java"],',
' main_class = "Main",',
')',
'sh_binary(',
' name = "bin_sh",',
' srcs = ["main.sh"],',
')',
],
)
self.ScratchFile('bin/Main.java', [
'public class Main {',
' public static void main(String[] args) {'
@@ -617,9 +693,15 @@ def testWindowsNativeLauncherInNonEnglishPath(self):
def testWindowsNativeLauncherInLongPath(self):
if not self.IsWindows():
return
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'bin/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'java_binary(',
' name = "not_short_bin_java",',
' srcs = ["Main.java"],',
@@ -713,9 +795,15 @@ def testWindowsNativeLauncherInLongPath(self):
def testWindowsNativeLauncherInvalidArgv0(self):
if not self.IsWindows():
return
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
'bin/BUILD',
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'java_binary(',
' name = "bin_java",',
' srcs = ["Main.java"],',
@@ -787,11 +875,8 @@ def testBuildLaunchersWithClangClOnWindows(self):
[
'bazel_dep(name = "platforms", version = "0.0.9")',
'bazel_dep(name = "rules_cc", version = "0.0.12")',
(
'cc_configure ='
' use_extension("@rules_cc//cc:extensions.bzl",'
' "cc_configure_extension")'
),
'cc_configure = use_extension(',
' "@rules_cc//cc:extensions.bzl", "cc_configure_extension")',
'use_repo(cc_configure, "local_config_cc")',
# Register all cc toolchains for Windows
'register_toolchains("@local_config_cc//:all")',
163 changes: 103 additions & 60 deletions src/test/py/bazel/py_test.py
Original file line number Diff line number Diff line change
@@ -26,6 +26,8 @@ def createSimpleFiles(self):
self.ScratchFile(
'a/BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'load("@rules_python//python:py_library.bzl", "py_library")',
'py_binary(name="a", srcs=["a.py"], deps=[":b"])',
'py_library(name="b", srcs=["b.py"], imports=["."])',
],
@@ -45,6 +47,12 @@ def createSimpleFiles(self):
' print("Hello, World")',
])

def setUp(self):
test_base.TestBase.setUp(self)
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)

def testSmoke(self):
self.createSimpleFiles()
_, stdout, _ = self.RunBazel(['run', '//a:a'])
@@ -68,13 +76,24 @@ def testRunfilesSymlinks(self):

class TestInitPyFiles(test_base.TestBase):

def setUp(self):
test_base.TestBase.setUp(self)
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)

def createSimpleFiles(self, create_init=True):

self.ScratchFile('src/a/BUILD', [
'py_binary(name="a", srcs=["a.py"], deps=[":b"], legacy_create_init=%s)'
% create_init,
'py_library(name="b", srcs=["b.py"])',
])
self.ScratchFile(
'src/a/BUILD',
[
'load("@rules_python//python:py_library.bzl", "py_library")',
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'py_binary(name="a", srcs=["a.py"], deps=[":b"],'
' legacy_create_init=%s)' % create_init,
'py_library(name="b", srcs=["b.py"])',
],
)

self.ScratchFile('src/a/a.py', [
'from src.a import b',
@@ -116,13 +135,18 @@ def testInitPyFilesNotCreatedWhenLegacyCreateInitIsSet(self):

# Regression test for https://github.com/bazelbuild/bazel/pull/10119
def testBuildingZipFileWithTargetNameWithDot(self):
self.ScratchFile('BUILD', [
'py_binary(',
' name = "bin.v1", # .v1 should not be treated as extension and removed accidentally',
' srcs = ["bin.py"],',
' main = "bin.py",',
')',
])
self.ScratchFile(
'BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
"'# .v1 shouldn't be treated as extension and removed accidentally",
'py_binary(',
' name = "bin.v1",',
' srcs = ["bin.py"],',
' main = "bin.py",',
')',
],
)
self.ScratchFile('bin.py', ['print("Hello, world")'])
self.RunBazel(['build', '--build_python_zip', '//:bin.v1'])
self.assertTrue(os.path.exists('bazel-bin/bin.v1.temp'))
@@ -151,19 +175,26 @@ def _RunRemoteBazel(self, args):

def setUp(self):
test_base.TestBase.setUp(self)
self.ScratchFile(
'MODULE.bazel', ['bazel_dep(name = "rules_python", version = "0.40.0")']
)
self._worker_port = self.StartRemoteWorker()

def tearDown(self):
self.StopRemoteWorker()
test_base.TestBase.tearDown(self)

def testPyTestRunsRemotely(self):
self.ScratchFile('foo/BUILD', [
'py_test(',
' name = "foo_test",',
' srcs = ["foo_test.py"],',
')',
])
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_python//python:py_test.bzl", "py_test")',
'py_test(',
' name = "foo_test",',
' srcs = ["foo_test.py"],',
')',
],
)
self.ScratchFile('foo/foo_test.py', [
'print("Test ran")',
])
@@ -176,17 +207,22 @@ def testPyTestRunsRemotely(self):

# Regression test for https://github.com/bazelbuild/bazel/issues/9239
def testPyTestWithStdlibCollisionRunsRemotely(self):
self.ScratchFile('foo/BUILD', [
'py_library(',
' name = "io",',
' srcs = ["io.py"],',
')',
'py_test(',
' name = "io_test",',
' srcs = ["io_test.py"],',
' deps = [":io"],',
')',
])
self.ScratchFile(
'foo/BUILD',
[
'load("@rules_python//python:py_library.bzl", "py_library")',
'load("@rules_python//python:py_test.bzl", "py_test")',
'py_library(',
' name = "io",',
' srcs = ["io.py"],',
')',
'py_test(',
' name = "io_test",',
' srcs = ["io_test.py"],',
' deps = [":io"],',
')',
],
)
self.ScratchFile('foo/io.py', [
'def my_func():',
' print("Test ran")',
@@ -209,41 +245,46 @@ def testPyRunfilesLibraryCurrentRepository(self):
self.ScratchFile(
'MODULE.bazel',
[
(
'local_repository ='
' use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl",'
' "local_repository")'
),
'bazel_dep(name = "rules_python", version = "0.40.0")',
'local_repository = use_repo_rule(',
' "@bazel_tools//tools/build_defs/repo:local.bzl",',
' "local_repository")',
'local_repository(name = "other_repo", path = "other_repo_path")',
],
)

self.ScratchFile('pkg/BUILD.bazel', [
'py_library(',
' name = "library",',
' srcs = ["library.py"],',
' visibility = ["//visibility:public"],',
' deps = ["@bazel_tools//tools/python/runfiles"],',
')',
'',
'py_binary(',
' name = "binary",',
' srcs = ["binary.py"],',
' deps = [',
' ":library",',
' "@bazel_tools//tools/python/runfiles",',
' ],',
')',
'',
'py_test(',
' name = "test",',
' srcs = ["test.py"],',
' deps = [',
' ":library",',
' "@bazel_tools//tools/python/runfiles",',
' ],',
')',
])
self.ScratchFile(
'pkg/BUILD.bazel',
[
'load("@rules_python//python:py_library.bzl", "py_library")',
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'load("@rules_python//python:py_test.bzl", "py_test")',
'py_library(',
' name = "library",',
' srcs = ["library.py"],',
' visibility = ["//visibility:public"],',
' deps = ["@bazel_tools//tools/python/runfiles"],',
')',
'',
'py_binary(',
' name = "binary",',
' srcs = ["binary.py"],',
' deps = [',
' ":library",',
' "@bazel_tools//tools/python/runfiles",',
' ],',
')',
'',
'py_test(',
' name = "test",',
' srcs = ["test.py"],',
' deps = [',
' ":library",',
' "@bazel_tools//tools/python/runfiles",',
' ],',
')',
],
)
self.ScratchFile('pkg/library.py', [
'from bazel_tools.tools.python.runfiles import runfiles',
'def print_repo_name():',
@@ -266,6 +307,8 @@ def testPyRunfilesLibraryCurrentRepository(self):
self.ScratchFile(
'other_repo_path/other_pkg/BUILD.bazel',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'load("@rules_python//python:py_test.bzl", "py_test")',
'py_binary(',
' name = "binary",',
' srcs = ["binary.py"],',
8 changes: 7 additions & 1 deletion src/test/py/bazel/query_test.py
Original file line number Diff line number Diff line change
@@ -43,10 +43,16 @@ def testSimpleQuery(self):
def testQueryWithDifferentOutputBaseAfterBuilding(self):
output_base = tempfile.mkdtemp(dir=os.getenv('TEST_TMPDIR'))

self.ScratchFile('MODULE.bazel')
self.ScratchFile(
'MODULE.bazel',
[
'bazel_dep(name = "rules_python", version = "0.40.0")',
],
)
self.ScratchFile(
'BUILD',
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
'py_binary(name="a", srcs=["a.py"])',
],
)
99 changes: 56 additions & 43 deletions src/test/py/bazel/runfiles_test.py
Original file line number Diff line number Diff line change
@@ -262,25 +262,35 @@ def testRunfilesLibrariesFindRlocationpathExpansion(self):
self.ScratchFile("A/REPO.bazel")
self.ScratchFile("A/p/BUILD", ["exports_files(['foo.txt'])"])
self.ScratchFile("A/p/foo.txt", ["Hello, World!"])
self.ScratchFile("MODULE.bazel", [
'local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")', # pylint: disable=line-too-long
'local_repository(name = "A", path = "A")',
])
self.ScratchFile("pkg/BUILD", [
"py_binary(",
" name = 'bin',",
" srcs = ['bin.py'],",
" args = [",
" '$(rlocationpath bar.txt)',",
" '$(rlocationpath @A//p:foo.txt)',",
" ],",
" data = [",
" 'bar.txt',",
" '@A//p:foo.txt'",
" ],",
" deps = ['@bazel_tools//tools/python/runfiles'],",
")",
])
self.ScratchFile(
"MODULE.bazel",
[
'bazel_dep(name = "rules_python", version = "0.40.0")',
"local_repository = use_repo_rule(",
' "@bazel_tools//tools/build_defs/repo:local.bzl",',
' "local_repository")',
'local_repository(name = "A", path = "A")',
],
)
self.ScratchFile(
"pkg/BUILD",
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
"py_binary(",
" name = 'bin',",
" srcs = ['bin.py'],",
" args = [",
" '$(rlocationpath bar.txt)',",
" '$(rlocationpath @A//p:foo.txt)',",
" ],",
" data = [",
" 'bar.txt',",
" '@A//p:foo.txt'",
" ],",
" deps = ['@bazel_tools//tools/python/runfiles'],",
")",
],
)
self.ScratchFile("pkg/bar.txt", ["Hello, Bazel!"])
self.ScratchFile("pkg/bin.py", [
"import sys",
@@ -296,10 +306,13 @@ def testRunfilesLibrariesFindRlocationpathExpansion(self):
self.assertEqual(stdout[1], "Hello, World!")

def setUpRunfilesDirectoryIncrementalityTest(self):
self.ScratchFile("MODULE.bazel")
self.ScratchFile(
"MODULE.bazel", ['bazel_dep(name = "rules_shell", version = "0.3.0")']
)
self.ScratchFile(
"BUILD",
[
'load("@rules_shell//shell:sh_test.bzl", "sh_test")',
"sh_test(",
" name = 'test',",
" srcs = ['test.sh'],",
@@ -418,10 +431,13 @@ def testRunfilesDirectoryIncrementalityNoBuildRunfileLinksEnableRunfilesFlippedO
self.assertNotEqual(exit_code, 0)

def testTestsRunWithNoBuildRunfileLinksAndNoEnableRunfiles(self):
self.ScratchFile("MODULE.bazel")
self.ScratchFile(
"MODULE.bazel", ['bazel_dep(name = "rules_shell", version = "0.3.0")']
)
self.ScratchFile(
"BUILD",
[
'load("@rules_shell//shell:sh_test.bzl", "sh_test")',
"sh_test(",
" name = 'test',",
" srcs = ['test.sh'],",
@@ -436,10 +452,13 @@ def testTestsRunWithNoBuildRunfileLinksAndNoEnableRunfiles(self):

def testWrappedShBinary(self):
self.writeWrapperRule()
self.ScratchFile("MODULE.bazel")
self.ScratchFile(
"MODULE.bazel", ['bazel_dep(name = "rules_shell", version = "0.3.0")']
)
self.ScratchFile(
"BUILD",
[
'load("@rules_shell//shell:sh_binary.bzl", "sh_binary")',
"sh_binary(",
" name = 'binary',",
" srcs = ['binary.sh'],",
@@ -466,6 +485,7 @@ def disabledWrappedPyBinary(self):
self.ScratchFile(
"BUILD",
[
'load("@rules_python//python:py_binary.bzl", "py_binary")',
"py_binary(",
" name = 'binary',",
" srcs = ['binary.py'],",
@@ -485,10 +505,13 @@ def disabledWrappedPyBinary(self):

def testWrappedJavaBinary(self):
self.writeWrapperRule()
self.ScratchFile("MODULE.bazel")
self.ScratchFile(
"MODULE.bazel", ['bazel_dep(name = "rules_java", version = "8.11.0")']
)
self.ScratchFile(
"BUILD",
[
'load("@rules_java//java:java_binary.bzl", "java_binary")',
"java_binary(",
" name = 'binary',",
" srcs = ['Binary.java'],",
@@ -518,26 +541,16 @@ def writeWrapperRule(self):
[
"def _wrapper_impl(ctx):",
" target = ctx.attr.target",
(
" original_executable ="
" target[DefaultInfo].files_to_run.executable"
),
(
" executable ="
" ctx.actions.declare_file(original_executable.basename)"
),
(
" ctx.actions.symlink(output = executable, target_file ="
" original_executable)"
),
(
" data_runfiles ="
" ctx.runfiles([executable]).merge(target[DefaultInfo].data_runfiles)"
),
(
" default_runfiles ="
" ctx.runfiles([executable]).merge(target[DefaultInfo].default_runfiles)"
),
" original_executable = (",
" target[DefaultInfo].files_to_run.executable)",
" executable = ctx.actions.declare_file(",
" original_executable.basename)",
" ctx.actions.symlink(output = executable,",
" target_file = original_executable)",
" data_runfiles = ctx.runfiles([executable]).merge(",
" target[DefaultInfo].data_runfiles)",
" default_runfiles = ctx.runfiles([executable]).merge(",
" target[DefaultInfo].default_runfiles)",
" return [",
" DefaultInfo(",
" executable = executable,",
2 changes: 2 additions & 0 deletions src/test/shell/bazel/BUILD
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@rules_shell//shell:sh_library.bzl", "sh_library")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
load("//:workspace_deps.bzl", "gen_workspace_stanza")
load("//src/tools/bzlmod:utils.bzl", "get_canonical_repo_name")

8 changes: 8 additions & 0 deletions src/test/shell/bazel/bazel_build_event_stream_test.sh
Original file line number Diff line number Diff line change
@@ -185,8 +185,10 @@ EOF
}

function test_residue_in_run_bep(){
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_binary(
name = 'arg',
srcs = ['arg.sh'],
@@ -221,8 +223,10 @@ EOF
}

function test_no_residue_in_run_bep(){
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_binary(
name = 'arg',
srcs = ['arg.sh'],
@@ -261,8 +265,10 @@ EOF


function test_residue_in_run_test_bep(){
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'arg',
srcs = ['arg_test.sh'],
@@ -297,8 +303,10 @@ EOF
}

function test_no_residue_in_run_test_bep(){
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'arg',
srcs = ['arg_test.sh'],
33 changes: 33 additions & 0 deletions src/test/shell/bazel/bazel_coverage_cc_test_gcc.sh
Original file line number Diff line number Diff line change
@@ -29,10 +29,17 @@ if [[ "${COVERAGE_GENERATOR_DIR}" != "released" ]]; then
add_to_bazelrc "build --override_repository=remote_coverage_tools=${COVERAGE_GENERATOR_DIR}"
fi

function set_up() {
add_rules_cc "MODULE.bazel"
}

# Writes the C++ source files and a corresponding BUILD file for which to
# collect code coverage. The sources are a.cc, a.h and t.cc.
function setup_a_cc_lib_and_t_cc_test() {
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["a.cc"],
@@ -137,6 +144,9 @@ function test_cc_test_coverage_gcov_virtual_includes() {
########### Setup source files and BUILD file ###########
mkdir -p examples/cpp
cat << EOF > examples/cpp/BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a_header",
hdrs = ["foo/bar/baz/a_header.h"],
@@ -279,6 +289,9 @@ function test_cc_test_gcov_multiple_headers() {
############## Setting up the test sources and BUILD file ##############
mkdir -p "coverage_srcs/"
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["coverage_srcs/a.cc"],
@@ -383,6 +396,9 @@ function test_cc_test_gcov_multiple_headers_instrument_test_target() {
############## Setting up the test sources and BUILD file ##############
mkdir -p "coverage_srcs/"
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["coverage_srcs/a.cc"],
@@ -492,6 +508,9 @@ function test_cc_test_gcov_same_header_different_libs() {
############## Setting up the test sources and BUILD file ##############
mkdir -p "coverage_srcs/"
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["coverage_srcs/a.cc"],
@@ -654,6 +673,9 @@ function test_cc_test_gcov_same_header_different_libs_multiple_exec() {
############## Setting up the test sources and BUILD file ##############
mkdir -p "coverage_srcs/"
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["coverage_srcs/a.cc"],
@@ -845,6 +867,9 @@ function test_failed_coverage() {
fi

cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["a.cc"],
@@ -924,6 +949,8 @@ function test_coverage_doesnt_fail_on_empty_output() {
}
EOF
cat << EOF > empty_cov/BUILD
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_test(
name = "empty-cov-test",
srcs = ["t.cc"]
@@ -943,8 +970,11 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_cc "MODULE.bazel"

cat > BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
cc_library(
name = "b",
srcs = ["b.cc"],
@@ -971,6 +1001,9 @@ EOF
touch other_repo/REPO.bazel

cat > other_repo/BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["a.cc"],
21 changes: 21 additions & 0 deletions src/test/shell/bazel/bazel_coverage_cc_test_llvm.sh
Original file line number Diff line number Diff line change
@@ -29,6 +29,10 @@ if [[ "${COVERAGE_GENERATOR_DIR}" != "released" ]]; then
add_to_bazelrc "build --override_repository=remote_coverage_tools=${COVERAGE_GENERATOR_DIR}"
fi

function set_up() {
add_rules_cc "MODULE.bazel"
}

# Configures Bazel to emit coverage using LLVM tools, returning a non-zero exit
# code if the tools are not available.
function setup_llvm_coverage_tools_for_lcov() {
@@ -67,6 +71,9 @@ function setup_llvm_coverage_tools_for_lcov() {
# collect code coverage. The sources are a.cc, a.h and t.cc.
function setup_a_cc_lib_and_t_cc_test() {
cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["a.cc"],
@@ -201,8 +208,13 @@ end_of_record"

function test_cc_test_with_runtime_objects_not_in_runfiles() {
setup_llvm_coverage_tools_for_lcov || return 0
add_rules_java "MODULE.bazel"

cat << EOF > BUILD
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
cc_test(
name = "main",
srcs = ["main.cpp"],
@@ -265,8 +277,11 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_cc "MODULE.bazel"

cat > BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
cc_library(
name = "b",
srcs = ["b.cc"],
@@ -424,6 +439,9 @@ function test_coverage_with_tmp_in_path() {

mkdir -p foo/tmp
cat > foo/tmp/BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "a",
srcs = ["a.cc"],
@@ -494,6 +512,9 @@ function test_coverage_for_header() {
setup_llvm_coverage_tools_for_lcov || return 0

cat << EOF > BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_library(
name = "foo",
srcs = ["foo.cc"],
49 changes: 49 additions & 0 deletions src/test/shell/bazel/bazel_coverage_java_test.sh
Original file line number Diff line number Diff line change
@@ -42,9 +42,15 @@ if [[ $# -gt 0 ]]; then
add_to_bazelrc "build --tool_java_runtime_version=${JAVA_RUNTIME_VERSION}"
fi

function set_up() {
add_rules_java "MODULE.bazel"
}

function test_java_test_coverage() {
cat <<EOF > BUILD
load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolchain")
load("@rules_java//java:java_test.bzl", "java_test")
load("@rules_java//java:java_library.bzl", "java_library")
java_test(
name = "test",
@@ -139,6 +145,9 @@ end_of_record"
function test_java_test_coverage_combined_report() {

cat <<EOF > BUILD
load("@rules_java//java:java_library.bzl", "java_library")
load("@rules_java//java:java_test.bzl", "java_test")
java_test(
name = "test",
srcs = glob(["src/test/**/*.java"]),
@@ -228,6 +237,10 @@ end_of_record"
function test_java_test_java_import_coverage() {

cat <<EOF > BUILD
load("@rules_java//java:java_test.bzl", "java_test")
load("@rules_java//java:java_import.bzl", "java_import")
load("@rules_java//java:java_library.bzl", "java_library")
java_test(
name = "test",
srcs = glob(["src/test/**/*.java"]),
@@ -319,6 +332,8 @@ function test_run_jar_in_subprocess_empty_env() {
mkdir -p java/cov
mkdir -p javatests/cov
cat >java/cov/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
package(default_visibility=['//visibility:public'])
java_binary(name = 'Cov',
main_class = 'cov.Cov',
@@ -341,6 +356,7 @@ public class Cov {
EOF

cat >javatests/cov/BUILD <<EOF
load("@rules_java//java:java_test.bzl", "java_test")
java_test(name = 'CovTest',
srcs = ['CovTest.java'],
data = ['//java/cov:Cov_deploy.jar'],
@@ -409,6 +425,9 @@ function test_runtime_deploy_jar() {
mkdir -p java/cov
mkdir -p javatests/cov
cat >java/cov/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_java//java:java_library.bzl", "java_library")
package(default_visibility=['//visibility:public'])
java_binary(
name = 'RandomBinary',
@@ -447,6 +466,8 @@ public class Cov {
EOF

cat >javatests/cov/BUILD <<EOF
load("@rules_java//java:java_test.bzl", "java_test")
java_test(name = 'CovTest',
srcs = ['CovTest.java'],
deps = ['//java/cov:Cov'],
@@ -478,6 +499,8 @@ function test_runtime_and_data_deploy_jars() {
mkdir -p java/cov
mkdir -p javatests/cov
cat >java/cov/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
package(default_visibility=['//visibility:public'])
java_binary(
name = 'RandomBinary',
@@ -517,6 +540,8 @@ public class Cov {
EOF

cat >javatests/cov/BUILD <<EOF
load("@rules_java//java:java_test.bzl", "java_test")
java_test(name = 'CovTest',
srcs = ['CovTest.java'],
data = ['//java/cov:Cov_deploy.jar'],
@@ -622,6 +647,9 @@ function test_java_coverage_with_classpath_jar() {
# Verifies the logic in JacocoCoverageRunner can unpack the classpath jar
# created when the classpath is too long.
cat <<EOF > BUILD
load("@rules_java//java:java_library.bzl", "java_library")
load("@rules_java//java:java_test.bzl", "java_test")
java_library(
name = "lib",
srcs = ["src/main/java/lib/Lib.java"],
@@ -686,6 +714,10 @@ LF:2"

function test_java_coverage_with_classpath_and_data_jar() {
cat <<EOF > BUILD
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_java//java:java_test.bzl", "java_test")
load("@rules_java//java:java_library.bzl", "java_library")
java_binary(
name = "foo",
srcs = ["src/main/java/foo/Foo.java"],
@@ -784,6 +816,9 @@ function test_java_string_switch_coverage() {
# (because a switch on String::hashCode is made first) - these branches should
# be filtered.
cat <<EOF > BUILD
load("@rules_java//java:java_test.bzl", "java_test")
load("@rules_java//java:java_library.bzl", "java_library")
java_test(
name = "test",
srcs = glob(["src/test/**/*.java"]),
@@ -876,6 +911,9 @@ function test_finally_block_branch_coverage() {
# may enter them (e.g. via an exception handler or when no exception is
# thrown).
cat <<EOF > BUILD
load("@rules_java//java:java_test.bzl", "java_test")
load("@rules_java//java:java_library.bzl", "java_library")
java_test(
name = "test",
srcs = glob(["src/test/**/*.java"]),
@@ -1081,7 +1119,10 @@ function test_java_test_coverage_cc_binary() {
fi

########### Setup source files and BUILD file ###########
add_rules_cc "MODULE.bazel"
cat <<EOF > BUILD
load("@rules_java//java:java_test.bzl", "java_test")
java_test(
name = "NumJava",
srcs = ["NumJava.java"],
@@ -1103,6 +1144,9 @@ EOF
mkdir -p examples/cpp

cat <<EOF > examples/cpp/BUILD
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
package(default_visibility = ["//visibility:public"])
cc_binary(
@@ -1227,6 +1271,8 @@ local_repository(
EOF

cat > BUILD <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
java_library(
name = "math",
srcs = ["src/main/com/example/Math.java"],
@@ -1250,6 +1296,9 @@ EOF
touch other_repo/REPO.bazel

cat > other_repo/BUILD <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
load("@rules_java//java:java_test.bzl", "java_test")
java_library(
name = "collatz",
srcs = ["src/main/com/example/Collatz.java"],
2 changes: 2 additions & 0 deletions src/test/shell/bazel/bazel_example_test.sh
Original file line number Diff line number Diff line change
@@ -55,6 +55,8 @@ function set_up() {
module(name="io_bazel")
EOF
add_rules_java "MODULE.bazel"
add_rules_python "MODULE.bazel"
add_rules_shell "MODULE.bazel"
}

#
3 changes: 2 additions & 1 deletion src/test/shell/bazel/bazel_hermetic_sandboxing_test.sh
Original file line number Diff line number Diff line change
@@ -63,6 +63,7 @@ function set_up {

sed -i.bak '/sandbox_tmpfs_path/d' $TEST_TMPDIR/bazelrc

add_rules_python "MODULE.bazel"
mkdir -p examples/hermetic

cat << 'EOF' > examples/hermetic/unknown_file.txt
@@ -95,7 +96,7 @@ import import_module
EOF

cat << 'EOF' > examples/hermetic/BUILD
load("@rules_python//python:py_test.bzl", "py_test")
load(
"test.bzl",
"overwrite_via_symlink",
98 changes: 98 additions & 0 deletions src/test/shell/bazel/bazel_java_test.sh

Large diffs are not rendered by default.

39 changes: 31 additions & 8 deletions src/test/shell/bazel/bazel_java_test_defaults.sh
Original file line number Diff line number Diff line change
@@ -55,17 +55,17 @@ esac
# Java source files version shall match --java_language_version_flag version.
# Output class files shall be created in corresponding version (JDK 8, class version is 52).
function test_default_java_toolchain_target_version() {
add_rules_java "MODULE.bazel"
mkdir -p java/main
cat >java/main/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolchain")
java_binary(
name = 'JavaBinary',
srcs = ['JavaBinary.java'],
main_class = 'JavaBinary',
)
load(
"@bazel_tools//tools/jdk:default_java_toolchain.bzl",
"default_java_toolchain",
)
default_java_toolchain(
name = "default_toolchain",
source_version = "8",
@@ -95,8 +95,10 @@ EOF
# Java source files version shall match --java_language_version_flag version.
# Output class files shall be created in corresponding version (JDK 11, class version is 55).
function test_java_language_version_output_classes() {
add_rules_java "MODULE.bazel"
mkdir -p java/main
cat >java/main/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
java_binary(
name = 'JavaBinary',
srcs = ['JavaBinary.java'],
@@ -130,17 +132,18 @@ EOF

# When coverage is requested with no Jacoco configured, an error shall be reported.
function test_tools_jdk_toolchain_nojacocorunner() {
add_rules_java "MODULE.bazel"
mkdir -p java/main
cat >java/main/BUILD <<EOF
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolchain")
java_binary(
name = 'JavaBinary',
srcs = ['JavaBinary.java'],
main_class = 'JavaBinary',
)
load(
"@bazel_tools//tools/jdk:default_java_toolchain.bzl",
"default_java_toolchain",
)
default_java_toolchain(
name = "default_toolchain",
jacocorunner = None,
@@ -251,11 +254,15 @@ register_toolchains(
"//pkg:bootstrap_runtime",
)
EOF
add_rules_cc "MODULE.bazel"
mkdir -p pkg
# Choose a platform with a registered JDK, but for which no registered C++ toolchain can compile, to
# verify that java_binary doesn't have a mandatory dependency on a C++ toolchain. The particular
# architecture of the fake registered JDK doesn't matter as it won't be executed.
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_binary.bzl", "java_binary")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
constraint_setting(
name = "exotic_constraint",
)
@@ -307,8 +314,11 @@ EOF
}

function test_java_library_compiles_for_any_platform_with_local_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
platform(name = "exotic_platform")
java_library(
name = "foo",
@@ -330,8 +340,11 @@ EOF
}

function test_java_library_compiles_for_any_platform_with_remote_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
platform(name = "exotic_platform")
java_library(
name = "foo",
@@ -353,8 +366,10 @@ EOF
}

function test_non_executable_java_binary_compiles_for_any_platform_with_local_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_binary.bzl", "java_binary")
platform(name = "exotic_platform")
java_binary(
name = "foo",
@@ -379,8 +394,10 @@ EOF
}

function test_non_executable_java_binary_compiles_for_any_platform_with_remote_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_binary.bzl", "java_binary")
platform(name = "exotic_platform")
java_binary(
name = "foo",
@@ -406,8 +423,11 @@ EOF
}

function test_executable_java_binary_fails_without_runtime_with_local_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_binary.bzl", "java_binary")
platform(name = "exotic_platform")
java_binary(
name = "foo",
@@ -437,8 +457,11 @@ EOF
}

function test_executable_java_binary_fails_without_runtime_with_remote_jdk() {
add_rules_java "MODULE.bazel"
mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_java//java:java_binary.bzl", "java_binary")
platform(name = "exotic_platform")
java_binary(
name = "foo",
3 changes: 3 additions & 0 deletions src/test/shell/bazel/bazel_localtest_test.sh
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ source "${CURRENT_DIR}/../integration_test_setup.sh" \
|| { echo "integration_test_setup.sh not found!" >&2; exit 1; }

function test_run_local() {
add_rules_shell "MODULE.bazel"
mkdir -p dir
cat > emptyfile

@@ -37,6 +38,8 @@ EOF
chmod +x dir/test_local.sh

cat <<EOF > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "localtest",
srcs = [ "test_local.sh" ],
35 changes: 31 additions & 4 deletions src/test/shell/bazel/bazel_proto_library_test.sh
Original file line number Diff line number Diff line change
@@ -60,8 +60,8 @@ function write_setup() {
fi

cat > x/person/BUILD << EOF
package(default_visibility = ["//visibility:public"])
$include_macro
package(default_visibility = ["//visibility:public"])
$proto_library_name(
name = "person_proto",
srcs = ["person.proto"],
@@ -304,6 +304,9 @@ function write_java_library() {
# should depend on x/foo:foo
mkdir -p java/com/google/src
cat > java/com/google/src/BUILD << EOF
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
load("@rules_java//java:java_library.bzl", "java_library")
java_library(
name = "top",
srcs = ["A.java"],
@@ -338,6 +341,8 @@ EOF
function test_legacy_proto_library_include_well_known_protos() {
mkdir -p a
cat > a/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
proto_library(
name="a",
srcs=["a.proto"],
@@ -386,6 +391,9 @@ function test_javainfo_proto_aspect() {
touch java/proto/my.proto
cat > java/proto/BUILD << EOF
load(':my_rule_with_aspect.bzl', 'my_rule_with_aspect')
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
my_rule_with_aspect(
name = 'my_rule',
deps = [':my_java_proto']
@@ -441,13 +449,13 @@ EOF
}

function test_strip_import_prefix() {
write_setup "proto_library" "strip_import_prefix = '/x/person'" ""
write_setup "proto_library" "strip_import_prefix = '/x/person'" 'load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")'
bazel build --verbose_failures //x/person:person_proto > "$TEST_log" || fail "Expected success"
}

function test_strip_import_prefix_fails() {
# Don't specify the "strip_import_prefix" attribute and expect failure.
write_setup "proto_library" "" ""
write_setup "proto_library" "" 'load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")'
bazel build //x/person:person_proto >& "$TEST_log" && fail "Expected failure"
expect_log "phonenumber/phonenumber.proto: File not found."
}
@@ -461,7 +469,7 @@ function test_strip_import_prefix_macro() {
# Fails with "IllegalArgumentException: external/lcocal_jdk in
# DumpPlatformClassPath.dumpJDK9AndNewerBootClassPath.java:67
function DISABLED_test_strip_import_prefix_with_java_library() {
write_setup "proto_library" "strip_import_prefix = '/x/person'" ""
write_setup "proto_library" "strip_import_prefix = '/x/person'" 'load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")'
write_java_library
bazel build //java/com/google/src:top \
--strict_java_deps=off > "$TEST_log" || fail "Expected success"
@@ -493,9 +501,13 @@ EOF
}

function test_cc_proto_library() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
proto_library(name='p', srcs=['p.proto'])
cc_proto_library(name='cp', deps=[':p'])
cc_library(name='c', srcs=['c.cc'], deps=[':cp'])
@@ -521,9 +533,14 @@ EOF
}

function test_cc_proto_library_with_toolchain_resolution() {
add_rules_cc MODULE.bazel

mkdir -p a
cat > a/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
proto_library(name='p', srcs=['p.proto'])
cc_proto_library(name='cp', deps=[':p'])
cc_library(name='c', srcs=['c.cc'], deps=[':cp'])
@@ -549,9 +566,13 @@ EOF
}

function test_cc_proto_library_import_prefix_stripping() {
add_rules_cc MODULE.bazel
mkdir -p a/dir
cat > a/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
proto_library(name='p', srcs=['dir/p.proto'], strip_import_prefix='/a')
cc_proto_library(name='cp', deps=[':p'])
cc_library(name='c', srcs=['c.cc'], deps=[':cp'])
@@ -633,6 +654,9 @@ EOF
mkdir -p h
cat > h/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
proto_library(
name = "h",
srcs = ["h.proto"],
@@ -746,6 +770,9 @@ EOF
mkdir -p h
cat > h/BUILD <<EOF
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
proto_library(
name = "h",
srcs = ["h.proto"],
3 changes: 3 additions & 0 deletions src/test/shell/bazel/bazel_random_characters_test.sh
Original file line number Diff line number Diff line change
@@ -49,11 +49,14 @@ export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

function basic_glob_scenario_test_template() {
add_rules_java MODULE.bazel
local chars="$1"
local pkg="pkg${chars}"
echo "chars = ${chars}, pkg = ${pkg}"
mkdir -p "${pkg}/resources"
cat >"${pkg}/BUILD" <<EOF
load("@rules_java//java:java_library.bzl", "java_library")
java_library(name = 'main',
resources = glob(["resources/**"]),
srcs = ['Main.java'])
5 changes: 4 additions & 1 deletion src/test/shell/bazel/bazel_rules_java_override_test.sh
Original file line number Diff line number Diff line change
@@ -51,6 +51,8 @@ RULES_JAVA_REPO_NAME=$(cat "$(rlocation io_bazel/src/test/shell/bazel/RULES_JAVA

function setup_java_library_target() {
cat > BUILD <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
java_library(
name = "math",
srcs = ["src/main/com/example/Math.java"],
@@ -72,7 +74,7 @@ EOF
}

function test_override_with_empty_java_tools_fails() {

add_rules_java "MODULE.bazel"
touch emptyfile
zip -q "${RUNFILES_DIR}/empty.zip" emptyfile

@@ -86,6 +88,7 @@ function test_override_with_empty_java_tools_fails() {
}

function test_build_without_override_succeeds() {
add_rules_java "MODULE.bazel"
override_java_tools "${RULES_JAVA_REPO_NAME}" "released" "released"

setup_java_library_target
2 changes: 2 additions & 0 deletions src/test/shell/bazel/bazel_rules_java_test.sh
Original file line number Diff line number Diff line change
@@ -68,6 +68,8 @@ function test_java_library_extension_support() {
cat >java/java_library.bzl <<EOF
load("@rules_java//java/common/rules/impl:bazel_java_library_impl.bzl", "bazel_java_library_rule")
load("@rules_java//java/common/rules:java_library.bzl", "JAVA_LIBRARY_ATTRS")
load("@rules_java//java/common:java_info.bzl", "JavaInfo")
def _impl(ctx):
return bazel_java_library_rule(
ctx,
44 changes: 44 additions & 0 deletions src/test/shell/bazel/bazel_rules_test.sh
Original file line number Diff line number Diff line change
@@ -60,8 +60,11 @@ msys*)
esac

function test_sh_test() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
package(default_visibility = ["//visibility:public"])
sh_test(
name = 'success_test',
@@ -95,6 +98,8 @@ EOF
}

function test_extra_action() {
add_rules_shell "MODULE.bazel"
add_rules_java "MODULE.bazel"
mkdir -p mypkg
# Make a program to run on each action that just prints the path to the extra
# action file. This file is a proto, but I don't want to bother implementing
@@ -142,6 +147,9 @@ EOF
touch mypkg/runfile

cat > mypkg/BUILD <<EOF
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("@rules_java//java:java_library.bzl", "java_library")
package(default_visibility = ["//visibility:public"])
extra_action(
@@ -177,8 +185,11 @@ EOF
}

function test_with_arguments() {
add_rules_shell "MODULE.bazel"
mkdir -p mypkg
cat > mypkg/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "expected_arg_test",
srcs = ["check_expected_argument.sh"],
@@ -203,7 +214,9 @@ EOF
}

function test_top_level_test() {
add_rules_shell "MODULE.bazel"
cat > BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "trivial_test",
srcs = ["true.sh"],
@@ -222,8 +235,12 @@ EOF
# Regression test for https://github.com/bazelbuild/bazel/issues/67
# C++ library depedending on C++ library fails to compile on Darwin
function test_cpp_libdeps() {
add_rules_cc "MODULE.bazel"
mkdir -p pkg
cat <<'EOF' >pkg/BUILD
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
cc_library(
name = "a",
srcs = ["a.cc"],
@@ -323,10 +340,13 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_shell "MODULE.bazel"
mkdir other_repo && cd other_repo
touch REPO.bazel
mkdir package
cat > package/BUILD <<EOF
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
genrule(
name = "abs_dep",
srcs = ["//package:in"],
@@ -394,9 +414,12 @@ EOF
}

function test_build_python_zip_with_python_binary_as_data() {
add_rules_python "MODULE.bazel"
mkdir py
touch py/data.txt
cat > py/BUILD <<EOF
load("@rules_python//python:py_binary.bzl", "py_binary")
py_binary(name = "bin", srcs = ["bin.py"], data = ["data.txt"])
py_binary(name = "bin2", srcs = ["bin2.py"], data = [":bin"])
EOF
@@ -652,9 +675,14 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_shell "MODULE.bazel"

mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("@rules_shell//shell:sh_library.bzl", "sh_library")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_library(
name = "library",
srcs = ["library.sh"],
@@ -748,6 +776,10 @@ EOF

mkdir -p other_repo/pkg
cat > other_repo/pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_library.bzl", "sh_library")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_library(
name = "library2",
srcs = ["library2.sh"],
@@ -1004,9 +1036,12 @@ function test_bash_runfiles_current_repository_test_nobuild_runfile_links() {

function test_bash_runfiles_current_repository_action_binary_main_repo() {
setup_module_dot_bazel "MODULE.bazel"
add_rules_shell "MODULE.bazel"

mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
genrule(
name = "gen",
outs = ["out"],
@@ -1047,9 +1082,12 @@ EOF

function test_bash_runfiles_current_repository_action_generated_binary_main_repo() {
setup_module_dot_bazel "MODULE.bazel"
add_rules_shell "MODULE.bazel"

mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
genrule(
name = "gen",
outs = ["out"],
@@ -1103,6 +1141,7 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_shell "MODULE.bazel"

mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
@@ -1119,6 +1158,8 @@ EOF

mkdir -p other_repo/pkg
cat > other_repo/pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_binary(
name = "binary",
srcs = ["binary.sh"],
@@ -1158,6 +1199,7 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_shell "MODULE.bazel"

mkdir -p pkg
cat > pkg/BUILD.bazel <<'EOF'
@@ -1174,6 +1216,8 @@ EOF

mkdir -p other_repo/pkg
cat > other_repo/pkg/BUILD.bazel <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
genrule(
name = "copy_binary",
outs = ["gen_binary.sh"],
12 changes: 11 additions & 1 deletion src/test/shell/bazel/bazel_sandboxing_test.sh
Original file line number Diff line number Diff line change
@@ -132,11 +132,14 @@ function test_can_enable_pseudoterminals() {
return 0
fi

add_rules_python "MODULE.bazel"
cat > test.py <<'EOF'
import pty
pty.openpty()
EOF
cat > BUILD <<'EOF'
load("@rules_python//python:py_test.bzl", "py_test")
py_test(
name = "test",
srcs = ["test.py"],
@@ -179,7 +182,7 @@ EOF
}

function test_sandbox_expands_tree_artifacts_in_runfiles_tree() {

add_rules_shell "MODULE.bazel"
cat > def.bzl <<'EOF'
def _mkdata_impl(ctx):
out = ctx.actions.declare_directory(ctx.label.name + ".d")
@@ -217,6 +220,7 @@ EOF

cat > BUILD <<'EOF'
load("//:def.bzl", "mkdata")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
mkdata(name = "mkdata")
@@ -325,8 +329,11 @@ EOF
function setup_tmp_hermeticity_check() {
local -r tmpdir=$1

add_rules_cc "MODULE.bazel"
mkdir -p test
cat > test/BUILD <<'EOF'
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
cc_binary(
name = "create_file",
srcs = ["create_file.cc"],
@@ -706,8 +713,11 @@ function test_hermetic_tmp_under_tmp {
local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")
local_repository(name="repo", path="${temp_dir}/repo")
EOF
add_rules_shell "MODULE.bazel"

cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
genrule(
name = "g",
outs = ["go"],
2 changes: 2 additions & 0 deletions src/test/shell/bazel/bazel_symlink_test.sh
Original file line number Diff line number Diff line change
@@ -70,6 +70,7 @@ function expect_symlink() {
}

function set_up() {
add_rules_python "MODULE.bazel"
mkdir -p symlink
touch symlink/BUILD
cat > symlink/symlink.bzl <<EOF
@@ -98,6 +99,7 @@ EOF
# Windows.
mkdir -p symlink_helper
cat > symlink_helper/BUILD <<EOF
load("@rules_python//python:py_binary.bzl", "py_binary")
py_binary(
name = "symlink_helper",
srcs = ["symlink_helper.py"],
75 changes: 72 additions & 3 deletions src/test/shell/bazel/bazel_test_test.sh
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@ function set_up_jobcount() {
# test runs.
touch ${tmp}/counter

add_rules_shell "MODULE.bazel"
mkdir -p dir

cat <<EOF > dir/test.sh
@@ -55,6 +56,8 @@ EOF
chmod +x dir/test.sh

cat <<EOF > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -83,13 +86,16 @@ function test_3_local_jobs() {

# TODO(#2228): Re-enable when the tmpdir creation is fixed.
function DISABLED_test_tmpdir() {
add_rules_shell "MODULE.bazel"
mkdir -p foo
cat > foo/bar_test.sh <<'EOF'
#!/bin/sh
echo TEST_TMPDIR=$TEST_TMPDIR
EOF
chmod +x foo/bar_test.sh
cat > foo/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "bar_test",
srcs = ["bar_test.sh"],
@@ -119,6 +125,7 @@ EOF
}

function test_env_vars() {
add_rules_shell "MODULE.bazel"
mkdir -p foo
cat > foo/testenv.sh <<'EOF'
#!/bin/sh
@@ -128,6 +135,8 @@ echo "ws: $TEST_WORKSPACE"
EOF
chmod +x foo/testenv.sh
cat > foo/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "foo",
srcs = ["testenv.sh"],
@@ -141,6 +150,7 @@ EOF
}

function test_env_vars_override() {
add_rules_shell "MODULE.bazel"
mkdir -p foo
cat > foo/testenv.sh <<'EOF'
#!/bin/sh
@@ -152,6 +162,7 @@ echo "ws: $TEST_WORKSPACE"
EOF
chmod +x foo/testenv.sh
cat > foo/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "foo",
srcs = ["testenv.sh"],
@@ -207,6 +218,7 @@ function test_runfiles_python_runfiles_merges_env_vars() {

# Usage: runfiles_merges_runfiles_env_vars overridden unchanged
function runfiles_merges_runfiles_env_vars() {
add_rules_shell "MODULE.bazel"
local -r overridden=$1
local -r unchanged=$2
mkdir -p foo
@@ -216,7 +228,10 @@ echo "JAVA_RUNFILES: ${JAVA_RUNFILES}"
echo "PYTHON_RUNFILES: ${PYTHON_RUNFILES}"
EOF
chmod +x foo/foo.sh
echo 'sh_test(name = "foo", srcs = ["foo.sh"])' > foo/BUILD
cat > foo/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(name = "foo", srcs = ["foo.sh"])
EOF

bazel test --test_env="${overridden}"=override --test_output=all \
//foo >& "${TEST_log}" || fail "Test failed"
@@ -228,6 +243,7 @@ EOF
function test_run_under_external_label_with_options() {
mkdir -p testing run || fail "mkdir testing run failed"
cat <<EOF > run/BUILD
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_binary(
name='under', srcs=['under.sh'],
visibility=["//visibility:public"],
@@ -249,6 +265,7 @@ EOF
chmod u+x testing/passing_test.sh

cat <<EOF > testing/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "passing_test" ,
srcs = [ "passing_test.sh" ])
@@ -261,6 +278,7 @@ local_repository(
path = "./run",
)
EOF
add_rules_shell "MODULE.bazel"

bazel test //testing:passing_test --run_under='@run//:under -c' \
--test_output=all >& $TEST_log || fail "Expected success"
@@ -271,8 +289,10 @@ EOF
}

function test_run_under_label_with_options() {
add_rules_shell "MODULE.bazel"
mkdir -p testing run || fail "mkdir testing run failed"
cat <<EOF > run/BUILD
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
sh_binary(
name='under', srcs=['under.sh'],
visibility=["//visibility:public"],
@@ -292,6 +312,7 @@ EOF
chmod u+x testing/passing_test.sh

cat <<EOF > testing/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "passing_test" ,
srcs = [ "passing_test.sh" ])
@@ -307,8 +328,12 @@ EOF
# This test uses "--ignore_all_rc_files" since outside .bazelrc files can pollute
# this environment. Just "--bazelrc=/dev/null" is not sufficient to fix.
function test_run_under_path() {
add_rules_shell "MODULE.bazel"
mkdir -p testing || fail "mkdir testing failed"
echo "sh_test(name='t1', srcs=['t1.sh'])" > testing/BUILD
cat > testing/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(name='t1', srcs=['t1.sh'])
EOF
cat <<EOF > testing/t1.sh
#!/bin/sh
exit 0
@@ -372,10 +397,12 @@ local_repository(
path = "../run",
)
EOF
add_rules_shell "MODULE.bazel"

mkdir -p testing || fail "mkdir testing failed"

cat <<EOF > testing/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "passing_test" ,
srcs = [ "passing_test.sh" ])
@@ -396,6 +423,7 @@ EOF
}

function test_test_timeout() {
add_rules_shell "MODULE.bazel"
mkdir -p dir

cat <<EOF > dir/test.sh
@@ -408,6 +436,8 @@ EOF
chmod +x dir/test.sh

cat <<EOF > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
timeout = "short",
@@ -430,6 +460,7 @@ function test_runs_per_test_detects_flakes() {
# Directory for counters
local COUNTER_DIR="${TEST_TMPDIR}/counter_dir"
mkdir -p "${COUNTER_DIR}"
add_rules_shell "MODULE.bazel"

for (( i = 1 ; i <= 5 ; i++ )); do

@@ -448,6 +479,8 @@ exit \$((i != $i))
EOF
chmod +x test$i.sh
cat <<EOF > BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(name = "test$i", srcs = [ "test$i.sh" ])
EOF
bazel test --spawn_strategy=standalone \
@@ -462,7 +495,7 @@ EOF
# Tests that the test.xml is extracted from the sandbox correctly.
function test_xml_is_present() {
mkdir -p dir

add_rules_shell "MODULE.bazel"
cat <<'EOF' > dir/test.sh
#!/bin/sh
echo HELLO > $XML_OUTPUT_FILE
@@ -472,6 +505,8 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -486,6 +521,7 @@ EOF

function write_test_xml_timeout_files() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

cat <<'EOF' > dir/test.sh
#!/bin/bash
@@ -504,6 +540,8 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -560,6 +598,7 @@ function test_xml_is_present_when_timingout_split_xml() {
# Tests that the test.xml and test.log are correct and the test does not
# hang when the test launches a subprocess.
function test_subprocess_non_timeout() {
add_rules_shell "MODULE.bazel"
mkdir -p dir

cat <<'EOF' > dir/test.sh
@@ -572,6 +611,8 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
timeout = "short",
@@ -594,6 +635,7 @@ EOF

# Check that fallback xml output is correctly generated for sharded tests.
function test_xml_fallback_for_sharded_test() {
add_rules_shell "MODULE.bazel"
mkdir -p dir

cat <<'EOF' > dir/test.sh
@@ -605,6 +647,8 @@ EOF
chmod +x dir/test.sh

cat <<EOF > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -649,6 +693,7 @@ EOF

function test_always_xml_output() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

cat <<EOF > dir/success.sh
#!/bin/sh
@@ -662,6 +707,8 @@ EOF
chmod +x dir/{success,fail}.sh

cat <<EOF > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "success",
srcs = [ "success.sh" ],
@@ -731,7 +778,9 @@ function test_detailed_test_summary_for_passed_test() {
# This test uses "--ignore_all_rc_files" since outside .bazelrc files can pollute
# this environment. Just "--bazelrc=/dev/null" is not sufficient to fix.
function test_flaky_test() {
add_rules_shell "MODULE.bazel"
cat >BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(name = "flaky", flaky = True, srcs = ["flaky.sh"])
sh_test(name = "pass", flaky = True, srcs = ["true.sh"])
sh_test(name = "fail", flaky = True, srcs = ["false.sh"])
@@ -807,6 +856,7 @@ EOF

function setup_undeclared_outputs_test() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

cat <<'EOF' > dir/test.sh
#!/bin/bash
@@ -829,6 +879,7 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = ["test.sh"],
@@ -973,6 +1024,7 @@ function test_undeclared_outputs_unzipped_then_zipped() {

function test_undeclared_outputs_annotations_are_added() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

cat <<'EOF' > dir/test.sh
#!/bin/sh
@@ -985,6 +1037,8 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -1009,6 +1063,7 @@ diff expected_annotations "$annotations" > d || fail "$annotations differs from

function test_no_zip_annotation_manifest_when_no_undeclared_outputs() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

cat <<'EOF' > dir/test.sh
#!/bin/sh
@@ -1019,6 +1074,8 @@ EOF
chmod +x dir/test.sh

cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = [ "test.sh" ],
@@ -1038,10 +1095,12 @@ EOF

function test_test_with_nobuild_runfile_manifests() {
mkdir -p dir
add_rules_shell "MODULE.bazel"

touch dir/test.sh
chmod u+x dir/test.sh
cat <<'EOF' > dir/BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'test',
srcs = ['test.sh'],
@@ -1059,10 +1118,12 @@ local_repository(
path = "./a",
)
EOF
add_rules_python "MODULE.bazel"

mkdir -p a
touch a/REPO.bazel
cat <<'EOF' > a/BUILD
load("@rules_python//python:py_test.bzl", "py_test")
py_test(
name = 'x',
srcs = ['x.py'],
@@ -1079,7 +1140,10 @@ EOF
}

function test_xml_output_format() {
add_rules_python "MODULE.bazel"

cat <<'EOF' > BUILD
load("@rules_python//python:py_test.bzl", "py_test")
py_test(
name = 'x',
srcs = ['x.py'],
@@ -1096,7 +1160,10 @@ EOF
}

function test_shard_status_file_checked() {
add_rules_shell "MODULE.bazel"
cat <<'EOF' > BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'x',
srcs = ['x.sh'],
@@ -1118,7 +1185,9 @@ EOF
}

function test_premature_exit_file_checked() {
add_rules_shell "MODULE.bazel"
cat <<'EOF' > BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'x',
srcs = ['x.sh'],
Original file line number Diff line number Diff line change
@@ -425,8 +425,10 @@ EOF
}

function test_upload_minimal_upload_testlogs() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'test',
srcs = ['test.sh'],
@@ -451,8 +453,10 @@ EOF
}

function test_upload_all_upload_testlogs() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'test',
srcs = ['test.sh'],
7 changes: 7 additions & 0 deletions src/test/shell/bazel/remote/remote_execution_http_test.sh
Original file line number Diff line number Diff line change
@@ -73,8 +73,10 @@ EOF
}

function test_cc_binary_http_cache() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
package(default_visibility = ["//visibility:public"])
cc_binary(
name = 'test',
@@ -106,8 +108,11 @@ EOF
}

function test_cc_binary_http_cache_bad_server() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
package(default_visibility = ["//visibility:public"])
cc_binary(
name = 'test',
@@ -139,6 +144,7 @@ EOF
}

function set_directory_artifact_starlark_testfixtures() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/rule.bzl <<'EOF'
def _gen_output_dir_impl(ctx):
@@ -169,6 +175,7 @@ gen_output_dir = rule(
)
EOF
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
package(default_visibility = ["//visibility:public"])
load("//a:rule.bzl", "gen_output_dir")
65 changes: 64 additions & 1 deletion src/test/shell/bazel/remote/remote_execution_test.sh
Original file line number Diff line number Diff line change
@@ -307,8 +307,10 @@ EOF
}

function test_cc_binary() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
package(default_visibility = ["//visibility:public"])
cc_binary(
name = 'test',
@@ -334,8 +336,10 @@ EOF
}

function test_cc_test() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_test(
name = 'test',
@@ -356,8 +360,10 @@ EOF
}

function test_cc_test_split_xml() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_test(
name = 'test',
@@ -378,8 +384,10 @@ EOF
}

function test_cc_binary_grpc_cache() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
package(default_visibility = ["//visibility:public"])
cc_binary(
name = 'test',
@@ -404,8 +412,10 @@ EOF
}

function test_cc_binary_grpc_cache_statsline() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
package(default_visibility = ["//visibility:public"])
cc_binary(
name = 'test',
@@ -428,8 +438,10 @@ EOF
}

function test_failing_cc_test() {
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_test(
name = 'test',
@@ -616,8 +628,10 @@ function is_file_uploaded() {
function test_failed_test_outputs_not_uploaded() {
# Test that outputs of a failed test/action are not uploaded to the remote
# cache. This is a regression test for https://github.com/bazelbuild/bazel/issues/7232
add_rules_cc "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_test(
name = 'test',
@@ -671,8 +685,10 @@ EOF
}

function test_py_test() {
add_rules_python "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_python//python:py_test.bzl", "py_test")
package(default_visibility = ["//visibility:public"])
py_test(
name = 'test',
@@ -693,8 +709,10 @@ EOF
}

function test_py_test_with_xml_output() {
add_rules_python "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_python//python:py_test.bzl", "py_test")
package(default_visibility = ["//visibility:public"])
py_test(
name = 'test',
@@ -731,8 +749,10 @@ EOF
}

function test_failing_py_test_with_xml_output() {
add_rules_python "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_python//python:py_test.bzl", "py_test")
package(default_visibility = ["//visibility:public"])
py_test(
name = 'test',
@@ -795,8 +815,10 @@ EOF
}

function test_timeout() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "sleep",
timeout = "short",
@@ -828,8 +850,10 @@ EOF
}

function test_passed_env_user() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "user_test",
timeout = "short",
@@ -885,8 +909,10 @@ EOF
# For example, if the network connection to the remote executor fails it shouldn't be displayed as
# a test error.
function test_display_non_testerrors() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
timeout = "short",
@@ -1221,7 +1247,7 @@ EOF

function test_nobuild_runfile_links() {
mkdir data && echo "hello" > data/hello && echo "world" > data/world

add_rules_shell "MODULE.bazel"
cat > test.sh <<'EOF'
#!/bin/bash
set -e
@@ -1231,6 +1257,8 @@ exit 0
EOF
chmod 755 test.sh
cat > BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
filegroup(
name = "runfiles",
srcs = ["data/hello", "data/world"],
@@ -2043,13 +2071,15 @@ EOF
}

function setup_exclusive_test_case() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/success.sh <<'EOF'
#!/bin/sh
exit 0
EOF
chmod 755 a/success.sh
cat > a/BUILD <<'EOF'
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "success_test",
srcs = ["success.sh"],
@@ -2125,6 +2155,7 @@ function test_exclusive_test_wont_remote_exec() {
# runfiles. The error we would see here without the flag would be "Cannot find
# runfiles". See #4685.
function test_java_rbe_coverage_produces_report() {
add_rules_java "MODULE.bazel"
mkdir -p java/factorial

JAVA_TOOLS_ZIP="released"
@@ -2133,6 +2164,9 @@ function test_java_rbe_coverage_produces_report() {
cd java/factorial

cat > BUILD <<'EOF'
load("@rules_java//java:java_library.bzl", "java_library")
load("@rules_java//java:java_test.bzl", "java_test")
java_library(
name = "fact",
srcs = ["Factorial.java"],
@@ -2412,10 +2446,14 @@ function test_cc_rbe_coverage_produces_report() {
# Check to see if intermediate files are supported, otherwise skip.
gcov --help | grep "\-i," || return 0

add_rules_cc "MODULE.bazel"
local test_dir="a/cc/coverage_test"
mkdir -p $test_dir

cat > "$test_dir"/BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_library(
@@ -2547,10 +2585,15 @@ function test_cc_rbe_coverage_produces_report_with_llvm() {
return 0
fi

add_rules_cc "MODULE.bazel"
local test_dir="a/cc/coverage_test"
mkdir -p $test_dir

cat > "$test_dir"/BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_test.bzl", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_library(
@@ -2681,8 +2724,11 @@ EOF
}

function test_async_upload_works_for_flaky_tests() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = "test",
srcs = ["test.sh"],
@@ -2763,8 +2809,10 @@ function test_local_test_execution_with_disk_cache() {
# considered stale on a cache hit.
# Regression test for https://github.com/bazelbuild/bazel/issues/14426.

add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/BUILD <<EOF
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'test',
srcs = ['test.sh'],
@@ -3021,12 +3069,14 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_cc "MODULE.bazel"

mkdir -p other_repo
touch other_repo/REPO.bazel

mkdir -p other_repo/lib
cat > other_repo/lib/BUILD <<'EOF'
load("@rules_cc//cc:cc_library.bzl", "cc_library")
cc_library(
name = "lib",
srcs = ["lib.cpp"],
@@ -3046,6 +3096,7 @@ EOF

mkdir -p other_repo/test
cat > other_repo/test/BUILD <<'EOF'
load("@rules_cc//cc:cc_test.bzl", "cc_test")
cc_test(
name = "test",
srcs = ["test.cpp"],
@@ -3185,6 +3236,7 @@ local_repository(
path = "other_repo",
)
EOF
add_rules_cc "MODULE.bazel"

mkdir -p $repo
touch $repo/REPO.bazel
@@ -3193,6 +3245,9 @@ EOF
# Use a comma in the target name as that is known to be problematic whith -Wl,
# which is commonly used to pass rpaths to the linker.
cat > $repo/lib/BUILD <<'EOF'
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_import.bzl", "cc_import")
cc_binary(
name = "l,ib",
srcs = ["lib.cpp"],
@@ -3219,6 +3274,8 @@ EOF

mkdir -p $repo/pkg
cat > $repo/pkg/BUILD <<'EOF'
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
cc_binary(
name = "tool",
srcs = ["tool.cpp"],
@@ -3275,7 +3332,9 @@ function test_external_cc_binary_tool_with_dynamic_deps_sibling_repository_layou
}

function test_shard_status_file_checked_remote_download_minimal() {
add_rules_shell "MODULE.bazel"
cat <<'EOF' > BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'x',
srcs = ['x.sh'],
@@ -3301,7 +3360,9 @@ EOF
}

function test_premature_exit_file_checked_remote_download_minimal() {
add_rules_shell "MODULE.bazel"
cat <<'EOF' > BUILD
load("@rules_shell//shell:sh_test.bzl", "sh_test")
sh_test(
name = 'x',
srcs = ['x.sh'],
@@ -3555,6 +3616,7 @@ EOF
}

function setup_inlined_outputs() {
add_rules_shell "MODULE.bazel"
mkdir -p a
cat > a/input.txt <<'EOF'
input
@@ -3595,6 +3657,7 @@ my_rule = rule(
EOF
cat > a/BUILD <<'EOF'
load("//a:defs.bzl", "my_rule")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
my_rule(
name = "my_rule",
2 changes: 2 additions & 0 deletions src/test/shell/testenv.sh
Original file line number Diff line number Diff line change
@@ -476,6 +476,8 @@ function setup_javatest_support() {
setup_javatest_common
grep -q 'name = "junit4"' third_party/BUILD \
|| cat <<EOF >>third_party/BUILD
load("@rules_java//java:java_import.bzl", "java_import")
java_import(
name = "junit4",
jars = [