| # System test of annotation tools |
| |
| # This test runs most of the AFU tools, on a single program |
| # source-ann/AnnotationTest.java that contains an annotation in every |
| # possible location. |
| |
| ANNCAT ?= ../../../scene-lib/anncat |
| JAVAVERSION = $(shell $(JAVA) -version 2>&1) |
| ifeq (1.7.,$(findstring 1.7.,$(JAVAVERSION))) |
| XJAVACTARGET = -source 7 -target 7 |
| endif |
| |
| #Switch the lines below to deactivate this test |
| all: clean results |
| #all: warn_and_exit |
| |
| warn_and_exit: |
| @echo "" |
| @echo "******************************************************" |
| @echo "Warning: The sytem test has been temporarily disabled!" |
| @echo "******************************************************" |
| @echo "" |
| |
| results: out1 check-out2 out3 out4.class check-out5 |
| |
| clean: |
| rm -rf out[1-5]* |
| |
| |
| # Step 1: Compile the source with annotations. |
| out1: |
| mkdir out1 |
| ${XJAVAC} ${XJAVACTARGET} -d out1 source-ann/AnnotationTest.java || (\rm -rf out1 && false) |
| |
| # Step 2: Convert the annotated class file to an annotation file. |
| # Do we get the right annotations? |
| out2.jaif: |
| CLASSPATH=`pwd`/out1 ${ANNCAT} --class out1/annotations/tests/AnnotationTest.class --out --index out2.jaif |
| |
| out2.diff: out2.jaif |
| diff -u expected-annos.jaif out2.jaif > out2.diff |
| |
| .PHONY: check-out2 |
| # Fail if out2.diff is non-empty |
| check-out2: out2.diff |
| [ ! -s out2.diff ] || (cat out2.diff && false) |
| |
| # Step 3: Compile the source without annotations. |
| out3: |
| mkdir out3 |
| ${XJAVAC} ${XJAVACTARGET} -d out3 source-plain/AnnotationTest.java || (\rm -rf out3 && false) |
| |
| # Step 4: Insert annotations into the class file. |
| # Can debug with: javap -v out4.class |
| out4.class: out3 |
| CLASSPATH=`pwd`/out1 ${ANNCAT} --index expected-annos.jaif --out --class out3/annotations/tests/AnnotationTest.class --to out4.class |
| |
| # Step 5: Convert the annotation-inserted class file to an annotation file. |
| # Do we get the right annotations? |
| # (The annotation-compiled and annotation-inserted class files tend to differ |
| # for stupid reasons (e.g., order of items in the constant pool), so we don't |
| # compare them.) |
| out5.jaif: out4.class |
| CLASSPATH=`pwd`/out1 ${ANNCAT} --class out4.class --out --index out5.jaif |
| |
| out5.diff: out5.jaif |
| diff -u expected-annos.jaif out5.jaif > out5.diff |
| |
| .PHONY: check-out5 |
| # Fail if out5.diff is non-empty |
| check-out5: out5.diff |
| [ ! -s out5.diff ] || (cat out5.diff && false) |