mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-12-20 00:48:23 +00:00
183 lines
6.6 KiB
Bash
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
|
|
}
|