72 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |