1 # Very rough testing framework for the annotator. Running 'make all' will 2 # look for all myClass.goal files in this directory, run the annotator on the 3 # corresponding .jaif and .java files, and then output the difference in a 4 # myClass.diff file in this directory. 5 # 6 # To test just one file, use (for example) 'make myClass.diff'. 7 8 # Put user-specific changes in your own Makefile.user. 9 # Make will silently continue if that file does not exist. 10 -include ../Makefile.user 11 12 # Override these in Makefile.user if the java and javac commands are not on 13 # your execution path. Example from Makefile.user: 14 # JAVA=${JAVA_HOME}/bin/java 15 # JAVAC=${JAVA_HOME}/bin/javac 16 JAVA?=java 17 JAVAC?=javac 18 19 export SHELL=/bin/bash -o pipefail 20 21 22 DIFFS := $(wildcard *.goal) 23 DISABLED := $(shell grep -le "@skip-test" $(DIFFS)) 24 FILTERED := $(filter-out $(DISABLED),$(DIFFS)) 25 DIFFS := $(patsubst %.goal, %.diff, $(FILTERED)) 26 AFU_JARS := ../../lib/plume-core.jar ../../annotation-file-utilities.jar 27 JAIF := C.jaif 28 SRC := $(patsubst %.goal, %.java, $(FILTERED)) 29 OUT := $(patsubst %.goal, %.output, $(FILTERED)) 30 31 DEBUG := 32 # Use this to enable some debugging. 33 # DEBUG := --debug 34 35 default : all 36 37 .PHONY: all 38 all : $(DIFFS) results 39 40 # Display results of all .diff files. 41 .PHONY: results 42 results: ../bin/VerifyDiffs.class 43 @rm -rf output 44 @echo "" 45 @echo "=== RESULTS ===" 46 @echo "" 47 @$(JAVA) -cp bin:../bin VerifyDiffs --show_all 48 49 # Remakes the little java program that checks and compares diffs 50 ../bin/VerifyDiffs.class : ../VerifyDiffs.java 51 @$(JAVAC) -g -cp ../../bincompile -d ../bin ../VerifyDiffs.java 52 53 # Compiles all the test cases (be verbose about this). 54 .PHONY: compile 55 compile : $(SRC) 56 mkdir -p bin 57 $(JAVAC) -g -cp bin:../../bin -d bin -sourcepath . $(SRC) 58 59 # Actually runs the annotator to create the annotated java file. 60 output: compile $(JAIF) ../../bin $(AFU_JARS) 61 $(JAVA) \ 62 -cp ../../bin:../../annotation-file-utilities.jar:bin \ 63 annotator.Main \ 64 ${DEBUG} \ 65 --abbreviate=true \ 66 -d output \ 67 $(JAIF) \ 68 $(SRC) \ 69 2>&1 | tee C.log 70 71 .PRECIOUS: %.output 72 %.output: output 73 find output -name "$*.java" -print | xargs cat > "$*.output" 74 75 # Compare the output of the annotator and the goal file. 76 %.diff: %.goal %.output 77 -diff -u $*.goal $*.output >& $*.diff 78 79 # Remove all .diff, .log files from the tests directory. 80 .PHONY: clean 81 clean : 82 rm -rf bin 83 rm -f *.diff 84 rm -f *.log 85 rm -f *.output 86