]> git.ipfire.org Git - thirdparty/systemd.git/blob - test/run-integration-tests.sh
docs: document new description field
[thirdparty/systemd.git] / test / run-integration-tests.sh
1 #!/usr/bin/env bash
2 set -e
3
4 BUILD_DIR="$($(dirname "$0")/../tools/find-build-dir.sh)"
5 if [ $# -gt 0 ]; then
6 args="$@"
7 else
8 args="setup run clean-again"
9 fi
10 args_no_clean=$(sed -r 's/(^| )clean($| )/ /g' <<<$args)
11 do_clean=$( [ "$args" = "$args_no_clean" ]; echo $? )
12
13 ninja -C "$BUILD_DIR"
14
15 declare -A results
16 declare -A times
17
18 COUNT=0
19 FAILURES=0
20
21 cd "$(dirname "$0")"
22
23 # Let's always do the cleaning operation first, because it destroys the image
24 # cache.
25 if [ $do_clean = 1 ]; then
26 for TEST in TEST-??-* ; do
27 ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" clean )
28 done
29 fi
30
31 pass_blacklist() {
32 for marker in $BLACKLIST_MARKERS; do
33 if [ -f "$1/$marker" ]; then
34 echo "========== BLACKLISTED: $1 ($marker) =========="
35 return 1
36 fi
37 done
38 return 0
39 }
40
41 for TEST in TEST-??-* ; do
42 COUNT=$(($COUNT+1))
43
44 pass_blacklist $TEST || continue
45 start=$(date +%s)
46
47 echo -e "\n--x-- Running $TEST --x--"
48 set +e
49 ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" $args_no_clean )
50 RESULT=$?
51 set -e
52 echo "--x-- Result of $TEST: $RESULT --x--"
53
54 results["$TEST"]="$RESULT"
55 times["$TEST"]=$(( $(date +%s) - $start ))
56
57 [ "$RESULT" -ne "0" ] && FAILURES=$(($FAILURES+1))
58 done
59
60 if [ $FAILURES -eq 0 -a $do_clean = 1 ]; then
61 for TEST in ${!results[@]}; do
62 ( set -x ; make -C "$TEST" "BUILD_DIR=$BUILD_DIR" clean-again )
63 done
64 fi
65
66 echo ""
67
68 for TEST in ${!results[@]}; do
69 RESULT="${results[$TEST]}"
70 time="${times[$TEST]}"
71 string=$([ "$RESULT" = "0" ] && echo "SUCCESS" || echo "FAIL")
72 printf "%-35s %-8s (%3s s)\n" "${TEST}:" "${string}" "$time"
73 done | sort
74
75 if [ "$FAILURES" -eq 0 ] ; then
76 echo -e "\nALL $COUNT TESTS PASSED"
77 else
78 echo -e "\nTOTAL FAILURES: $FAILURES OF $COUNT"
79 fi
80
81 exit "$FAILURES"