]> git.saurik.com Git - apt.git/blobdiff - test/integration/run-tests
correct cross & disappear progress detection
[apt.git] / test / integration / run-tests
index 87cc292d7a083f52ab8044ba37582b5f6bcf0b21..7c0b74ce238921af56cc7258970d49604f699bad 100755 (executable)
@@ -5,6 +5,8 @@ TESTTORUN=''
 while [ -n "$1" ]; do
        if [ "$1" = "-q" ]; then
                export MSGLEVEL=2
+       elif [ "$1" = "-qq" ]; then
+               export MSGLEVEL=1
        elif [ "$1" = "-v" ]; then
                export MSGLEVEL=4
        elif [ "$1" = '--color=no' ]; then
@@ -47,8 +49,12 @@ fi
 if [ -n "$TESTTORUN" ]; then
        # collecting the output of one test to have it together
        OUTPUT="$(mktemp)"
+       CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP"
+       trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
        {
-               if [ "$MSGLEVEL" -le 2 ]; then
+               if [ "$MSGLEVEL" -le 1 ]; then
+                       printf "${TESTTORUN##*/}"
+               elif [ "$MSGLEVEL" -le 2 ]; then
                        printf "${CTEST}Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}: "
                else
                        printf "${CTEST}Run Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
@@ -56,12 +62,20 @@ if [ -n "$TESTTORUN" ]; then
                if ! "$TESTTORUN"; then
                        FAIL='yes'
                        if [ "$MSGLEVEL" -le 2 ]; then
+                               printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n"
+                       elif [ "$MSGLEVEL" -le 2 ]; then
                                printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
                        else
                                echo >&2 "${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
                        fi
+               else
+                       if [ "$MSGLEVEL" -le 1 ]; then
+                               printf " "
+                       fi
                fi
-               if [ "$MSGLEVEL" -le 2 ]; then
+               if [ "$MSGLEVEL" -le 1 ]; then
+                       :
+               elif [ "$MSGLEVEL" -le 2 ]; then
                        echo
                fi
        } >"$OUTPUT" 2>&1
@@ -81,16 +95,26 @@ PASS=0
 ALL=0
 FAILED_TESTS=""
 DIR="$(readlink -f "$(dirname "$0")")"
-TESTLIST="$(run-parts --list "$DIR" --regex '^test-.*$')"
+cd "$DIR"
+TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
 if [ -n "$APT_TEST_JOBS" ]; then
        if [ "$MSGCOLOR" != 'NO' ]; then
                export MSGCOLOR='ALWAYS'
        fi
-       exec parallel -j "$APT_TEST_JOBS" "$0" -- $(echo "$TESTLIST")
+       parallel=parallel
+       if command -v moreutils-parallel >/dev/null 2>&1; then
+               parallel=moreutils-parallel
+       fi
+       exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
 fi
 TOTAL="$(echo "$TESTLIST" | wc -l)"
+if [ "$MSGLEVEL" -le 1 ]; then
+       printf "${CTEST}Running testcases${CRESET}: "
+fi
 for testcase in $TESTLIST; do
-       if [ "$MSGLEVEL" -le 2 ]; then
+       if [ "$MSGLEVEL" -le 1 ]; then
+               printf "${testcase##*/}"
+       elif [ "$MSGLEVEL" -le 2 ]; then
                printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}${testcase##*/}${CRESET}: "
        else
                printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}${testcase##*/}${CRESET}\n"
@@ -98,16 +122,23 @@ for testcase in $TESTLIST; do
        if ! ${testcase}; then
                FAIL=$((FAIL+1))
                FAILED_TESTS="$FAILED_TESTS ${testcase##*/}"
-               if [ "$MSGLEVEL" -le 2 ]; then
+               if [ "$MSGLEVEL" -le 1 ]; then
+                       printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}\n"
+               elif [ "$MSGLEVEL" -le 2 ]; then
                        printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
                else
                        echo >&2 "${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
                fi
        else
                PASS=$((PASS+1))
+               if [ "$MSGLEVEL" -le 1 ]; then
+                       printf " "
+               fi
        fi
        ALL=$((ALL+1))
-       if [ "$MSGLEVEL" -le 2 ]; then
+       if [ "$MSGLEVEL" -le 1 ]; then
+               :
+       elif [ "$MSGLEVEL" -le 2 ]; then
                echo
        fi
 done