# It needs some parameterisation, e.g. module path, generated tests,
# etc.
-# Where to get junit4:
-# http://central.maven.org/maven2/junit/junit/4.12/junit-4.12.jar
-# http://central.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
+maven_central_JARS += junit:junit:4.13.2 org.hamcrest:hamcrest-core:1.3
-# this is from netbeans 11
-junit4_classpath ?= /usr/local/netbeans-11.0/platform/modules/ext/junit-4.12.jar \
- /usr/local/netbeans-11.0/platform/modules/ext/hamcrest-core-1.3.jar
-junit4_runner ?= org.junit.runner.JUnitCore
+junit4_runner = org.junit.runner.JUnitCore
+junit4_classpath = .lib/junit-4.13.2.jar .lib/hamcrest-core-1.3.jar
+
+dist_EXTRA += junit4.make
# ######################################################################
define java_tests=
-ifndef $(1)_TEST_JAVA
-$(1)_TEST_JAVA := $$(shell find src/$(1)/tests -type f -name '*.java')
-$(1)_TEST := $$(subst /,.,$$(basename $$(shell find src/$(1)/tests -type f -name '*Test.java' -printf '%P\n')))
-$(1)_IT := $$(subst /,.,$$(basename $$(shell find src/$(1)/tests -type f -name '*IT.java' -printf '%P\n')))
+ifndef $1_TEST_JAVA
+$1_TEST_JAVA := $$(patsubst src/$1/tests/%,%,$$(shell find src/$1/tests -type f -name '*.java'))
+$1_TEST := $$(subst /,.,$$(basename $$(filter %Test.java,$$($1_TEST_JAVA))))
+$1_IT := $$(subst /,.,$$(basename $$(filter %IT.java,$$($1_TEST_JAVA))))
+$1_TEST_PACKAGE := $$(subst /,.,$$(patsubst %/,%,$$(sort $$(dir $$($1_TEST_JAVA)))))
endif
-test: $(1)-test
-test-it: $(1)-it
-check: $(1)-test $(1)-it
-bin/status/$(1).tests: bin/status/$(1).classes $($1_TEST_JAVA)
+ifdef $1_TEST_JAVA
+test: $1-test
+test-it: $1-it
+check: $1-test $1-it
+bin/status/$1.tests: bin/status/$(1).classes $$($1_TEST_JAVA:%=src/$1/tests/%)
+endif
endef
$(foreach module,$(java_MODULES),$(if $(wildcard src/$(module)/tests),$(eval $(call java_tests,$(module)))))
-classpath $(subst $(S),:,$(junit4_classpath) ) \
--patch-module $*=src/$*/tests \
--add-reads $*=ALL-UNNAMED \
- -source 11 \
--module-source-path 'src/*/tests' \
- --module-path bin/modules \
+ --module-path $(subst $(S),:,bin/modules $(JAVAMODPATH)) \
-d bin/tests \
- $($*_TEST_JAVA)
+ $($*_TEST_JAVA:%=src/$*/tests/%)
touch $@
%-test: bin/status/%.tests
$(JAVA) \
--class-path $(subst $(S),:,$(junit4_classpath)) \
- --module-path bin/modules \
+ --module-path $(subst $(S),:,bin/modules $(JAVAMODPATH)) \
--patch-module $*=bin/tests/$* \
--add-modules $* \
--add-reads $*=ALL-UNNAMED \
+ $(patsubst %,--add-opens $*/%=ALL-UNNAMED,$($*_TEST_PACKAGE)) \
+ $(patsubst %,--add-exports $*/%=ALL-UNNAMED,$($*_TEST_PACKAGE)) \
$(junit4_runner) \
$($*_TEST)
--patch-module $*=bin/tests/$* \
--add-modules $* \
--add-reads $*=ALL-UNNAMED \
+ $(patsubst %,--add-opens $*/%=ALL-UNNAMED,$($*_TEST_PACKAGE)) \
+ $(patsubst %,--add-exports $*/%=ALL-UNNAMED,$($*_TEST_PACKAGE)) \
$(junit4_runner) \
$($*_IT)
junit5_module = org.junit.platform.console.standalone
junit5_launcher = org.junit.platform.console.ConsoleLauncher
+dist_EXTRA += junit5.make
+
# ######################################################################
define java_tests=
ifndef $$($1_TEST_JAVA)
-$1_TEST_JAVA := $(shell find src/$1/tests -type f -name '*.java')
-$1_TEST_PACKAGE = $$(subst /,.,$$(patsubst src/$1/tests/%/,%,$$(sort $$(dir $$($1_TEST_JAVA)))))
+$1_TEST_JAVA := $$(patsubst src/$1/tests/%,%,$(shell find src/$1/tests -type f -name '*.java'))
+$1_TEST_PACKAGE = $$(subst /,.,$$(patsubst %/,%,$$(sort $$(dir $$($1_TEST_JAVA)))))
endif
ifdef $1_TEST_JAVA
test: $1-test
test-it: $1-it
check: $1-test $1-it
-bin/status/$1.tests: bin/status/$1.classes $$($1_TEST_JAVA)
+bin/status/$1.tests: bin/status/$1.classes $$($1_TEST_JAVA:%=src/$1/tests/%)
.PHONY: $1-test $1-it
bin/status/$1.tests:
--add-reads $1=$(junit5_module),ALL-UNNAMED \
--module-source-path 'src/*/tests' \
-d bin/tests \
- $$($1_TEST_JAVA)
+ $$($1_TEST_JAVA:%=src/$1/tests/%)
touch $$@
$1-test: bin/status/$1.tests