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