| #!/bin/bash | 
 |  | 
 | # TODO(davido): Figure out what to do if running alone and not invoked from bazel | 
 | # $1 is equal to the $(JAVABASE)/bin/java make variable | 
 | JAVA=$1 | 
 |  | 
 | # Checks whether or not the $1 is starting with a slash: '/' and thus considered to be | 
 | # an absolute path. If it is, then it is left as is, if it isn't then "$PWD/ is prepended | 
 | # (in sh_test case it is relative and thus the runfiles directory is prepended). | 
 | [[ "$JAVA" =~ ^(/|[^/]+$) ]] || JAVA="$PWD/$JAVA" | 
 |  | 
 | TESTS="t1 t2 t3" | 
 |  | 
 | # Note that both t1.pl and t2.pl test code in rules.pl. | 
 | # Unit tests are usually longer than the tested code. | 
 | # So it is common to test one source file with multiple | 
 | # unit test files. | 
 |  | 
 | LF=$'\n' | 
 | PASS="" | 
 | FAIL="" | 
 |  | 
 | echo "#### TEST_SRCDIR = ${TEST_SRCDIR}" | 
 |  | 
 | if [ "${TEST_SRCDIR}" == "" ]; then | 
 |   # Assume running alone | 
 |   GERRIT_WAR="../../bazel-bin/gerrit.war" | 
 |   SRCDIR="." | 
 | else | 
 |   # Assume running from bazel | 
 |   GERRIT_WAR=`pwd`/gerrit.war | 
 |   SRCDIR="prologtests/examples" | 
 | fi | 
 |  | 
 | # Default GERRIT_TMP is ~/.gerritcodereview/tmp, | 
 | # which won't be writable in a bazel test sandbox. | 
 | /bin/mkdir -p /tmp/gerrit | 
 | export GERRIT_TMP=/tmp/gerrit | 
 |  | 
 | for T in $TESTS | 
 | do | 
 |  | 
 |   pushd $SRCDIR | 
 |  | 
 |   # Unit tests do not need to define clauses in packages. | 
 |   # Use one prolog-shell per unit test, to avoid name collision. | 
 |   echo "### Running test ${T}.pl" | 
 |   echo "[$T]." | "${JAVA}" -jar ${GERRIT_WAR} prolog-shell -q -s load.pl | 
 |  | 
 |   if [ "x$?" != "x0" ]; then | 
 |     echo "### Test ${T}.pl failed." | 
 |     FAIL="${FAIL}${LF}FAIL: Test ${T}.pl" | 
 |   else | 
 |     PASS="${PASS}${LF}PASS: Test ${T}.pl" | 
 |   fi | 
 |  | 
 |   popd | 
 |  | 
 |   # java -jar ../../bazel-bin/gerrit.war prolog-shell -s $T < /dev/null | 
 |   # Calling prolog-shell with -s flag works for small files, | 
 |   # but got run-time exception with t3.pl. | 
 |   #   com.googlecode.prolog_cafe.exceptions.ReductionLimitException: | 
 |   #   exceeded reduction limit of 1048576 | 
 | done | 
 |  | 
 | echo "$PASS" | 
 |  | 
 | if [ "$FAIL" != "" ]; then | 
 |   echo "$FAIL" | 
 |   exit 1 | 
 | fi |