From: Ondřej Kuzník Date: Thu, 30 Apr 2026 14:34:26 +0000 (+0100) Subject: ITS#10499 tests: record test results as junit.xml X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=9cbcfe748a07c707795bd331a1db67000ae7b302;p=thirdparty%2Fopenldap.git ITS#10499 tests: record test results as junit.xml --- diff --git a/.gitignore b/.gitignore index ec97386edc..63d93ede7f 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,4 @@ tests/schema tests/testdata tests/testrun tests/run +tests/junit* diff --git a/tests/scripts/all b/tests/scripts/all index e29cd31cd9..8ea81971e1 100755 --- a/tests/scripts/all +++ b/tests/scripts/all @@ -36,6 +36,7 @@ fi echo ">>>>> $(timer) Executing all LDAP tests for $BACKEND" +junit_setup "$BACKEND" if [ -n "$NOEXIT" ]; then echo "Result Test" > $TESTWD/results fi @@ -63,24 +64,45 @@ for CMD in $SRCDIR/scripts/test*; do [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" START=`date +%s` - if [ -n "$TESTINST" ]; then + if [ -n "$JUNIT_OUTPUT" ]; then + # capture the output so we can paste it into the report + { $CMD 2>&1; echo $? > "$JUNIT_RC"; } | tee "$JUNIT_LOG" + RC=`cat "$JUNIT_RC"` + elif [ -n "$TESTINST" ]; then $CMD 2>&1 + RC=$? else $CMD + RC=$? fi - RC=$? END=`date +%s` if test $RC -eq 0 ; then MSG=">>>>> $(timer) Finished $BCMD for $BACKEND after $(( $END - $START )) seconds." [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" + if [ -n "$JUNIT_OUTPUT" ]; then + printf '\t\n' \ + "$BACKEND" "$BCMD" "$(( $END - $START ))" \ + >> "$JUNIT_TMP" + fi else MSG=">>>>> $(timer) Failed $BCMD for $BACKEND after $(( $END - $START )) seconds" [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" FAILCOUNT=`expr $FAILCOUNT + 1` + if [ -n "$JUNIT_OUTPUT" ]; then + { + printf '\t\n' \ + "$BACKEND" "$BCMD" "$(( $END - $START ))" + printf '\t\t' "$RC" + xml_escape < "$JUNIT_LOG" + echo ' ' + echo ' ' + } >> "$JUNIT_TMP" + fi + if [ -n "$NOEXIT" ]; then echo "Continuing." else @@ -94,6 +116,14 @@ for CMD in $SRCDIR/scripts/test*; do echo "$MSG" SKIPCOUNT=`expr $SKIPCOUNT + 1` RC="-" + if [ -n "$JUNIT_OUTPUT" ]; then + { + printf '\t\n' \ + "$BACKEND" "$BCMD" + echo ' ' + echo ' ' + } >> "$JUNIT_TMP" + fi fi if [ -n "$NOEXIT" ]; then diff --git a/tests/scripts/functions.sh b/tests/scripts/functions.sh index d441fec68d..b7e9ca2598 100755 --- a/tests/scripts/functions.sh +++ b/tests/scripts/functions.sh @@ -20,3 +20,37 @@ timer() { date -u $DATEOPT$delta +%T fi } + +xml_escape() { + sed -e 's/&/\&/g' -e 's//\>/g' +} + +junit_finalize() { + [ -n "$JUNIT_OUTPUT" ] || return 0 + [ -f "$JUNIT_TMP" ] || return 0 + JUNIT_END=`date +%s` + JUNIT_TOTAL=`grep -c '/dev/null` + [ -z "$JUNIT_TOTAL" ] && JUNIT_TOTAL=0 + { + echo '' + printf '\n' \ + "$JUNIT_NAME" "$JUNIT_TOTAL" "$FAILCOUNT" "$SKIPCOUNT" \ + "$(( $JUNIT_END - $JUNIT_START ))" + cat "$JUNIT_TMP" + echo '' + } > "$JUNIT_OUTPUT" + rm -f "$JUNIT_TMP" "$JUNIT_LOG" "$JUNIT_RC" +} + +junit_setup() { + JUNIT_NAME="${1:-$BACKEND}" + JUNIT_OUTPUT="${JUNIT_OUTPUT-$TESTWD/junit$TESTINST-$JUNIT_NAME.xml}" + if [ -n "$JUNIT_OUTPUT" ]; then + JUNIT_TMP="$TESTWD/junit_tmp$TESTINST" + JUNIT_LOG="$TESTWD/junit_current$TESTINST.log" + JUNIT_RC="$TESTWD/junit_current$TESTINST.rc" + : > "$JUNIT_TMP" + JUNIT_START=`date +%s` + trap junit_finalize EXIT + fi +} diff --git a/tests/scripts/lloadd-all b/tests/scripts/lloadd-all index 083da39974..7d5bec4871 100755 --- a/tests/scripts/lloadd-all +++ b/tests/scripts/lloadd-all @@ -36,6 +36,7 @@ fi echo ">>>>> $(timer) Executing all LDAP tests for the Load Balancer" +junit_setup "lloadd+$BACKEND" if [ -n "$NOEXIT" ]; then echo "Result Test" > $TESTWD/results fi @@ -62,24 +63,45 @@ for CMD in $SRCDIR/scripts/lloadd/test*; do [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" START=`date +%s` - if [ -n "$TESTINST" ]; then + if [ -n "$JUNIT_OUTPUT" ]; then + # capture the output so we can paste it into the report + { $CMD 2>&1; echo $? > "$JUNIT_RC"; } | tee "$JUNIT_LOG" + RC=`cat "$JUNIT_RC"` + elif [ -n "$TESTINST" ]; then $CMD 2>&1 + RC=$? else $CMD + RC=$? fi - RC=$? END=`date +%s` if test $RC -eq 0 ; then MSG=">>>>> $(timer) Finished $BCMD for lloadd+$BACKEND after $(( $END - $START )) seconds." [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" + if [ -n "$JUNIT_OUTPUT" ]; then + printf '\t\n' \ + "$BACKEND" "$BCMD" "$(( $END - $START ))" \ + >> "$JUNIT_TMP" + fi else MSG=">>>>> $(timer) Failed $BCMD for lloadd+$BACKEND after $(( $END - $START )) seconds" [ -n "$TESTINST" ] && echo "$MSG" >&2 echo "$MSG" FAILCOUNT=`expr $FAILCOUNT + 1` + if [ -n "$JUNIT_OUTPUT" ]; then + { + printf '\t\n' \ + "$BACKEND" "$BCMD" "$(( $END - $START ))" + printf '\t\t' "$RC" + xml_escape < "$JUNIT_LOG" + echo ' ' + echo ' ' + } >> "$JUNIT_TMP" + fi + if [ -n "$NOEXIT" ]; then echo "Continuing." else @@ -93,6 +115,14 @@ for CMD in $SRCDIR/scripts/lloadd/test*; do echo "$MSG" SKIPCOUNT=`expr $SKIPCOUNT + 1` RC="-" + if [ -n "$JUNIT_OUTPUT" ]; then + { + printf '\t\n' \ + "$BACKEND" "$BCMD" + echo ' ' + echo ' ' + } >> "$JUNIT_TMP" + fi fi if [ -n "$NOEXIT" ]; then