gentoo-ebuilds/dev-java/testng/testng-7.11.0.ebuild
Sam James 3258785b14
dev-java/testng: Stabilize 7.11.0 amd64, #966443
Signed-off-by: Sam James <sam@gentoo.org>
2025-11-24 21:46:20 +00:00

183 lines
6.6 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
JAVA_PKG_IUSE="doc source test"
JAVA_TESTING_FRAMEWORKS="testng"
inherit java-pkg-2 java-pkg-simple
# Presently we install the binary version of jquery since it is not packaged in ::gentoo.
JQV="3.7.1" # jquery
# These are used only for tests, we don't install them.
AGV="5.0.2" # groovyc compiler
GAV="3.0.22" # groovy
JCV="3.0.1" # jlibs-core, to be packaged
KCV="2.2.0" # kotlin-compiler
DESCRIPTION="Testing framework inspired by JUnit and NUnit with new features"
HOMEPAGE="https://testng.org/"
SRC_URI="https://github.com/testng-team/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
https://repo1.maven.org/maven2/org/webjars/jquery/${JQV}/jquery-${JQV}.jar
test? (
mirror://apache/groovy/${AGV}/distribution/apache-groovy-binary-${AGV}.zip
https://github.com/JetBrains/kotlin/releases/download/v${KCV}/kotlin-compiler-${KCV}.zip
https://repo1.maven.org/maven2/in/jlibs/jlibs-core/${JCV}/jlibs-core-${JCV}.jar
https://repo1.maven.org/maven2/org/codehaus/groovy/groovy/${GAV}/groovy-${GAV}.jar
)"
S="${WORKDIR}/${P}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
BDEPEND="app-arch/unzip"
CP_DEPEND="
>=dev-java/guice-7.0.0:0
>=dev-java/jcommander-1.83:0
dev-java/slf4j-api:0
>=dev-java/snakeyaml-2.5:0
"
DEPEND="
${CP_DEPEND}
>=virtual/jdk-11:*
test? (
>=dev-java/assertj-core-3.27.6:0
>=dev-java/bsh-2.1.1-r2:0
>=dev-java/commons-io-2.20.0:0
>=dev-java/guava-33.5.0:0
>=dev-java/javax-inject-1-r4:0
>=dev-java/jetbrains-annotations-26.0.2:0
dev-java/junit:4
>=dev-java/mockito-5.20.0:0
>=dev-java/shrinkwrap-api-1.2.6:0
>=dev-java/shrinkwrap-impl-base-1.2.6:0
>=dev-java/slf4j-simple-2.0.3:0
>=dev-java/xmlunit-core-2.11.0:0
)
"
# reason: '<>' with anonymous inner classes is not supported in -source 8
# (use -source 9 or higher to enable '<>' with anonymous inner classes)
RDEPEND="
${CP_DEPEND}
>=virtual/jre-11:*
dev-java/jsr305:0
"
DOCS=( README.md {ANNOUNCEMENT,CHANGES}.txt )
PATCHES=(
"${FILESDIR}/testng-7.11.0-skipDynamicDataProviderLoadingTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-ClassHelperTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-FailedInvocationCountTest.patch" # needs network
"${FILESDIR}/testng-7.11.0-SkipFrom-FailedReporterTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-GroovyTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-GuiceTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-HookableTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-JitBindingTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-ScriptTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-XmlSuiteTest.patch"
"${FILESDIR}/testng-7.11.0-SkipFrom-YamlTest.patch"
)
JAVA_AUTOMATIC_MODULE_NAME="org.testng"
JAVA_MAIN_CLASS="org.testng.TestNG"
JAVA_RESOURCE_DIRS="testng-core/src/main/resources"
JAVA_SRC_DIR=(
testng-asserts/src/main/java
testng-collections/src/main/java
testng-core-api/src/main/java
testng-core/src/main/java
testng-reflection-utils/src/main/java
testng-runner-api/src/main/java
)
JAVA_TEST_EXTRA_ARGS=( -Dtest.resources.dir=src/test/resources )
JAVA_TEST_GENTOO_CLASSPATH="assertj-core bsh commons-io guice javax-inject jetbrains-annotations junit-4 mockito shrinkwrap-api shrinkwrap-impl-base slf4j-simple xmlunit-core"
JAVA_TEST_RESOURCE_DIRS="src/test/resources"
JAVA_TEST_RUN_ONLY="testng-core/src/test/resources/testng.xml"
JAVA_TEST_SRC_DIR=(
testng-core/src/test
testng-asserts/src/test
testng-test-kit/src/main/java
# testng-test-osgi/src/test/java # error: package org.ops4j.pax.exam does not exist
)
src_unpack () {
# do not unpack anything except testng
unpack "${P}.tar.gz"
}
src_prepare() {
default # bug #780585
java-pkg-2_src_prepare
java-pkg_clean ! -path "./testng-core/src/test/*"
mkdir -p src/test || die
cp -vr testng-core/src/test/resources src/test || die "move test resources"
mkdir -p build/resources/test || die
cp {testng-core/src/test/resources,build/resources/test}/2532.xml || die
}
src_test() {
# import org.netbeans.lib.profiler.heap.HeapFactory2 # error: unresolved reference 'HeapFactory2'
# Tried with 'org-netbeans-lib-profiler-2.2.0.jar' which contains 'HeapFactory' but not 'HeapFactory2'.
rm testng-core/src/test/kotlin/org/testng/dataprovider/DynamicDataProviderLoadingTest.kt || die
# With a patch we also remove it from testng-core/src/test/resources/testng.xml
# Removing the above file leads to:
# import org.testng.dataprovider.DynamicDataProviderLoadingTest
# error: unresolved reference 'DynamicDataProviderLoadingTest'.
rm testng-core/src/test/kotlin/org/testng/dataprovider/sample/issue2724/SampleDPUnloaded.kt || die
# Almost all tests want to 'import test.SimpleBaseTest;'. In the past this was
# built from 'SimpleBaseTest.java' which was changed to 'SimpleBaseTest.kt'.
# Step 1 creates a list of sources to be processed with 'kotlinc'
# (the kotlin compiler), then lets it create the classes.
unzip -q "${DISTDIR}/kotlin-compiler-${KCV}.zip" || die "unzip kotlin"
local CP="${DISTDIR}/jlibs-core-${JCV}.jar"
find ${JAVA_TEST_SRC_DIR[@]} \
-type f \( -name '*.kt' -o -name '*.java' \) \
> testng_kotlinc_sources || die "find for kotlinc"
einfo "Running kotlinc"
kotlinc/bin/kotlinc \
-cp "${PN}.jar:${CP}:$(java-pkg_getjars --build-only assertj-core)" \
-d generated-test @testng_kotlinc_sources || die "kotlinc"
# Step 2 creates a few classes which are needed for processing '*.groovy' sources.
find ${JAVA_TEST_SRC_DIR[@]} -type f -name 'InvokedMethodNameListener.java' \
> testng_ejavac_sources || die "find"
einfo "Running ejavac"
ejavac \
-cp "${PN}.jar:generated-test:$(java-pkg_getjars --build-only guava)" \
-d generated-test @testng_ejavac_sources
# Step 3 creates a list of '*.groovy' sources and passes it to
# groovyc (the groovy compiler) for creating the classes.
unzip -q "${DISTDIR}/apache-groovy-binary-${AGV}.zip" || die
find ${JAVA_TEST_SRC_DIR[@]} -type f -name '*.groovy' \
> testng_groovy_sources || die "find"
einfo "Running groovyc"
"groovy-${AGV}/bin/groovyc" \
-cp generated-test:"$(java-pkg_getjars --build-only assertj-core)" \
-d generated-test @testng_groovy_sources || die
# Step 4 finally builds all remaining test-classes and runs the tests.
JAVA_GENTOO_CLASSPATH_EXTRA="${DISTDIR}/groovy-${GAV}.jar"
JAVA_GENTOO_CLASSPATH_EXTRA+=":kotlinc/lib/kotlin-stdlib.jar"
JAVA_GENTOO_CLASSPATH_EXTRA+=":kotlinc/lib/kotlin-reflect.jar"
JAVA_TEST_EXTRA_ARGS=( -Dtest.resources.dir=src/test/resources )
java-pkg-simple_src_test
}
src_install() {
java-pkg-simple_src_install
java-pkg_newjar "${DISTDIR}/jquery-${JQV}.jar" jquery.jar
java-pkg_regjar "${ED}/usr/share/${PN}/lib/jquery.jar"
java-pkg_register-dependency jsr305
}