diff options
author | Guido van Rossum <guido@python.org> | 2007-08-20 20:17:57 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-08-20 20:17:57 (GMT) |
commit | 360f2f8be3b66741c4ead2dd86aee4cee74f5709 (patch) | |
tree | 7a7fa93e077f2808cc293c158a6d432d1cf75321 /runtests.sh | |
parent | c1e315d2b0df6d647d19a0cd25d6a4b964db1eb2 (diff) | |
download | cpython-360f2f8be3b66741c4ead2dd86aee4cee74f5709.zip cpython-360f2f8be3b66741c4ead2dd86aee4cee74f5709.tar.gz cpython-360f2f8be3b66741c4ead2dd86aee4cee74f5709.tar.bz2 |
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.
Diffstat (limited to 'runtests.sh')
-rwxr-xr-x | runtests.sh | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/runtests.sh b/runtests.sh index adaa2fc..5d31276 100755 --- a/runtests.sh +++ b/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 |