6
0
forked from pool/powermock
Files
powermock/powermock.spec
2025-08-21 13:32:24 +02:00

305 lines
12 KiB
RPMSpec

#
# spec file for package powermock
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global desc \
PowerMock is a framework that extend other mock libraries\
such as EasyMock with more powerful capabilities. PowerMock uses a\
custom classloader and bytecode manipulation to enable mocking of\
static methods, constructors, final classes and methods, private\
methods, removal of static initializers and more.
Name: powermock
Version: 2.0.9
Release: 0
Summary: A Java mocking framework
License: Apache-2.0
Group: Development/Libraries/Java
URL: https://github.com/powermock/powermock
Source0: https://github.com/powermock/%{name}/archive/%{name}-%{version}.tar.gz
Source10: https://repo1.maven.org/maven2/org/powermock/powermock-api-support/%{version}/powermock-api-support-%{version}.pom
Source11: https://repo1.maven.org/maven2/org/powermock/powermock-api-easymock/%{version}/powermock-api-easymock-%{version}.pom
Source12: https://repo1.maven.org/maven2/org/powermock/powermock-api-mockito2/%{version}/powermock-api-mockito2-%{version}.pom
Source13: https://repo1.maven.org/maven2/org/powermock/powermock-classloading-base/%{version}/powermock-classloading-base-%{version}.pom
Source14: https://repo1.maven.org/maven2/org/powermock/powermock-classloading-xstream/%{version}/powermock-classloading-xstream-%{version}.pom
Source15: https://repo1.maven.org/maven2/org/powermock/powermock-classloading-objenesis/%{version}/powermock-classloading-objenesis-%{version}.pom
Source16: https://repo1.maven.org/maven2/org/powermock/powermock-core/%{version}/powermock-core-%{version}.pom
Source17: https://repo1.maven.org/maven2/org/powermock/powermock-module-junit4-legacy/%{version}/powermock-module-junit4-legacy-%{version}.pom
Source18: https://repo1.maven.org/maven2/org/powermock/powermock-module-testng-common/%{version}/powermock-module-testng-common-%{version}.pom
Source19: https://repo1.maven.org/maven2/org/powermock/powermock-module-javaagent/%{version}/powermock-module-javaagent-%{version}.pom
Source20: https://repo1.maven.org/maven2/org/powermock/powermock-module-junit4-rule/%{version}/powermock-module-junit4-rule-%{version}.pom
Source21: https://repo1.maven.org/maven2/org/powermock/powermock-module-testng-agent/%{version}/powermock-module-testng-agent-%{version}.pom
Source22: https://repo1.maven.org/maven2/org/powermock/powermock-module-junit4-rule-agent/%{version}/powermock-module-junit4-rule-agent-%{version}.pom
Source23: https://repo1.maven.org/maven2/org/powermock/powermock-module-junit4/%{version}/powermock-module-junit4-%{version}.pom
Source24: https://repo1.maven.org/maven2/org/powermock/powermock-module-testng/%{version}/powermock-module-testng-%{version}.pom
Source25: https://repo1.maven.org/maven2/org/powermock/powermock-module-junit4-common/%{version}/powermock-module-junit4-common-%{version}.pom
Source26: https://repo1.maven.org/maven2/org/powermock/powermock-reflect/%{version}/powermock-reflect-%{version}.pom
Patch0: powermock-mockito.patch
Patch1: powermock-testng710.patch
Patch2: powermock-junit4.patch
BuildRequires: fdupes
BuildRequires: maven-local
BuildRequires: mvn(cglib:cglib-nodep)
BuildRequires: mvn(com.thoughtworks.xstream:xstream)
BuildRequires: mvn(javax.servlet:servlet-api)
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(net.bytebuddy:byte-buddy)
BuildRequires: mvn(net.bytebuddy:byte-buddy-agent)
BuildRequires: mvn(org.easymock:easymock)
BuildRequires: mvn(org.hamcrest:hamcrest-core)
BuildRequires: mvn(org.javassist:javassist)
BuildRequires: mvn(org.mockito:mockito-core)
BuildRequires: mvn(org.objenesis:objenesis)
BuildRequires: mvn(org.testng:testng)
%description
%{desc}
%package reflect
Summary: Reflection module of PowerMock
Group: Development/Libraries/Java
BuildArch: noarch
%description reflect
%{desc}
This package contains the reflection module of PowerMock.
%package javaagent
Summary: PowerMock Java agent support
Group: Development/Libraries/Java
%description javaagent
%{desc}
This package contains the Java agent support for PowerMock.
%package core
Summary: Core module of PowerMock
Group: Development/Libraries/Java
BuildArch: noarch
%description core
%{desc}
This package contains the core module of PowerMock.
%package junit4
Summary: JUnit4 common module of PowerMock
Group: Development/Libraries/Java
BuildArch: noarch
%description junit4
%{desc}
This package contains the JUnit4 module of PowerMock.
%package api-support
Summary: PowerMock API support module
Group: Development/Libraries/Java
BuildArch: noarch
%description api-support
%{desc}
This package contains support code for the PowerMock API extensions.
%package api-mockito
Summary: PowerMock Mockito API module
Group: Development/Libraries/Java
BuildArch: noarch
%description api-mockito
%{desc}
This package contains the PowerMock Mockito API extension.
%package api-easymock
Summary: PowerMock EasyMock API module
Group: Development/Libraries/Java
BuildArch: noarch
%description api-easymock
%{desc}
This package contains the PowerMock EasyMock API extension.
%package testng
Summary: PowerMock module for TestNG.
Group: Development/Libraries/Java
BuildArch: noarch
%description testng
%{desc}
This package contains the PowerMock TestNG extension.
%package javadoc
Summary: JavaDocs for %{name}
Group: Documentation/HTML
BuildArch: noarch
%description javadoc
This package contains the API documentation for %{name}.
%prep
%setup -q -n %{name}-%{name}-%{version}
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
# Inject pom files
modules=
for src in $(find powermock* -name src -type d) ; do
dir=$(dirname $src)
aid=$(basename $dir)
cp %{_sourcedir}/$aid-%{version}.pom $dir/pom.xml
modules="$modules<module>$dir</module>"
done
# Generate build aggregator pom
cat > pom.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.powermock</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>%{version}</version>
<modules>
$modules
<module>tests/utils</module>
</modules>
</project>
EOF
# Generate test utils pom
cat > tests/utils/pom.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.powermock.tests</groupId>
<artifactId>powermock-tests-utils</artifactId>
<version>%{version}</version>
<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>%{version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration><skip>true</skip></configuration>
</plugin>
</plugins>
</build>
</project>
EOF
# Fix references to ASM, which is not bundled by bytebuddy
sed -i -e 's/net\.bytebuddy\.jar\.asm/org.objectweb.asm/g;' \
$(find powermock-reflect/src/test/java/org/powermock/reflect/internal/proxy powermock-core/src/main/java/org/powermock/core/bytebuddy powermock-modules/powermock-module-javaagent/src/main/java/org/powermock/modules/agent -name '*.java')
# Inject test deps not present in published poms
%pom_add_dep "junit:junit:4.12:test" powermock-{core,reflect} \
powermock-api/powermock-api-{support,easymock,mockito2} powermock-classloading/powermock-classloading-{objenesis,xstream}
%pom_add_dep "org.assertj:assertj-core:2.6.0:test" powermock-{core,reflect} \
powermock-api/powermock-api-{support,easymock,mockito2} powermock-classloading/powermock-classloading-{objenesis,xstream} \
powermock-modules/powermock-module-junit4{,-common,-rule,-rule-agent}
%pom_add_dep "org.hamcrest:hamcrest-core:1.3:test" powermock-{core,reflect} \
powermock-api/powermock-api-{support,easymock,mockito2} powermock-classloading/powermock-classloading-{objenesis,xstream}
%pom_add_dep "cglib:cglib-nodep:3.2.9:test" powermock-reflect
%pom_add_dep "org.mockito:mockito-core:2.23.0:test" powermock-core
%pom_add_dep "org.powermock.tests:powermock-tests-utils:%{version}:test" powermock-api/powermock-api-mockito2
%pom_add_dep "org.easymock:easymock:4.0.1:test" powermock-modules/powermock-module-junit4
%pom_remove_dep "org.powermock:powermock-classloading-base:2.0.9:provided" powermock-modules/powermock-module-junit4-rule
# Fix needed for using old easymock
sed -i -e 's/PowerMockTestNotifier, PowerMockTestNotifier/PowerMockTestNotifier/' \
powermock-modules/powermock-module-junit4/src/test/java/org/powermock/modules/junit4/internal/impl/PowerMockRunNotifierTest.java
# Missing junit rules from com.github.stefanbirkner:system-rules
rm powermock-core/src/test/java/org/powermock/configuration/support/ConfigurationFactoryImplTest.java
# Junit4 in Fedora is too new, don't build legacy module
%pom_disable_module powermock-modules/powermock-module-junit4-legacy
%{mvn_package} ":powermock-core" core
%{mvn_package} ":powermock-classloading*" core
%{mvn_package} ":powermock-module-junit4*" junit4
%{mvn_package} ":powermock-module-testng*" testng
%{mvn_package} ":powermock-module-javaagent" javaagent
%{mvn_package} ":powermock-api-mockito2" api-mockito
%{mvn_package} ":powermock-api-support" api-support
%{mvn_package} ":powermock-api-easymock" api-easymock
%{mvn_package} ":powermock-reflect" reflect
# Compat alias for mockito support
%{mvn_alias} :powermock-api-mockito2 :powermock-api-mockito :powermock-api-mockito-common
# Don't install internal test stuff
%{mvn_package} org.powermock.tests: __noinstall
# No need to install the parent pom
%{mvn_package} :parent __noinstall
%build
%{mvn_build} -f -- \
-Dproject.build.outputTimestamp=$(date -u -d @${SOURCE_DATE_EPOCH:-$(date +%%s)} +%%Y-%%m-%%dT%%H:%%M:%%SZ) \
-Dmaven.compiler.source=8 -Dmaven.compiler.target=8 \
-Dproject.build.sourceEncoding=UTF-8 -Dsource=8
%install
%mvn_install
%fdupes -s %{buildroot}%{_javadocdir}
%files core -f .mfiles-core
%doc README.md CONTRIBUTING.md
%license LICENSE.txt
%files reflect -f .mfiles-reflect
%files junit4 -f .mfiles-junit4
%files api-support -f .mfiles-api-support
%files api-mockito -f .mfiles-api-mockito
%files api-easymock -f .mfiles-api-easymock
%files testng -f .mfiles-testng
%files javaagent -f .mfiles-javaagent
%files javadoc -f .mfiles-javadoc
%license LICENSE.txt
%changelog