]> git.ipfire.org Git - thirdparty/systemd.git/blame - test/run-integration-tests.sh
test: allow run-integration-tests.sh to run without build
[thirdparty/systemd.git] / test / run-integration-tests.sh
CommitLineData
ff12a795
JT
1#!/usr/bin/env bash
2set -e
8fe9c8d9 3
232add5c
DS
4if [ "$NO_BUILD" ]; then
5 BUILD_DIR=""
6elif BUILD_DIR="$($(dirname "$0")/../tools/find-build-dir.sh)"; then
7 ninja -C "$BUILD_DIR"
8else
9 echo "No build found, please set BUILD_DIR or NO_BUILD" >&2
10 exit 1
11fi
12
2535f23d 13if [ $# -gt 0 ]; then
cc5549ca 14 args="$@"
2535f23d 15else
693ad298 16 args="setup run clean-again"
2535f23d 17fi
92fa741c 18args_no_clean=$(sed -r 's/\bclean.*\b//g' <<<$args)
73abf7ae 19do_clean=$( [ "$args" = "$args_no_clean" ]; echo $? )
8fe9c8d9 20
8fe9c8d9 21declare -A results
5a89d7b3 22declare -A times
8fe9c8d9 23
967bae68 24COUNT=0
8fe9c8d9
LP
25FAILURES=0
26
ded65775 27cd "$(dirname "$0")"
8c3534b5 28
73abf7ae
ZJS
29# Let's always do the cleaning operation first, because it destroys the image
30# cache.
8c3534b5
ZJS
31if [ $do_clean = 1 ]; then
32 for TEST in TEST-??-* ; do
12d31e4e 33 ( set -x ; make -C "$TEST" clean )
8c3534b5 34 done
abf6346c
ZJS
35
36 [ -n "$args_no_clean" ] || exit 0
8c3534b5
ZJS
37fi
38
b382b8de
LB
39pass_deny_list() {
40 for marker in $DENY_LIST_MARKERS $BLACKLIST_MARKERS; do
3597bf75 41 if [ -f "$1/$marker" ]; then
b382b8de 42 echo "========== DENY-LISTED: $1 ($marker) =========="
3597bf75
ZJS
43 return 1
44 fi
45 done
46 return 0
47}
48
8fe9c8d9 49for TEST in TEST-??-* ; do
cc5549ca 50 COUNT=$(($COUNT+1))
967bae68 51
b382b8de 52 pass_deny_list $TEST || continue
5a89d7b3 53 start=$(date +%s)
3597bf75 54
cc5549ca
ZJS
55 echo -e "\n--x-- Running $TEST --x--"
56 set +e
12d31e4e 57 ( set -x ; make -C "$TEST" $args_no_clean )
cc5549ca
ZJS
58 RESULT=$?
59 set -e
60 echo "--x-- Result of $TEST: $RESULT --x--"
8fe9c8d9 61
cc5549ca 62 results["$TEST"]="$RESULT"
5a89d7b3 63 times["$TEST"]=$(( $(date +%s) - $start ))
8fe9c8d9 64
cc5549ca 65 [ "$RESULT" -ne "0" ] && FAILURES=$(($FAILURES+1))
8fe9c8d9
LP
66done
67
8c3534b5 68if [ $FAILURES -eq 0 -a $do_clean = 1 ]; then
3597bf75 69 for TEST in ${!results[@]}; do
12d31e4e 70 ( set -x ; make -C "$TEST" clean-again )
8c3534b5
ZJS
71 done
72fi
73
8fe9c8d9
LP
74echo ""
75
76for TEST in ${!results[@]}; do
cc5549ca 77 RESULT="${results[$TEST]}"
5a89d7b3
ZJS
78 time="${times[$TEST]}"
79 string=$([ "$RESULT" = "0" ] && echo "SUCCESS" || echo "FAIL")
80 printf "%-35s %-8s (%3s s)\n" "${TEST}:" "${string}" "$time"
8fe9c8d9
LP
81done | sort
82
83if [ "$FAILURES" -eq 0 ] ; then
cc5549ca 84 echo -e "\nALL $COUNT TESTS PASSED"
8fe9c8d9 85else
cc5549ca 86 echo -e "\nTOTAL FAILURES: $FAILURES OF $COUNT"
8fe9c8d9
LP
87fi
88
89exit "$FAILURES"