]> git.saurik.com Git - apt.git/blob - test/integration/run-tests
fix test to not spoil output with warnings
[apt.git] / test / integration / run-tests
1 #!/bin/sh
2 set -e
3
4 FAIL=0
5 PASS=0
6 ALL=0
7
8 FAILED_TESTS=""
9 DIR=$(readlink -f $(dirname $0))
10 while [ -n "$1" ]; do
11 if [ "$1" = "-q" ]; then
12 export MSGLEVEL=2
13 elif [ "$1" = "-v" ]; then
14 export MSGLEVEL=4
15 elif [ "$1" = '--color=no' ]; then
16 export MSGCOLOR='NO'
17 else
18 echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
19 fi
20 shift
21 done
22 export MSGLEVEL="${MSGLEVEL:-3}"
23
24 if [ "$MSGCOLOR" != 'NO' ]; then
25 if [ ! -t 1 ]; then # but check that we output to a terminal
26 export MSGCOLOR='NO'
27 fi
28 fi
29 if [ "$MSGCOLOR" != 'NO' ]; then
30 CTEST='\033[1;32m'
31 CHIGH='\033[1;35m'
32 CRESET='\033[0m'
33 else
34 CTEST=''
35 CHIGH=''
36 CRESET=''
37 fi
38
39 TOTAL="$(run-parts --list $DIR | grep '/test-' | wc -l)"
40 for testcase in $(run-parts --list $DIR | grep '/test-'); do
41 if [ "$MSGLEVEL" -le 2 ]; then
42 printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}$(basename ${testcase})${CRESET}: "
43 else
44 printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}$(basename ${testcase})${CRESET}\n"
45 fi
46 if ! ${testcase}; then
47 FAIL=$((FAIL+1))
48 FAILED_TESTS="$FAILED_TESTS $(basename $testcase)"
49 if [ "$MSGLEVEL" -le 2 ]; then
50 printf >&2 "\n${CHIGH}Running $(basename $testcase) -> FAILED${CRESET}"
51 else
52 echo >&2 "${CHIGH}Running $(basename $testcase) -> FAILED${CRESET}"
53 fi
54 else
55 PASS=$((PASS+1))
56 fi
57 ALL=$((ALL+1))
58 if [ "$MSGLEVEL" -le 2 ]; then
59 echo
60 fi
61 done
62
63 echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed"
64 if [ -n "$FAILED_TESTS" ]; then
65 echo >&2 "Failed tests: $FAILED_TESTS"
66 else
67 echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
68 fi
69 # ensure we don't overflow
70 exit $((FAIL <= 255 ? FAIL : 255))