diff --git a/include/junit_integration b/include/junit_integration index e9ec77c3..a4854c6b 100644 --- a/include/junit_integration +++ b/include/junit_integration @@ -14,6 +14,11 @@ # Generates JUnit XML reports which can be read by Jenkins or other CI tools JUNIT_OUTPUT_DIRECTORY="junit-reports" +JUNIT_TESTS_COUNT="0" +JUNIT_SUCCESS_COUNT="0" +JUNIT_FAILURES_COUNT="0" +JUNIT_SKIPPED_COUNT="0" +JUNIT_ERRORS_COUNT="0" is_junit_output_enabled() { if [[ " ${MODES[@]} " =~ " junit-xml " ]]; then @@ -44,7 +49,7 @@ prepare_junit_check_output() { JUNIT_OUTPUT_FILE="$JUNIT_OUTPUT_DIRECTORY/TEST-$1.xml" printf '%s\n' \ "" \ - "" \ + "" \ " " \ " " \ " " \ @@ -60,24 +65,21 @@ prepare_junit_check_output() { } finalise_junit_check_output() { + # Calculate Total and populate summary info + JUNIT_TESTS_COUNT=$((JUNIT_SUCCESS_COUNT+$JUNIT_FAILURES_COUNT+$JUNIT_SKIPPED_COUNT+$JUNIT_ERRORS_COUNT)) + sed "s/_TESTS_COUNT_/${JUNIT_TESTS_COUNT}/g;s/_FAILURES_COUNT_/${JUNIT_FAILURES_COUNT}/g;s/_SKIPPED_COUNT_/${JUNIT_SKIPPED_COUNT}/g;s/_ERRORS_COUNT_/${JUNIT_ERRORS_COUNT}/g" "$JUNIT_OUTPUT_FILE" > "$JUNIT_OUTPUT_FILE.$$" + mv "$JUNIT_OUTPUT_FILE.$$" "$JUNIT_OUTPUT_FILE" echo '' >> "$JUNIT_OUTPUT_FILE" - TEST_COUNT="0" - TEST_SUCCESS_COUNT="0" - TEST_FAILURE_COUNT="0" - TEST_SKIPPED_COUNT="0" - TEST_ERROR_COUNT="0" - TEST_COUNT=$(grep -c "testcase name=" "$JUNIT_OUTPUT_FILE") - TEST_SUCCESS_COUNT=$(grep -A1 "testcase name=" "$JUNIT_OUTPUT_FILE" | grep -c "") - TEST_FAILURE_COUNT=$(grep -A1 "testcase name=" "$JUNIT_OUTPUT_FILE" | grep -c " "$JUNIT_OUTPUT_FILE.$$" && mv "$JUNIT_OUTPUT_FILE.$$" "$JUNIT_OUTPUT_FILE" + # Reset global counters as test output closed + JUNIT_TESTS_COUNT="0" + JUNIT_SUCCESS_COUNT="0" + JUNIT_FAILURES_COUNT="0" + JUNIT_SKIPPED_COUNT="0" + JUNIT_ERRORS_COUNT="0" } output_junit_success() { + JUNIT_SUCCESS_COUNT=$(($JUNIT_SUCCESS_COUNT+1)) output_junit_test_case "$1" "$(xml_escape "$1")" } @@ -87,10 +89,12 @@ output_junit_info() { } output_junit_failure() { + JUNIT_FAILURES_COUNT=$(($JUNIT_FAILURES_COUNT+1)) output_junit_test_case "$1" "" } output_junit_skipped() { + JUNIT_SKIPPED_COUNT=$(($UNIT_SKIPPED_COUNT+1)) output_junit_test_case "$1" "" }