blob: 80ba9deee315e1ae2aedc2f8fe1cb2110ccb6e45 [file] [log] [blame]
# Very rough testing framework for the annotator. Running 'make all' will
# look for all myClass.goal files in this directory, run the annotator on the
# corresponding .jaif and .java files, and then output the difference in a
# myClass.diff file in this directory.
#
# To test just one file, use (for example) 'make myClass.diff'.
# Put user-specific changes in your own Makefile.user.
# Make will silently continue if that file does not exist.
-include Makefile.user
# Override these in Makefile.user if the java and javac commands are not on
# your execution path. Example from Makefile.user:
# JAVA=${JAVA_HOME}/bin/java
# JAVAC=${JAVA_HOME}/bin/javac
export JAVA?=java -ea
export JAVAC?=javac
export XJAVAC?=javac
export SHELL=/bin/bash -o pipefail
DIFFS := $(wildcard *.goal)
DISABLED := $(shell grep -le "@skip-test" $(DIFFS))
FILTERED := $(filter-out $(DISABLED),$(DIFFS))
DIFFS := $(patsubst %.goal, %.diff, $(FILTERED))
DEBUG :=
# Use this to enable some debugging.
# DEBUG := --debug
default : all
.PHONY: all
all : $(DIFFS) abbreviated ad-hoc system-test source-extension results
.PHONY: abbreviated
abbreviated:
${MAKE} -C abbreviated
.PHONY: ad-hoc
ad-hoc:
${MAKE} -C ad-hoc
.PHONY: source-extension
source-extension:
${MAKE} -C source-extension
.PHONY: system-test
system-test:
${MAKE} -C system-test
# Display results of all .diff files.
.PHONY: results
results: bin/VerifyDiffs.class
@echo ""
@echo "=== RESULTS ==="
@echo ""
@$(JAVA) -cp bin VerifyDiffs --show_all
# Remakes the little java program that checks and compares diffs
bin/VerifyDiffs.class : VerifyDiffs.java
@$(JAVAC) -g -cp ../bincompile -d bin VerifyDiffs.java
# Compiles all the test cases (be verbose about this).
compile :
mkdir -p bin
$(XJAVAC) -g -cp ../bin -d bin *.java
.PRECIOUS : bin/annotator/tests/%.class
bin/annotator/tests/%.class: %.java
mkdir -p bin
# Added "-Xlint:-options" to see if it permits Jenkins job to succeed, due to
# problem "target value 1.8 is obsolete and will be removed in a future release"
$(XJAVAC) -Xlint:-options -g -cp bin:../annotation-file-utilities.jar -d bin -sourcepath . $*.java
# Actually runs the annotator to create the annotated java file.
.PRECIOUS: %.output
%.output: %.jaif %.java bin/annotator/tests/%.class ../lib/plume-core.jar ../bin ../annotation-file-utilities.jar
$(JAVA) \
-cp ../bin:../annotation-file-utilities.jar:bin \
annotator.Main \
${DEBUG} \
--abbreviate=false \
-d $*-output \
$*.jaif \
$*.java \
2>&1 | tee $*.log
find "$*-output" -name '*.java' -print | xargs cat > "$*.output"
rm -rf $*-output
# Compare the output of the annotator and the goal file.
%.diff: %.goal %.output
-diff -u $*.goal $*.output >& $*.diff
# Remove all .diff, .log files from the tests directory.
.PHONY: clean
clean :
rm -rf bin
rm -f *.diff
rm -f *.log
rm -f *.output
(cd abbreviated && make clean)
(cd ad-hoc && make clean)