mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
Make runtests.py a little more versatile: support -x, and arbitrary flags
to be passed to regrtest.py. Also add -h for help, and summarize the BAD/GOOD/SKIPPED files at the end.
This commit is contained in:
parent
c1e315d2b0
commit
360f2f8be3
1 changed files with 44 additions and 24 deletions
68
runtests.sh
68
runtests.sh
|
|
@ -1,11 +1,19 @@
|
|||
#!/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.
|
||||
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."
|
||||
|
||||
# Reset PYTHONPATH to avoid alien influences on the tests.
|
||||
unset PYTHONPATH
|
||||
|
|
@ -25,20 +33,29 @@ mkdir -p OUT
|
|||
>BAD
|
||||
>SKIPPED
|
||||
|
||||
# The -u flag.
|
||||
UFLAG=""
|
||||
case $1 in
|
||||
-u)
|
||||
UFLAG="$1 $2"; shift; shift;;
|
||||
-u*)
|
||||
UFLAG="$1"; shift;;
|
||||
esac
|
||||
# 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 $# in
|
||||
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="$@"
|
||||
;;
|
||||
|
|
@ -49,20 +66,23 @@ 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;;
|
||||
*curses*) echo; $PYTHON Lib/test/regrtest.py $FLAGS $T 2>OUT/$T.out;;
|
||||
*) $PYTHON 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"
|
||||
if grep -q "1 test skipped:" OUT/$T.out
|
||||
then
|
||||
echo " SKIPPED"
|
||||
echo $T >>SKIPPED
|
||||
else
|
||||
echo
|
||||
else
|
||||
echo
|
||||
echo $T >>GOOD
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo " BAD"
|
||||
echo " BAD"
|
||||
echo $T >>BAD
|
||||
fi
|
||||
done
|
||||
|
||||
# Summarize results
|
||||
wc -l BAD GOOD SKIPPED
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue