[Python-3000-checkins] r57224 - python/branches/py3k/runtests.sh

guido.van.rossum python-3000-checkins at python.org
Mon Aug 20 22:18:17 CEST 2007


Author: guido.van.rossum
Date: Mon Aug 20 22:17:57 2007
New Revision: 57224

Modified:
   python/branches/py3k/runtests.sh
Log:
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.


Modified: python/branches/py3k/runtests.sh
==============================================================================
--- python/branches/py3k/runtests.sh	(original)
+++ python/branches/py3k/runtests.sh	Mon Aug 20 22:17:57 2007
@@ -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 @@
 >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 @@
 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


More information about the Python-3000-checkins mailing list