# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=9 JAVA_PKG_IUSE="doc source test" JAVA_TESTING_FRAMEWORKS="junit-vintage" inherit java-pkg-2 java-pkg-simple junit5 DESCRIPTION="Mockito mock objects library core API and implementation" HOMEPAGE="https://github.com/mockito/mockito" SRC_URI="https://github.com/mockito/mockito/archive/v${PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/${P}" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~arm64 ~ppc64" DEPEND=" >=dev-java/apiguardian-api-1.1.2-r1:0 >=dev-java/asm-9.10.1:0 >=dev-java/byte-buddy-1.18.10:0 >=dev-java/hamcrest-3.0:0 >=dev-java/jna-5.18.1:0 >=dev-java/jspecify-1.0.0:0 >=dev-java/jsr305-3.0.2-r1:0 dev-java/junit:4 >=dev-java/objenesis-3.4:0 >=dev-java/opentest4j-1.3.0-r1:0 >=virtual/jdk-11:* >=dev-java/assertj-core-3.27.7:0 " # virtual/jre lower than 11 would cause a compilation error: # src/main/java/org/mockito/internal/stubbing/defaultanswers/ReturnsDeepStubs.java:57: # error: cannot find symbol # final var emptyValue = ReturnsEmptyValues.returnCommonEmptyValueFor(rawType); # ^ # symbol: class var RDEPEND=">=virtual/jre-11:*" PATCHES=( "${FILESDIR}"/mockito-5.24.0-skipFailingTests.patch ) JAVA_CLASSPATH_EXTRA="apiguardian-api asm byte-buddy hamcrest jna jspecify jsr305 objenesis opentest4j" JAVA_TEST_SRC_DIR="mockito-core/src/test/java" src_prepare() { java-pkg-2_src_prepare # prevent assertj-core and junit:{4,5} to pull hamcrest-core on classpath JAVA_GENTOO_CLASSPATH_EXTRA=":$(java-pkg_getjars --build-only \ assertj-core,junit-4,junit-5)" # dev-java/byte-buddy is built from byte-buddy-dep without shaded stuff. sed \ -i -e 's:net.bytebuddy.jar.asm:org.objectweb.asm:' \ mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/MockMethodAdvice.java \ mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/InlineBytecodeGenerator.java \ mockito-core/src/main/java/org/mockito/internal/creation/bytebuddy/ClinitSuppressionTransformer.java \ mockito-core/src/test/java/org/mockito/internal/creation/bytebuddy/ClinitSuppressionTransformerTest.java } src_compile() { JAVA_JAR_FILENAME="mockito-core.jar" JAVA_SRC_DIR="mockito-core/src/main/java" java-pkg-simple_src_compile JAVA_GENTOO_CLASSPATH_EXTRA+=":mockito-core.jar" # save MockMethodDispatcher.class for compiling test-classes mkdir -p dispatcher/org/mockito/internal/creation/bytebuddy/inject || die cp target/classes/org/mockito/internal/creation/bytebuddy/inject/MockMethodDispatcher.class \ dispatcher/org/mockito/internal/creation/bytebuddy/inject || die # rename according to mockito-core/build.gradle.kts mv target/classes/org/mockito/internal/creation/bytebuddy/inject/MockMethodDispatcher.class \ target/classes/org/mockito/internal/creation/bytebuddy/inject-MockMethodDispatcher.raw || die # rm mockito-core.jar || die jar cf mockito-core.jar -C target/classes . || die "refresh core.jar" rm -r target/classes || die "clean classes" JAVA_JAR_FILENAME="mockito-junit-jupiter.jar" JAVA_SRC_DIR="mockito-extensions/mockito-junit-jupiter/src/main/java" java-pkg-simple_src_compile } src_test() { find mockito-core/src/testFixtures/java -type f -name '*.java' > testFixtures.lst || die ejavac -d testFixtures @testFixtures.lst \ -cp mockito-core.jar:"$(java-pkg_getjars --with-dependencies \ --build-only assertj-core,junit-4,objenesis)" JAVA_GENTOO_CLASSPATH_EXTRA+=":testFixtures:dispatcher" # TODO: MockMethodDispatcher.class is needed on classpath # for compiling InlineDelegateByteBuddyMockMakerTest.java # but must not be there when running the tests. JAVA_TEST_RUN_ONLY=( org.mockito.MockitoClearTest ) # fails if not run separately junit5_src_test JAVA_TEST_RUN_ONLY=() JAVA_TEST_EXCLUDES=( org.mockito.MockitoClearTest ) junit5_src_test } src_install() { JAVA_JAR_FILENAME="mockito-core.jar" java-pkg-simple_src_install java-pkg_dojar mockito-junit-jupiter.jar }