%bcond_with bootstrap
Name: easymock
Version: 4.3
Release: %autorelease
Summary: Easy mock objects
License: Apache-2.0
URL: https://www.easymock.org
# ./generate-tarball.sh
Source0: %{name}-%{version}.tar.gz
# Remove bundled binaries which cannot be easily verified for licensing
Source1: generate-tarball.sh
Patch: 0001-Disable-android-support.patch
Patch: 0002-Unshade-cglib-and-asm.patch
Patch: 0003-Fix-OSGi-manifest.patch
Patch: 0004-Port-to-hamcrest-2.1.patch
BuildArch: noarch
ExclusiveArch: %{java_arches} noarch
%if %{with bootstrap}
BuildRequires: javapackages-bootstrap
%else
BuildRequires: maven-local
BuildRequires: mvn(cglib:cglib)
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-remote-resources-plugin)
BuildRequires: mvn(org.apache.maven.surefire:surefire-junit-platform)
BuildRequires: mvn(org.apache.maven.surefire:surefire-testng)
BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin)
BuildRequires: mvn(org.junit.jupiter:junit-jupiter)
BuildRequires: mvn(org.junit.vintage:junit-vintage-engine)
BuildRequires: mvn(org.objenesis:objenesis)
BuildRequires: mvn(org.ow2.asm:asm)
BuildRequires: mvn(org.testng:testng)
%endif
# xmvn-builddep misses this:
%if %{without bootstrap}
BuildRequires: mvn(org.apache:apache-jar-resource-bundle)
%endif
Provides: %{name}3 = %{version}-%{release}
%description
EasyMock provides Mock Objects for interfaces in JUnit tests by generating
them on the fly using Java's proxy mechanism. Due to EasyMock's unique style
of recording expectations, most refactorings will not affect the Mock Objects.
So EasyMock is a perfect fit for Test-Driven Development.
%package javadoc
Summary: Javadoc for %{name}
%description javadoc
Javadoc for %{name}.
%prep
%autosetup -p1 -C
%pom_remove_plugin :license-maven-plugin
%pom_remove_plugin :maven-enforcer-plugin
%pom_remove_plugin :animal-sniffer-maven-plugin
%pom_remove_plugin :animal-sniffer-maven-plugin core
%pom_remove_plugin :maven-gpg-plugin test-testng
%pom_remove_plugin :maven-gpg-plugin test-java8
%pom_remove_plugin :maven-gpg-plugin test-junit5
# remove android support
rm core/src/main/java/org/easymock/internal/Android*.java
rm core/src/test/java/org/easymock/tests2/ClassExtensionHelperTest.java
%pom_disable_module test-android
%pom_remove_dep :dexmaker core
# unbundle asm and cglib
%pom_disable_module test-nodeps
%pom_remove_plugin :maven-shade-plugin core
# missing test deps
%pom_disable_module test-integration
%pom_disable_module test-osgi
# remove some warning caused by unavailable plugin
%pom_remove_plugin org.codehaus.mojo:versions-maven-plugin
# retired
%pom_remove_plugin :maven-timestamp-plugin
# For compatibility reasons
%mvn_file ":easymock{*}" easymock@1 easymock3@1
# ssh not needed during our builds
%pom_xpath_remove pom:extensions
# Force Surefire to run tests with JUnit, not with TestNG
%pom_xpath_inject "pom:plugin[pom:artifactId='maven-surefire-plugin']" \
"none:none" core
# Workaround Java 17 compatibility issue that should be fixed in
# easymock 4.4: https://github.com/easymock/easymock/issues/274
%pom_xpath_inject "pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:configuration" \
"--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED" core
%pom_xpath_inject "pom:plugin[pom:artifactId='maven-surefire-plugin']/pom:configuration" \
"--add-opens=java.base/java.lang=ALL-UNNAMED" test-testng
%pom_add_plugin :maven-surefire-plugin test-java8 "
--add-opens=java.base/java.lang=ALL-UNNAMED"
%pom_add_plugin :maven-surefire-plugin test-junit5 "
--add-opens=java.base/java.lang=ALL-UNNAMED"
%build
%mvn_build
%install
%mvn_install
%files -f .mfiles
%license core/LICENSE.txt
%files javadoc -f .mfiles-javadoc
%license core/LICENSE.txt
%changelog
%autochangelog