# 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)