#!/bin/bash function absdirname() { pushd $(dirname $0) >> /dev/null pwd popd >> /dev/null } BINDIR=$(absdirname "$0") PHP=${PHP:-php} PHPUNIT=${PHPUNIT:-phpunit} MODE=standalone XMLDIR= JSONDIR= while [ -n "$1" ]; do ARG="$1" shift case "$ARG" in --civi) MODE=civi ;; --civibuild-restore) CIVIBUILD_RESTORE="$1" shift ;; --test-dir) TESTSUITE="$1" shift ;; --json-dir) JSONDIR="$1" [ ! -d "$JSONDIR" ] && mkdir -p "$JSONDIR" shift ;; --xml-dir) XMLDIR="$1" [ ! -d "$XMLDIR" ] && mkdir -p "$XMLDIR" shift ;; *) echo "unrecognized option: $ARG" ;; esac done if [ -z "$TESTSUITE" ]; then echo "summary: Executes all tests in a suite (individually)" echo "usage: $0 --test-dir [--json-dir ] [--xml-dir ] [--civi] [--civibuild-restore ]" exit 1 fi #phpunit-ls "$TESTSUITE" $BINDIR/phpunit-ls "$TESTSUITE" | while read FILE CLASS METHOD ; do if [ -z "$FILE" -o ! -f "$FILE" ]; then continue; fi echo "[[Processing $FILE $CLASS::$METHOD]]" ## Optionally reset DBs if [ -n "$CIVIBUILD_RESTORE" ]; then civibuild restore "$CIVIBUILD_RESTORE" fi ## Prepare test command PHPUNITARGS="--tap" if [ -n "$JSONDIR" ]; then PHPUNITARGS="$PHPUNITARGS --log-json $JSONDIR/$CLASS-$METHOD.json" fi if [ -n "$XMLDIR" ]; then PHPUNITARGS="$PHPUNITARGS --log-junit $XMLDIR/$CLASS-$METHOD.xml" fi ## Run the test! if [ "$MODE" == "civi" ]; then $PHP ./scripts/phpunit $PHPUNITARGS --filter $METHOD'( with.*)?$' "$CLASS" fi if [ "$MODE" == "standalone" ]; then $PHP $(which $PHPUNIT) $PHPUNITARGS --filter $METHOD'( with.*)?$' "$FILE" fi done