| #!/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 $1in |
| -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 Tin $TESTS |
| do |
| echo-n $T |
| ifcase $Tin |
| *curses*) |
| echo |
| $PYTHON-ELib/test/regrtest.py $FLAGS $T2>OUT/$T.out |
| ;; |
| *) $PYTHON-ELib/test/regrtest.py $FLAGS $T>OUT/$T.out2>&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 |