diff -r 650527b39f00 -r d982794784f1 make/RunTests.gmk --- a/make/RunTests.gmk Thu Jan 24 11:15:31 2019 +0100 +++ b/make/RunTests.gmk Thu Jan 24 11:19:40 2019 +0100 @@ -556,7 +556,7 @@ )) endif - run-test-$1: $$($1_AOT_TARGETS) + run-test-$1: pre-run-test $$($1_AOT_TARGETS) $$(call LogWarn) $$(call LogWarn, Running test '$$($1_TEST)') $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) @@ -596,7 +596,11 @@ $$(eval $1_TOTAL := 1) \ ) - TARGETS += run-test-$1 parse-test-$1 + $1: run-test-$1 parse-test-$1 + + TARGETS += $1 run-test-$1 parse-test-$1 + TEST_TARGETS += parse-test-$1 + endef ################################################################################ @@ -662,7 +666,7 @@ $1_MICRO_WARMUP_TIME := -w $$(MICRO_WARMUP_TIME) endif - run-test-$1: + run-test-$1: pre-run-test $$(call LogWarn) $$(call LogWarn, Running test '$$($1_TEST)') $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) @@ -702,7 +706,11 @@ $$(eval $1_TOTAL := 1) \ ) - TARGETS += run-test-$1 parse-test-$1 + $1: run-test-$1 parse-test-$1 + + TARGETS += $1 run-test-$1 parse-test-$1 + TEST_TARGETS += parse-test-$1 + endef ################################################################################ @@ -872,7 +880,7 @@ clean-workdir-$1: $$(RM) -r $$($1_TEST_SUPPORT_DIR) - run-test-$1: clean-workdir-$1 $$($1_AOT_TARGETS) + run-test-$1: pre-run-test clean-workdir-$1 $$($1_AOT_TARGETS) $$(call LogWarn) $$(call LogWarn, Running test '$$($1_TEST)') $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) @@ -921,7 +929,11 @@ $$(eval $1_TOTAL := 1) \ ) - TARGETS += run-test-$1 parse-test-$1 + $1: run-test-$1 parse-test-$1 clean-workdir-$1 + + TARGETS += $1 run-test-$1 parse-test-$1 clean-workdir-$1 + TEST_TARGETS += parse-test-$1 + endef ################################################################################ @@ -959,7 +971,7 @@ $$(error Invalid special test specification: $$($1_TEST_NAME)) endif - run-test-$1: $(TEST_PREREQS) + run-test-$1: pre-run-test $$(call LogWarn) $$(call LogWarn, Running test '$$($1_TEST)') $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR)) @@ -983,7 +995,11 @@ $$(eval $1_ERROR := 0) $$(eval $1_TOTAL := 0) - TARGETS += run-test-$1 parse-test-$1 + $1: run-test-$1 parse-test-$1 + + TARGETS += $1 run-test-$1 parse-test-$1 + TEST_TARGETS += parse-test-$1 + endef ################################################################################ @@ -1045,12 +1061,36 @@ # The main target for RunTests.gmk ################################################################################ -# The SetupRun*Test functions have populated TARGETS. +# +# Provide hooks for adding functionality before and after all tests are run. +# + +$(call LogInfo, RunTest setup starting) + +# This target depends on all actual test having been run (TEST_TARGETS has beeen +# populated by the SetupRun*Test functions). If you need to provide a teardown +# hook, you must let it depend on this target. +run-all-tests: $(TEST_TARGETS) + $(call LogInfo, RunTest teardown starting) +# This is an abstract target that will be run before any actual tests. Add your +# target as a dependency to thisif you need "setup" type functionality executed +# before all tests. +pre-run-test: + $(call LogInfo, RunTest setup done) + +# This is an abstract target that will be run after all actual tests, but before +# the test summary. If you need "teardown" type functionality, add your target +# as a dependency on this, and let the teardown target depend on run-all-tests. +post-run-test: run-all-tests + $(call LogInfo, RunTest teardown done) + +# +# Create and print a table of the result of all tests run +# TEST_FAILURE := false -run-test: $(TARGETS) - # Create and print a table of the result of all tests run +run-test-report: post-run-test $(RM) $(TEST_SUMMARY).old 2> /dev/null $(MV) $(TEST_SUMMARY) $(TEST_SUMMARY).old 2> /dev/null || true $(RM) $(TEST_LAST_IDS).old 2> /dev/null @@ -1094,6 +1134,11 @@ $(CAT) $(TEST_SUMMARY) $(ECHO) +# The main run-test target +run-test: run-test-report + +TARGETS += run-all-tests pre-run-test post-run-test run-test-report run-test + ################################################################################ # Setup JCov ################################################################################ @@ -1132,14 +1177,21 @@ $(call LogWarn, Stopping JCov Grabber...) $(JAVA) -jar $(JCOV_HOME)/lib/jcov.jar GrabberManager -stop -stoptimeout 3600 - jcov-gen-report: run-test jcov-stop-grabber + jcov-gen-report: jcov-stop-grabber $(call LogWarn, Generating JCov report ...) $(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar RepGen -sourcepath \ `$(ECHO) $(TOPDIR)/src/*/share/classes/ | $(TR) ' ' ':'` -fmt html \ -o $(JCOV_REPORT) $(JCOV_RESULT_FILE) - $(TARGETS): jcov-start-grabber - all: jcov-gen-report + TARGETS += jcov-do-start-grabber jcov-start-grabber jcov-stop-grabber \ + jcov-gen-report + + # Hook this into the framework at appropriate places + pre-run-test: jcov-start-grabber + + post-run-test: jcov-gen-report + + jcov-gen-report: run-all-tests endif @@ -1147,4 +1199,4 @@ all: run-test -.PHONY: default all run-test $(TARGETS) +.PHONY: default all $(TARGETS)