diff options
-rwxr-xr-x | src/test/shell/bazel/bazel_test_test.sh | 31 | ||||
-rwxr-xr-x | tools/test/test-setup.sh | 5 |
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> |