diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 13:00:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 13:00:47 +0000 |
commit | 2cb7e0aaedad73b076ea18c6900b0e86c5760d79 (patch) | |
tree | da68ca54bb79f4080079bf0828acda937593a4e1 /test/run-integration-tests.sh | |
parent | Initial commit. (diff) | |
download | systemd-2cb7e0aaedad73b076ea18c6900b0e86c5760d79.tar.xz systemd-2cb7e0aaedad73b076ea18c6900b0e86c5760d79.zip |
Adding upstream version 247.3.upstream/247.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/run-integration-tests.sh')
-rwxr-xr-x | test/run-integration-tests.sh | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/run-integration-tests.sh b/test/run-integration-tests.sh new file mode 100755 index 0000000..04b8385 --- /dev/null +++ b/test/run-integration-tests.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +set -e + +BUILD_DIR="$($(dirname "$0")/../tools/find-build-dir.sh)" +if [ $# -gt 0 ]; then + args="$@" +else + args="setup run clean-again" +fi +args_no_clean=$(sed -r 's/\bclean\b//g' <<<$args) +do_clean=$( [ "$args" = "$args_no_clean" ]; echo $? ) + +ninja -C "$BUILD_DIR" + +declare -A results +declare -A times + +COUNT=0 +FAILURES=0 + +cd "$(dirname "$0")" + +# Let's always do the cleaning operation first, because it destroys the image +# cache. +if [ $do_clean = 1 ]; then + for TEST in TEST-??-* ; do + ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" clean ) + done + + [ -n "$args_no_clean" ] || exit 0 +fi + +pass_blacklist() { + for marker in $BLACKLIST_MARKERS; do + if [ -f "$1/$marker" ]; then + echo "========== BLACKLISTED: $1 ($marker) ==========" + return 1 + fi + done + return 0 +} + +for TEST in TEST-??-* ; do + COUNT=$(($COUNT+1)) + + pass_blacklist $TEST || continue + start=$(date +%s) + + echo -e "\n--x-- Running $TEST --x--" + set +e + ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" $args_no_clean ) + RESULT=$? + set -e + echo "--x-- Result of $TEST: $RESULT --x--" + + results["$TEST"]="$RESULT" + times["$TEST"]=$(( $(date +%s) - $start )) + + [ "$RESULT" -ne "0" ] && FAILURES=$(($FAILURES+1)) +done + +if [ $FAILURES -eq 0 -a $do_clean = 1 ]; then + for TEST in ${!results[@]}; do + ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" clean-again ) + done +fi + +echo "" + +for TEST in ${!results[@]}; do + RESULT="${results[$TEST]}" + time="${times[$TEST]}" + string=$([ "$RESULT" = "0" ] && echo "SUCCESS" || echo "FAIL") + printf "%-35s %-8s (%3s s)\n" "${TEST}:" "${string}" "$time" +done | sort + +if [ "$FAILURES" -eq 0 ] ; then + echo -e "\nALL $COUNT TESTS PASSED" +else + echo -e "\nTOTAL FAILURES: $FAILURES OF $COUNT" +fi + +exit "$FAILURES" |