diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2016-01-18 15:59:35 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@google.com> | 2016-01-18 16:52:13 +0000 |
commit | b0ba9c9e7c07e87c1577d2c7ef8517e785528a70 (patch) | |
tree | ff40c3cf0a14d7b4bd456a64925aebe922e651a5 | |
parent | 5ed789526c0754f6b5f47d1bd1f4b20e6a239000 (diff) |
Generate a default dummy XML file when the test runner does not.
--
MOS_MIGRATED_REVID=112409554
-rwxr-xr-x | src/test/shell/bazel/bazel_test_test.sh | 41 | ||||
-rwxr-xr-x | tools/test/test-setup.sh | 22 |
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 |