|  | #!/bin/bash | 
|  |  | 
|  | 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 |