blob: b2883ebe4895211f3dd7086e9ed850c1ab9e84a9 [file] [log] [blame]
#!/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