summaryrefslogtreecommitdiffstats
path: root/runtests.sh
blob: adaa2fc6515883f415e98022a93ee83787301f4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh

# A script that runs each unit test independently, with output
# directed to a file in OUT/$T.out.  If command line arguments are
# given, they are tests to run; otherwise every file named
# Lib/test/test_* is run (via regrtest).  A summary of failing,
# passing and skipped tests is written to stdout and to the files
# GOOD, BAD and SKIPPED.

# Reset PYTHONPATH to avoid alien influences on the tests.
unset PYTHONPATH

# Choose the Python binary.
case `uname` in
Darwin) PYTHON=./python.exe;;
CYGWIN*) PYTHON=./python.exe;;
*)      PYTHON=./python;;
esac

# Create the output directory if necessary.
mkdir -p OUT

# Empty the summary files.
>GOOD
>BAD
>SKIPPED

# The -u flag.
UFLAG=""
case $1 in
-u)
    UFLAG="$1 $2"; shift; shift;;
-u*)
    UFLAG="$1"; shift;;
esac

# Compute the list of tests to run.
case $# in
0) 
    TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//')`
    ;;
*)
    TESTS="$@"
    ;;
esac

# Run the tests.
for T in $TESTS
do
    echo -n $T
    if   case $T in
         *curses*) echo; $PYTHON Lib/test/regrtest.py $UFLAG $T 2>OUT/$T.out;;
         *) $PYTHON Lib/test/regrtest.py $UFLAG $T >OUT/$T.out 2>&1;;
         esac
    then
	if grep -q "1 test skipped:" OUT/$T.out
	then
	    echo " SKIPPED"
            echo $T >>SKIPPED
	else
	    echo
            echo $T >>GOOD
	fi
    else
	echo " BAD"
        echo $T >>BAD
    fi
done