94 lines
2.1 KiB
Bash
Executable File
94 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
HELP="Usage: ./runtests.py [-h] [-x] [flags] [tests]
|
|
|
|
Runs each unit test independently, with output directed to a file in
|
|
OUT/<test>.out. If no tests are given, all tests are run; otherwise,
|
|
only the specified tests are run, unless -x is also given, in which
|
|
case all tests *except* those given are run.
|
|
|
|
Standard output shows the name of the tests run, with 'BAD' or
|
|
'SKIPPED' added if the test didn't produce a positive result. Also,
|
|
three files are created, named 'BAD', 'GOOD' and 'SKIPPED', to which
|
|
are written the names of the tests categorized by result.
|
|
|
|
Flags (arguments starting with '-') are passed transparently to
|
|
regrtest.py, except for -x, which is processed here."
|
|
|
|
# Choose the Python binary.
|
|
case `uname` in
|
|
Darwin) PYTHON=./python.exe;;
|
|
CYGWIN*) PYTHON=./python.exe;;
|
|
*) PYTHON=./python;;
|
|
esac
|
|
|
|
PYTHON="$PYTHON -bb"
|
|
|
|
# Unset PYTHONPATH, just to be sure.
|
|
unset PYTHONPATH
|
|
|
|
# Create the output directory if necessary.
|
|
mkdir -p OUT
|
|
|
|
# Empty the summary files.
|
|
>GOOD
|
|
>BAD
|
|
>SKIPPED
|
|
|
|
# Process flags (transparently pass these on to regrtest.py)
|
|
FLAGS=""
|
|
EXCEPT=""
|
|
while :
|
|
do
|
|
case $1 in
|
|
-h|--h|-help|--help) echo "$HELP"; exit;;
|
|
--) FLAGS="$FLAGS $1"; shift; break;;
|
|
-x) EXCEPT="$1"; shift;;
|
|
-*) FLAGS="$FLAGS $1"; shift;;
|
|
*) break;;
|
|
esac
|
|
done
|
|
|
|
# Compute the list of tests to run.
|
|
case "$#$EXCEPT" in
|
|
0)
|
|
TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//')`
|
|
;;
|
|
*-x)
|
|
PAT="^(`echo $@ | sed 's/\.py//' | sed 's/ /|/'`)$"
|
|
TESTS=`(cd Lib/test; ls test_*.py | sed 's/\.py//' | egrep -v "$PAT")`
|
|
;;
|
|
*)
|
|
TESTS="$@"
|
|
;;
|
|
esac
|
|
|
|
# Run the tests.
|
|
for T in $TESTS
|
|
do
|
|
echo -n $T
|
|
if case $T in
|
|
*curses*)
|
|
echo
|
|
$PYTHON -E Lib/test/regrtest.py $FLAGS $T 2>OUT/$T.out
|
|
;;
|
|
*) $PYTHON -E Lib/test/regrtest.py $FLAGS $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
|
|
|
|
# Summarize results
|
|
wc -l BAD GOOD SKIPPED
|