#!/bin/bash ## Settings # PYTHON=python2.4 TEST_DIR="test" TMP_DIR="tmp" ERROR_LIST="" ## Utility functions # usage() { echo -en "Usage:\n" echo -en "\t$0 [PATTERN]\n" echo -en "Example:\n" echo -en "\t$0\t\tRun all tests.\n" echo -en "\t$0 str\t\tRun all tests that contain 'str' in their name.\n" exit $1 } error() { echo "Error" echo " Failed test was $1" ERROR_LIST="$1 $ERROR_LIST" } settmp() { [ -d "$1" ] || mkdir -p "$1" } optparse() { ARG="" PATTERN="" while [ $# -ne 0 ] do ARG="$1" if [ "${ARG##-}" == $ARG ]; then PATTERN="$ARG" else TEST_OPT="$TEST_OPT $ARG" fi shift done } ## Code settmp $TMP_DIR optparse $@ echo "OPT $TEST_OPT" echo "PATTERN $PATTERN" if [ -z "$PATTERN" ]; then TEST_LIST=$(find $TEST_DIR -name '*.pl' -type f | while read FILE; do echo ${FILE##$TEST_DIR/}; done) else TEST_LIST=$(find $TEST_DIR -name "*.pl" -type f | grep "$PATTERN" | while read FILE; do echo ${FILE##$TEST_DIR/}; done) fi [ -z "$TEST_LIST" ] && usage 1 echo -e "Will run the following tests:\n "$TEST_LIST for FILE in $TEST_LIST; do echo -e "================\nTesting $FILE" settmp $TMP_DIR/$(dirname $FILE) $PYTHON ./EatPerl.py $TEST_OPT -i $TEST_DIR/$FILE -o $TMP_DIR/${FILE%%.pl}.py [ $? -eq 0 ] || error $FILE echo done echo -ne "/============\n| Tests:\n| "$TEST_LIST"\n| Results:\n| " if [ ! -z "$ERROR_LIST" ]; then echo -e "Failed tests are: "$ERROR_LIST else echo "All OK" fi echo -ne "\\============\n" #for file in test/*.pl; do # basename=`echo "$file" |cut -d '/' -f 2 |cut -d '.' -f 1` # echo "running $basename.pl ..." # ./EatPerl.py -f $file > test/runs/$basename.py #done #for run in test/runs/*.py; do # name=`echo "$run" | cut -d '/' -f 3` # echo "testing $name ..." # diff $run test/py/$name #done #rm test/runs/*