forked from pool/powermock
305 lines
12 KiB
RPMSpec
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
|