# Run tests
# We run ParseAll for each of the defined syntaxes,
# and run all of the JUnit tests indicated by files called Test*.java
# (if JUnit is available).

JAVAC=/nix/store/84kssxbjlfbjkah4hd8hpylkjnq5isb3-zulu8.54.0.21-ca-jdk-8.0.292/bin/javac
JAVA=/nix/store/84kssxbjlfbjkah4hd8hpylkjnq5isb3-zulu8.54.0.21-ca-jdk-8.0.292/bin/java

HAVE_JUNIT=:
LIBCLASSPATH=/checkouts/me/heptapod/unity/lib/commons-codec-1.13.jar:/checkouts/me/heptapod/unity/lib/commons-io-2.8.0.jar:/checkouts/me/heptapod/unity/lib/commons-lang3-3.11.jar:/checkouts/me/heptapod/unity/lib/commons-text-1.9.jar:/checkouts/me/heptapod/unity/lib/failureaccess-1.0.1.jar:/checkouts/me/heptapod/unity/lib/fluent-hc-4.5.13.jar:/checkouts/me/heptapod/unity/lib/guava-30.1.1-jre.jar:/checkouts/me/heptapod/unity/lib/hamcrest-core-1.1.jar:/checkouts/me/heptapod/unity/lib/hamcrest-core-1.3.jar:/checkouts/me/heptapod/unity/lib/httpclient-4.5.13.jar:/checkouts/me/heptapod/unity/lib/httpclient-cache-4.5.13.jar:/checkouts/me/heptapod/unity/lib/httpclient-osgi-4.5.13.jar:/checkouts/me/heptapod/unity/lib/httpcore-4.4.13.jar:/checkouts/me/heptapod/unity/lib/httpcore-nio-4.4.14.jar:/checkouts/me/heptapod/unity/lib/httpcore-osgi-4.4.14.jar:/checkouts/me/heptapod/unity/lib/httpmime-4.5.13.jar:/checkouts/me/heptapod/unity/lib/icu4j-3.4.4.jar:/checkouts/me/heptapod/unity/lib/iri-0.8.jar:/checkouts/me/heptapod/unity/lib/jackson-annotations-2.11.4.jar:/checkouts/me/heptapod/unity/lib/jackson-core-2.11.4.jar:/checkouts/me/heptapod/unity/lib/jackson-databind-2.11.4.jar:/checkouts/me/heptapod/unity/lib/javax.activation-api-1.2.0.jar:/checkouts/me/heptapod/unity/lib/jaxb-api-2.3.1.jar:/checkouts/me/heptapod/unity/lib/jcl-over-slf4j-1.7.31.jar:/checkouts/me/heptapod/unity/lib/jflex-1.4.3.jar:/checkouts/me/heptapod/unity/lib/joda-time-1.6.2.jar:/checkouts/me/heptapod/unity/lib/jsonld-java-0.13.3.jar:/checkouts/me/heptapod/unity/lib/junit-4.13.jar:/checkouts/me/heptapod/unity/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/checkouts/me/heptapod/unity/lib/mapdb-1.0.8.jar:/checkouts/me/heptapod/unity/lib/mrg-0.7.jar:/checkouts/me/heptapod/unity/lib/rdf4j-http-client-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-http-protocol-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-model-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-model-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-model-vocabulary-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-query-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryalgebra-evaluation-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryalgebra-model-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryparser-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryparser-sparql-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryresultio-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryresultio-binary-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-queryresultio-sparqlxml-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-repository-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-repository-sail-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-repository-sparql-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-datatypes-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-languages-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-ntriples-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-rdfxml-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-trig-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-rio-turtle-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-sail-api-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-sail-base-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-sail-memory-3.7.4.jar:/checkouts/me/heptapod/unity/lib/rdf4j-util-3.7.4.jar:/checkouts/me/heptapod/unity/lib/slf4j-api-1.7.31.jar:/checkouts/me/heptapod/unity/lib/slf4j-simple-1.7.31.jar:/checkouts/me/heptapod/unity/lib/xercesImpl-2.7.1.jar
#JTESTS=TestMisc TestDimensions
# the following is starting to be Clever (and therefore wicked)
JTESTS=$(shell ls Test*.java | sed s/.java//)
PARSERS=fits ogip cds vounits
#PARSERS=$(shell ls ../gen/uk/me/nxg/unity/Parser_*.java | sed 's/.*_\([a-z]*\).java/\1/')


../../grammar/testcases-%.csv: ../../grammar/testcases.csv
	cd ../../grammar; make `basename $@`


build/%.class: %.java build/STAMP
	$(JAVAC) -encoding UTF8 -d build -cp ../unity.jar:$(LIBCLASSPATH) $<


check: build/ParseAll.class check-junit \
		$(patsubst %,../../grammar/testcases-%.csv,$(PARSERS))
	$(JAVA) -ea -cp build:../unity.jar ParseAll \
	  -t $(patsubst %,-p%,$(PARSERS)) \
	  ../../grammar/testcases-%.csv

build/STAMP:
	test -d build || mkdir build
	date >build/STAMP

# Run JUnit tests if JUnit is available; otherwise silently skip them
check-junit:
	if $(HAVE_JUNIT); then $(MAKE) run-junit; else :; fi

run-junit: build/RunTests.class $(patsubst %,build/%.class,$(JTESTS))
	$(JAVA) -ea -cp build:../unity.jar:$(LIBCLASSPATH) RunTests $(JTESTS)

clean:
	rm -Rf build
