This is an automated email from the ASF dual-hosted git repository.
lewismc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nutch.git
The following commit(s) were added to refs/heads/master by this push:
new 4c04a9847 NUTCH-2887 Migrate to JUnit 5 Jupiter (#861)
4c04a9847 is described below
commit 4c04a9847ac9d76cc930eb17267e7f28e3f93e05
Author: Lewis John McGibbney <[email protected]>
AuthorDate: Fri Sep 5 06:27:22 2025 -0700
NUTCH-2887 Migrate to JUnit 5 Jupiter (#861)
---
build.xml | 73 +++++++++++++++++++++++----------------------
default.properties | 2 +-
ivy/ivy.xml | 6 +++-
src/plugin/build-plugin.xml | 35 +++++++++++++++++++---
4 files changed, 74 insertions(+), 42 deletions(-)
diff --git a/build.xml b/build.xml
index 7979d79eb..b24222ff2 100644
--- a/build.xml
+++ b/build.xml
@@ -475,55 +475,56 @@
</antcall>
</target>
- <target name="test-core" depends="compile-core-test, job" description="-->
run core JUnit tests only">
-
+ <target name="test-core" depends="compile-core-test, job" description="-->
run core JUnit tests">
<delete dir="${test.build.data}"/>
<mkdir dir="${test.build.data}"/>
- <!--
- copy resources needed in junit tests
- -->
<copy todir="${test.build.data}">
<fileset dir="src/testresources" includes="**/*"/>
</copy>
+ <copy file="${test.src.dir}/log4j.properties"
todir="${test.build.classes}"/>
+ <copy file="${test.src.dir}/crawl-tests.xml"
todir="${test.build.classes}"/>
+ <copy file="${test.src.dir}/domain-urlfilter.txt"
todir="${test.build.classes}"/>
+ <copy file="${test.src.dir}/filter-all.txt" todir="${test.build.classes}"/>
- <copy file="${test.src.dir}/log4j.properties"
- todir="${test.build.classes}"/>
-
- <copy file="${test.src.dir}/crawl-tests.xml"
- todir="${test.build.classes}"/>
-
- <copy file="${test.src.dir}/domain-urlfilter.txt"
- todir="${test.build.classes}"/>
-
- <copy file="${test.src.dir}/filter-all.txt"
- todir="${test.build.classes}"/>
-
- <junit printsummary="yes" haltonfailure="no" fork="yes" dir="${basedir}"
- errorProperty="tests.failed" failureProperty="tests.failed"
maxmemory="1000m">
- <sysproperty key="test.build.data" value="${test.build.data}"/>
- <sysproperty key="test.src.dir" value="${test.src.dir}"/>
- <sysproperty key="test.include.slow" value="${test.include.slow}"/>
- <sysproperty key="javax.xml.parsers.DocumentBuilderFactory"
value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
+ <junitlauncher printSummary="true" haltOnFailure="true"
failureProperty="tests.failed">
<classpath refid="test.classpath"/>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.build.dir}" unless="testcase">
- <fileset dir="${test.src.dir}"
- includes="**/Test*.java" excludes="**/${test.exclude}.java" />
- </batchtest>
- <batchtest todir="${test.build.dir}" if="testcase">
- <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
- </batchtest>
- </junit>
+ <testclasses outputDir="${test.build.dir}" unless="testcase"
includeEngines="junit-vintage">
+ <listener type="${test.junit.output.format}" sendSysOut="true"
sendSysErr="true"/>
+ <fork dir="${basedir}">
+ <jvmarg value="-Xmx1000m"/>
+ <sysproperty key="test.build.data" value="${test.build.data}"/>
+ <sysproperty key="test.src.dir" value="${test.src.dir}"/>
+ <sysproperty key="test.include.slow" value="${test.include.slow}"/>
+ <sysproperty key="javax.xml.parsers.DocumentBuilderFactory"
value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
+ </fork>
+ <fileset dir="${test.build.classes}">
+ <include name="**/Test*.class"/>
+ <exclude name="**/${test.exclude}.class"/>
+ </fileset>
+ </testclasses>
+ <testclasses outputDir="${test.build.dir}" if="testcase"
includeEngines="junit-vintage">
+ <listener type="${test.junit.output.format}" sendSysOut="true"
sendSysErr="true"/>
+ <fork dir="${basedir}">
+ <jvmarg value="-Xmx1000m"/>
+ <sysproperty key="test.build.data" value="${test.build.data}"/>
+ <sysproperty key="test.src.dir" value="${test.src.dir}"/>
+ <sysproperty key="test.include.slow" value="${test.include.slow}"/>
+ <sysproperty key="javax.xml.parsers.DocumentBuilderFactory"
value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
+ </fork>
+ <fileset dir="${test.build.classes}">
+ <include name="**/${testcase}.class"/>
+ </fileset>
+ </testclasses>
+ </junitlauncher>
<fail if="tests.failed">Tests failed!</fail>
-
</target>
- <target name="test-plugins" depends="resolve-test, compile,
compile-core-test" description="--> run plugin JUnit tests only">
+ <target name="test-plugins" depends="resolve-test, compile,
compile-core-test" description="--> run JUnit tests for all plugins">
<ant dir="src/plugin" target="test" inheritAll="false"/>
</target>
- <target name="test-plugin" depends="resolve-test, compile,
compile-core-test" description="--> run a single plugin's JUnit tests">
+ <target name="test-plugin" depends="resolve-test, compile,
compile-core-test" description="--> run JUnit tests for a single plugin">
<ant dir="src/plugin" target="test-single" inheritAll="false"/>
</target>
@@ -541,7 +542,7 @@
<antcall target="copy-libs"/>
</target>
- <target name="resolve-test" depends="clean-test-lib, init" description="-->
resolve and retrieve dependencies with ivy">
+ <target name="resolve-test" depends="clean-test-lib, init" description="-->
resolve and retrieve test dependencies with ivy">
<ivy:resolve file="${ivy.file}" conf="test" log="download-only"/>
<ivy:retrieve
pattern="${test.build.lib.dir}/[artifact]-[revision](-[classifier]).[ext]"
symlink="false" log="quiet"/>
<antcall target="copy-libs"/>
diff --git a/default.properties b/default.properties
index 111b8d349..4a79aad3f 100644
--- a/default.properties
+++ b/default.properties
@@ -38,7 +38,7 @@ test.build.lib.dir = ${test.build.dir}/lib
test.build.data = ${test.build.dir}/data
test.build.classes = ${test.build.dir}/classes
test.build.javadoc = ${test.build.dir}/docs/api
-test.junit.output.format = plain
+test.junit.output.format = legacy-plain
# Proxy Host and Port to use for building JavaDoc
javadoc.proxy.host=-J-DproxyHost=
diff --git a/ivy/ivy.xml b/ivy/ivy.xml
index fef59579b..cf32e0bc0 100644
--- a/ivy/ivy.xml
+++ b/ivy/ivy.xml
@@ -118,8 +118,12 @@
<exclude org="org.gnu.inet" module="libidn" /><!-- LGPL
2.1 -->
</dependency>
- <!--artifacts needed for testing -->
+ <!-- Keep the JUnit 4 dependency for test compilation and
runtime support. Remove once migration is complete -->
<dependency org="junit" name="junit" rev="4.13.2"
conf="test->default" />
+ <!-- JUnit 5 Platform Launcher (required for <junitlauncher> task) -->
+ <dependency org="org.junit.platform" name="junit-platform-launcher"
rev="1.13.4" conf="test->default"/>
+ <!-- JUnit Vintage Engine (to run existing JUnit 4 tests). Remove once
migration is complete -->
+ <dependency org="org.junit.vintage" name="junit-vintage-engine"
rev="5.13.4" conf="test->default"/>
<dependency org="org.apache.mrunit" name="mrunit" rev="1.1.0"
conf="test->default">
<artifact name="mrunit" ns0:classifier="hadoop2" />
<exclude org="log4j" module="log4j" />
diff --git a/src/plugin/build-plugin.xml b/src/plugin/build-plugin.xml
index 0c8907398..5dabc3a7c 100755
--- a/src/plugin/build-plugin.xml
+++ b/src/plugin/build-plugin.xml
@@ -80,8 +80,9 @@
</fileset>
<!-- global test dependencies -->
<fileset dir="${nutch.root}/build/test/lib">
- <include name="junit*.jar" />
<include name="hamcrest*.jar" />
+ <include name="junit*.jar" />
+ <include name="opentest4j*.jar" />
</fileset>
<path refid="classpath"/>
</path>
@@ -208,7 +209,7 @@
<target name="test" depends="compile-test, deploy" if="test.available">
<echo message="Testing plugin: ${name}"/>
- <junit printsummary="yes" haltonfailure="no" fork="yes"
+ <!--junit printsummary="yes" haltonfailure="no" fork="yes"
errorProperty="tests.failed" failureProperty="tests.failed">
<sysproperty key="test.data" value="${build.test}/data"/>
<sysproperty key="test.input" value="${root}/data"/>
@@ -222,10 +223,36 @@
<batchtest todir="${build.test}" if="testcase">
<fileset dir="${src.test}" includes="**/${testcase}.java"/>
</batchtest>
- </junit>
+ </junit-->
- <fail if="tests.failed">Tests failed!</fail>
+ <junitlauncher printSummary="true" haltOnFailure="true"
failureProperty="tests.failed">
+ <classpath refid="test.classpath"/>
+ <testclasses outputDir="${build.test}" unless="testcase">
+ <listener type="${test.junit.output.format}" sendSysOut="true"
sendSysErr="true"/>
+ <fork dir="${basedir}">
+ <sysproperty key="test.data" value="${build.test}/data"/>
+ <sysproperty key="test.input" value="${root}/data"/>
+ <sysproperty key="javax.xml.parsers.DocumentBuilderFactory"
value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
+ </fork>
+ <fileset dir="${build.test}">
+ <include name="**/Test*.class"/>
+ <exclude name="**/${test.exclude}.class"/>
+ </fileset>
+ </testclasses>
+ <testclasses outputDir="${build.test}" if="testcase">
+ <listener type="${test.junit.output.format}" sendSysOut="true"
sendSysErr="true"/>
+ <fork dir="${basedir}">
+ <sysproperty key="test.data" value="${build.test}/data"/>
+ <sysproperty key="test.input" value="${root}/data"/>
+ <sysproperty key="javax.xml.parsers.DocumentBuilderFactory"
value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
+ </fork>
+ <fileset dir="${build.test}">
+ <include name="**/${testcase}.class"/>
+ </fileset>
+ </testclasses>
+ </junitlauncher>
+ <fail if="tests.failed">Tests failed!</fail>
</target>
<!-- target: resolve ================================================= -->