aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2016-01-18 15:59:35 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2016-01-18 16:52:13 +0000
commitb0ba9c9e7c07e87c1577d2c7ef8517e785528a70 (patch)
treeff40c3cf0a14d7b4bd456a64925aebe922e651a5
parent5ed789526c0754f6b5f47d1bd1f4b20e6a239000 (diff)
Generate a default dummy XML file when the test runner does not.
-- MOS_MIGRATED_REVID=112409554
-rwxr-xr-xsrc/test/shell/bazel/bazel_test_test.sh41
-rwxr-xr-xtools/test/test-setup.sh22
2 files changed, 62 insertions, 1 deletions
diff --git a/src/test/shell/bazel/bazel_test_test.sh b/src/test/shell/bazel/bazel_test_test.sh
index 92c57e8c4b..60ca47351c 100755
--- a/src/test/shell/bazel/bazel_test_test.sh
+++ b/src/test/shell/bazel/bazel_test_test.sh
@@ -268,4 +268,45 @@ EOF
[ -s $xml_log ] || fail "$xml_log was not present after test"
}
+function test_always_xml_output() {
+ mkdir -p dir
+
+ cat <<EOF > dir/success.sh
+#!/bin/sh
+exit 0
+EOF
+ cat <<EOF > dir/fail.sh
+#!/bin/sh
+exit 1
+EOF
+
+ chmod +x dir/{success,fail}.sh
+
+ cat <<EOF > dir/BUILD
+sh_test(
+ name = "success",
+ srcs = [ "success.sh" ],
+)
+sh_test(
+ name = "fail",
+ srcs = [ "fail.sh" ],
+)
+EOF
+
+ bazel test //dir:all &> $TEST_log && fail "should have failed" || true
+ [ -f "bazel-testlogs/dir/success/test.xml" ] \
+ || fail "No xml file for //dir:success"
+ [ -f "bazel-testlogs/dir/fail/test.xml" ] \
+ || fail "No xml file for //dir:fail"
+
+ cat bazel-testlogs/dir/success/test.xml >$TEST_log
+ expect_log "errors=\"0\""
+ expect_log_once "testcase"
+ expect_log "name=\"dir/success\""
+ cat bazel-testlogs/dir/fail/test.xml >$TEST_log
+ expect_log "errors=\"1\""
+ expect_log_once "testcase"
+ expect_log "name=\"dir/fail\""
+}
+
run_suite "test tests"
diff --git a/tools/test/test-setup.sh b/tools/test/test-setup.sh
index 6264110332..c5df493cc7 100755
--- a/tools/test/test-setup.sh
+++ b/tools/test/test-setup.sh
@@ -48,4 +48,24 @@ echo "--------------------------------------------------------------------------
# If the test is at the top of the tree, we have to add '.' to $PATH,
PATH=".:$PATH"
-"$@"
+exitCode=0
+"$@" || exitCode=$?
+
+if [ -n "${XML_OUTPUT_FILE-}" -a ! -f "${XML_OUTPUT_FILE-}" ]; then
+ # Create a default XML output file if the test runner hasn't generated it
+ if (( $exitCode != 0 )); then
+ errors=1
+ error_msg="<error message=\"exited with error code $exitCode\"/></error>"
+ else
+ errors=0
+ error_msg=
+ fi
+ cat <<EOF >${XML_OUTPUT_FILE}
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuites name="$1" tests="1" failure="0" errors="$errors">
+ <testcase name="$1" status="run">$error_msg</testcase>
+</testsuites>
+EOF
+fi
+
+exit $exitCode