#!/bin/sh # # run unit tests under nose if available, # optionally with coverage # # test.sh [cover [gluon.rewrite]] # # easy_install nose # easy_install coverage # NOSETESTS=nosetests COVER=gluon # change to (eg) gluon.rewrite to collect coverage stats on a single module PROCESSES=4 WHICH=`which $NOSETESTS` if [ "$WHICH" == "" ]; then # if nose isn't available, run the tests directly for testmod in test_*.py; do python $testmod done else if [ "$1" = "cover" ]; then # note: coverage doesn't handle multiple processes if [ "$2" != "" ]; then COVER=$2 fi $NOSETESTS --with-coverage --cover-package=$COVER --cover-erase elif [ "$1" = "doctest" ]; then # this has to run in gluon's parent; needs work # # the problem is that doctests run this way have a very different environment, # apparently due to imports that don't happen in the normal course of running # doctest via __main__. # echo doctest not supported >&2 exit 1 if [ ! -d gluon ]; then cd ../.. fi $NOSETESTS --with-doctest else $NOSETESTS --processes=$PROCESSES fi fi