aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/test/shell/bazel/bazel_test_test.sh31
-rwxr-xr-xtools/test/test-setup.sh5
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/shell/bazel/bazel_test_test.sh b/src/test/shell/bazel/bazel_test_test.sh
index 9f0c4614ef..8608147764 100755
--- a/src/test/shell/bazel/bazel_test_test.sh
+++ b/src/test/shell/bazel/bazel_test_test.sh
@@ -300,6 +300,37 @@ EOF
[ -s $xml_log ] || fail "$xml_log was not present after test"
}
+# Check that fallback xml output is correctly generated for sharded tests.
+function test_xml_fallback_for_sharded_test() {
+ mkdir -p dir
+
+ cat <<EOF > dir/test.sh
+#!/bin/sh
+exit \$((TEST_SHARD_INDEX == 1))
+EOF
+
+ chmod +x dir/test.sh
+
+ cat <<EOF > dir/BUILD
+sh_test(
+ name = "test",
+ srcs = [ "test.sh" ],
+ shard_count = 2,
+)
+EOF
+
+ bazel test //dir:test && fail "should have failed" || true
+
+ cp bazel-testlogs/dir/test/shard_1_of_2/test.xml $TEST_log
+ expect_log "errors=\"0\""
+ expect_log_once "testcase"
+ expect_log "name=\"dir/test_shard_1/2\""
+ cp bazel-testlogs/dir/test/shard_2_of_2/test.xml $TEST_log
+ expect_log "errors=\"1\""
+ expect_log_once "testcase"
+ expect_log "name=\"dir/test_shard_2/2\""
+}
+
# Simple test that we actually enforce testonly, see #1923.
function test_testonly_is_enforced() {
mkdir -p testonly
diff --git a/tools/test/test-setup.sh b/tools/test/test-setup.sh
index 8ce2ea8dce..058c459cc1 100755
--- a/tools/test/test-setup.sh
+++ b/tools/test/test-setup.sh
@@ -179,6 +179,11 @@ if [ -n "${XML_OUTPUT_FILE-}" -a ! -f "${XML_OUTPUT_FILE-}" ]; then
errors=0
error_msg=
fi
+ # Ensure that test shards have unique names in the xml output.
+ if [[ -n "${TEST_TOTAL_SHARDS+x}" ]] && ((TEST_TOTAL_SHARDS != 0)); then
+ ((shard_num=TEST_SHARD_INDEX+1))
+ TEST_NAME="$TEST_NAME"_shard_"$shard_num"/"$TEST_TOTAL_SHARDS"
+ fi
cat <<EOF >${XML_OUTPUT_FILE}
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>