| #!/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 |