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