Home | History | Annotate | Download | only in abbreviated
      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