Merge pull request #4415 from rnao/add-participants-to-group
[civicrm-core.git] / tools / scripts / phpunit-indiv
index 6768418075edf22c4b903afb6e4d599469458a5f..c681c56be4199e793b884887ef3e189a26ff048d 100755 (executable)
@@ -1,33 +1,78 @@
 #!/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=
 
-if [ "$1" == "--civi" ]; then
-  MODE=civi
+while [ -n "$1" ]; do
+  ARG="$1"
   shift
-fi
 
-TESTSUITE="$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
 
-OUTDIR="$1"
-shift
 
-if [ -z "$TESTSUITE" -o -z "$OUTDIR" ]; then
+if [ -z "$TESTSUITE" ]; then
   echo "summary: Executes all tests in a suite (individually)"
-  echo "usage: $0 <test-suite-path> <output-dir>"
+  echo "usage: $0 --test-dir <dir> [--json-dir <dir>] [--xml-dir <dir>] [--civi] [--civibuild-restore <build-name>]"
   exit 1
 fi
 
-[ ! -d "$OUTDIR" ] && mkdir -p "$OUTDIR"
 
 #phpunit-ls "$TESTSUITE"
-phpunit-ls "$TESTSUITE" | while read FILE CLASS METHOD ; do
+$BINDIR/phpunit-ls "$TESTSUITE" | while read FILE CLASS METHOD ; do
+  ## 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 --tap --log-json "$OUTDIR/$CLASS-$METHOD.json" --filter $METHOD'( with.*)?$' "$CLASS"
+    $PHP ./scripts/phpunit $PHPUNITARGS --filter $METHOD'( with.*)?$' "$CLASS"
   fi
   if [ "$MODE" == "standalone" ]; then
-    $PHP $(which $PHPUNIT) --tap --log-json "$OUTDIR/$CLASS-$METHOD.json" --filter $METHOD'( with.*)?$' "$FILE"
+    $PHP $(which $PHPUNIT) $PHPUNITARGS --filter $METHOD'( with.*)?$' "$FILE"
   fi
 done