have bazel_example_test.sh properly depend on - no longer uses $bazel_javabase from testenv.sh - works with absolute $(JAVABASE) paths and JDK's other than local_jdk. Progress towards #8033 Closes #8041. PiperOrigin-RevId: 243798469
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD index 399b26c..e3500ad 100644 --- a/src/test/shell/bazel/BUILD +++ b/src/test/shell/bazel/BUILD
@@ -67,12 +67,15 @@ name = "bazel_example_test", size = "large", srcs = ["bazel_example_test.sh"], + args = ["$(JAVABASE)"], data = [ ":test-deps", "//src/test/shell/bazel/apple:objc-deps", + "@bazel_tools//tools/bash/runfiles", ], shard_count = 3, tags = ["no_windows"], + toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], ) sh_test(
diff --git a/src/test/shell/bazel/bazel_example_test.sh b/src/test/shell/bazel/bazel_example_test.sh index 663dfef..7472f1e 100755 --- a/src/test/shell/bazel/bazel_example_test.sh +++ b/src/test/shell/bazel/bazel_example_test.sh
@@ -16,12 +16,39 @@ # # Tests the examples provided in Bazel # +# --- begin runfiles.bash initialization --- +set -euo pipefail +if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then + if [[ -f "$0.runfiles_manifest" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" + elif [[ -f "$0.runfiles/MANIFEST" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" + elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + export RUNFILES_DIR="$0.runfiles" + fi +fi +if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash" +elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then + source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \ + "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" +else + echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" + exit 1 +fi +# --- end runfiles.bash initialization --- -# Load the test setup defined in the parent directory -CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "${CURRENT_DIR}/../integration_test_setup.sh" \ +source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \ || { echo "integration_test_setup.sh not found!" >&2; exit 1; } +# $1 is equal to the $(JAVABASE) make variable +javabase="$1" +if [[ $javabase = external/* ]]; then + javabase=${javabase#external/} +fi +javabase="$(rlocation "${javabase}/bin/java")" +javabase=${javabase%/bin/java} + function set_up() { copy_examples cat > WORKSPACE <<EOF @@ -42,7 +69,7 @@ # An assertion that execute a binary from a sub directory (to test runfiles) function assert_binary_run_from_subdir() { ( # Needed to make execution from a different path work. - export PATH=${bazel_javabase}/bin:"$PATH" && + export PATH=${javabase}/bin:"$PATH" && mkdir -p x && cd x && unset JAVA_RUNFILES && @@ -118,8 +145,6 @@ function test_shell() { assert_build "//examples/shell:bin" - unset RUNFILES_DIR - unset RUNFILES_MANIFEST_FILE assert_bazel_run "//examples/shell:bin" "Hello Bazel!" assert_test_ok "//examples/shell:test" }
diff --git a/src/test/shell/bin/bazel b/src/test/shell/bin/bazel index 3a77cb3..aba1ed9 100755 --- a/src/test/shell/bin/bazel +++ b/src/test/shell/bin/bazel
@@ -17,4 +17,10 @@ # Wrapper script to run bazel in the tests. Any change to this file will # affect all our integration tests. # -exec $(rlocation io_bazel/src/bazel) --bazelrc=$TEST_TMPDIR/bazelrc "$@" +bazel_bin=$(rlocation io_bazel/src/bazel) +# unset runfiles environment so that the "inner bazel" +# has to detect its own runfiles +unset RUNFILES_DIR +unset RUNFILES_MANIFEST_FILE +unset RUNFILES_MANIFEST_ONLY +exec $bazel_bin --bazelrc=$TEST_TMPDIR/bazelrc "$@"