]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/test-lib.sh
Merge branch 'en/merge-recursive-directory-rename-fixes'
[thirdparty/git.git] / t / test-lib.sh
index ee602c4d9cd79f08a3cfcbafaf81051937f57f0b..e06fa02a0eec2409ac78054d1ce30f9c3cf465b1 100644 (file)
@@ -572,6 +572,7 @@ export TERM
 
 error () {
        say_color error "error: $*"
+       finalize_junit_xml
        GIT_EXIT_OK=t
        exit 1
 }
@@ -700,7 +701,7 @@ test_failure_ () {
        say_color error "not ok $test_count - $1"
        shift
        printf '%s\n' "$*" | sed -e 's/^/#      /'
-       test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; }
+       test "$immediate" = "" || { finalize_junit_xml; GIT_EXIT_OK=t; exit 1; }
 }
 
 test_known_broken_ok_ () {
@@ -1068,6 +1069,25 @@ write_junit_xml_testcase () {
        junit_have_testcase=t
 }
 
+finalize_junit_xml () {
+       if test -n "$write_junit_xml" && test -n "$junit_xml_path"
+       then
+               test -n "$junit_have_testcase" || {
+                       junit_start=$(test-tool date getnanos)
+                       write_junit_xml_testcase "all tests skipped"
+               }
+
+               # adjust the overall time
+               junit_time=$(test-tool date getnanos $junit_suite_start)
+               sed "s/<testsuite [^>]*/& time=\"$junit_time\"/" \
+                       <"$junit_xml_path" >"$junit_xml_path.new"
+               mv "$junit_xml_path.new" "$junit_xml_path"
+
+               write_junit_xml "  </testsuite>" "</testsuites>"
+               write_junit_xml=
+       fi
+}
+
 test_atexit_cleanup=:
 test_atexit_handler () {
        # In a succeeding test script 'test_atexit_handler' is invoked
@@ -1090,21 +1110,7 @@ test_done () {
        # removed, so the commands can access pidfiles and socket files.
        test_atexit_handler
 
-       if test -n "$write_junit_xml" && test -n "$junit_xml_path"
-       then
-               test -n "$junit_have_testcase" || {
-                       junit_start=$(test-tool date getnanos)
-                       write_junit_xml_testcase "all tests skipped"
-               }
-
-               # adjust the overall time
-               junit_time=$(test-tool date getnanos $junit_suite_start)
-               sed "s/<testsuite [^>]*/& time=\"$junit_time\"/" \
-                       <"$junit_xml_path" >"$junit_xml_path.new"
-               mv "$junit_xml_path.new" "$junit_xml_path"
-
-               write_junit_xml "  </testsuite>" "</testsuites>"
-       fi
+       finalize_junit_xml
 
        if test -z "$HARNESS_ACTIVE"
        then