fix discard_graph_edges_test to properly depend on $(JAVABASE) - no longer uses $bazel_javabase from testenv.sh - works with absolute $(JAVABASE) paths and JDK's other than loc Progress towards #8033 Closes #8037. PiperOrigin-RevId: 243797243
diff --git a/src/test/shell/integration/BUILD b/src/test/shell/integration/BUILD index 7cce059..59d10b7 100644 --- a/src/test/shell/integration/BUILD +++ b/src/test/shell/integration/BUILD
@@ -401,12 +401,15 @@ name = "discard_graph_edges_test", size = "medium", srcs = ["discard_graph_edges_test.sh"], + args = ["$(JAVABASE)"], data = [ ":discard_graph_edges_lib.sh", ":test-deps", + "@bazel_tools//tools/bash/runfiles", ], shard_count = 6, tags = ["no_windows"], + toolchains = ["@bazel_tools//tools/jdk:current_java_runtime"], ) sh_test(
diff --git a/src/test/shell/integration/discard_graph_edges_lib.sh b/src/test/shell/integration/discard_graph_edges_lib.sh index d603886..b7675ac 100644 --- a/src/test/shell/integration/discard_graph_edges_lib.sh +++ b/src/test/shell/integration/discard_graph_edges_lib.sh
@@ -24,7 +24,6 @@ local item="$2" # We can't use + here because Macs don't recognize it as a special character # by default. - grep "$item" "$histofile" \ - | sed -e 's/^ *[0-9][0-9]*: *\([0-9][0-9]*\) .*$/\1/' \ - || fail "Couldn't get item from $histofile" + (grep "$item" "$histofile" || echo "") \ + | sed -e 's/^ *[0-9][0-9]*: *\([0-9][0-9]*\) .*$/\1/' }
diff --git a/src/test/shell/integration/discard_graph_edges_test.sh b/src/test/shell/integration/discard_graph_edges_test.sh index 2ec2826..c8d62b1 100755 --- a/src/test/shell/integration/discard_graph_edges_test.sh +++ b/src/test/shell/integration/discard_graph_edges_test.sh
@@ -16,12 +16,51 @@ # # discard_graph_edges_test.sh: basic tests for the --discard_graph_edges flag. -# Load the test setup defined in the parent directory -CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -source "${CURRENT_DIR}/../integration_test_setup.sh" \ +# --- begin runfiles.bash initialization --- +# Copy-pasted from Bazel's Bash runfiles library (tools/bash/runfiles/runfiles.bash). +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 --- + +source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \ || { echo "integration_test_setup.sh not found!" >&2; exit 1; } -source "${CURRENT_DIR}/discard_graph_edges_lib.sh" \ - || { echo "${CURRENT_DIR}/discard_graph_edges_lib.sh not found!" >&2; exit 1; } +source "$(rlocation "io_bazel/src/test/shell/integration/discard_graph_edges_lib.sh")" \ + || { echo "discard_graph_edges_lib.sh not found!" >&2; exit 1; } + +IS_WINDOWS=false +case "$(uname | tr [:upper:] [:lower:])" in +msys*|mingw*|cygwin*) + IS_WINDOWS=true +esac + +if "$IS_WINDOWS"; then + EXE_EXT=".exe" +else + EXE_EXT="" +fi + +javabase="$1" +if [[ $javabase = external/* ]]; then + javabase=${javabase#external/} +fi +jmaptool="$(rlocation "${javabase}/bin/jmap${EXE_EXT}")" #### SETUP ############################################################# @@ -167,7 +206,7 @@ local = 1, tools = [':cclib'], cmd = 'server_pid=\$\$(cat $server_pid_fifo) ; ' + - '${bazel_javabase}/bin/jmap -histo:live \$\$server_pid > ' + + '${jmaptool} -histo:live \$\$server_pid > ' + '\$(location histo.txt) ' + '|| echo "server_pid in genrule: \$\$server_pid"' ) @@ -365,7 +404,7 @@ bazel build $BUILD_FLAGS //foo:foo \ >& "$TEST_log" || fail "Expected success" - "${bazel_javabase}/bin/jmap" -histo:live "$(bazel info server_pid)" > histo.txt + "$jmaptool" -histo:live "$(bazel info server_pid)" > histo.txt genrule_action_count="$(extract_histogram_count histo.txt \ 'GenRuleAction$')" if [[ "$genrule_action_count" -lt 1 ]]; then