%global commit0 320390106be6b4ae9e602be5cb40c120a565c5b0
%global gitdate 20150623
%global srcname %{name}1
%global srcurl https://github.com/%{name}/%{srcname}
%global githubio https://raw.githubusercontent.com/%{name}/%{name}.github.io
Name: jmockit
# version as in version.txt
Version: 1.19
Release: 1.%{gitdate}git%(c=%{commit0}; echo ${c:0:7} )%{?dist}
Summary: Java toolkit for unit/integration testing
License: MIT
URL: http://%{name}.org
Source0: %{srcurl}/archive/%{commit0}/%{srcname}-%{commit0}.tar.gz
Source1: %{name}-external-asm-errors.txt
Source2: %{githubio}/master/api1x/overview.html
Source3: %{githubio}/master/api1x/stylesheet.css
BuildRequires: maven-local
BuildRequires: java-devel >= 1.8.0
# package java.util.function does not exist
# package java.util.stream does not exist
# package PrimitiveIterator does not exist (java.util.PrimitiveIterator$OfInt)
BuildRequires: mvn(com.google.code.findbugs:jsr305)
BuildRequires: mvn(javax.inject:javax.inject)
BuildRequires: mvn(javax.persistence:persistence-api)
BuildRequires: mvn(javax.servlet:javax.servlet-api)
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(org.apache.geronimo.specs:geronimo-ejb_3.1_spec)
BuildRequires: mvn(org.apache.geronimo.specs:specs:pom:)
#BuildRequires: mvn(org.springframework:spring-web)
BuildRequires: mvn(org.testng:testng)
#BuildRequires: mvn(org.ow2.asm:asm)
Requires: java >= 1.8.0
BuildArch: noarch
%description
JMockit is a Java toolkit for developer (unit/integration) testing.
It contains mocking APIs and other tools, supporting both JUnit and
TestNG. The mocking APIs allow all kinds of Java code, without testability
restrictions, to be tested in isolation from selected dependencies.
%package coverage
Summary: JMockit Coverage
%description coverage
JMockit Coverage is a code coverage tool with several metrics (line,
path, data) capable of generating HTML reports. It is designed with
ease of use in mind, avoiding the need for complex configuration.
Instead, smart (but overridable) defaults are employed, such as the
selection of which classes to consider for coverage, and where to
find sources files for report generation.
%package javadoc
Summary: Javadoc for %{name}
%description javadoc
This package contains javadoc for %{name}.
#####################################################################################
%prep
%setup -q -n %{srcname}-%{commit0}
# Cleanup
find -name "*.class" -print -delete
find -name "*.jar" -print -delete
# see SOURCE1
%if 0
rm -r main/src/mockit/external
%pom_add_dep org.ow2.asm:asm main
sed -i "s|mockit.external.asm|org.objectweb.asm|" $(find -name \*.java)
%endif
# Unwanted, higher version does not have below plugins any more
for p in main coverage ; do
%pom_remove_plugin :maven-source-plugin ${p}
%pom_remove_plugin :maven-gpg-plugin ${p}
%pom_remove_plugin :nexus-staging-maven-plugin ${p}
%pom_xpath_remove "pom:plugin[pom:artifactId = 'maven-javadoc-plugin']/pom:executions" ${p}
%pom_xpath_remove "pom:plugin[pom:artifactId = 'maven-javadoc-plugin']/pom:configuration/pom:additionalparam" ${p}
done
# version <= 1.19
%pom_xpath_set "pom:dependency[pom:groupId='javax.servlet']/pom:artifactId" \
javax.servlet-api main
%pom_xpath_set "pom:dependency[pom:groupId='javax.servlet']/pom:version" 3.1.0 main
%pom_remove_dep javax:javaee-api main
# package javax.inject does not exist
%pom_add_dep javax.inject:javax.inject main
# package javax.ejb does not exist
%pom_add_dep org.apache.geronimo.specs:geronimo-ejb_3.1_spec:1.0 main
# java.lang.NoClassDefFoundError: org.junit.runner.Runner
# at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:61)
# at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
# at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
# at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
# at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
#rm -r main/test/*
# This is a dummy POM added just to ease building in the RPM platforms
# Build only these module. Other java modules require unavailable, too old, libraries
cat > pom.xml << EOF
4.0.0
org.%{name}
%{name}-project
pom
%{version}
main
coverage
coverageTests
org.apache.maven.plugins
maven-javadoc-plugin
2.9.1
integrationTests*
true
JMockit %{version} API Documentation
JMockit %{version} API
EOF
sed -i -r 's|"\$\{settings.localRepository\}"/org/%{name}/%{name}/(\$\{%{name}.version\}/%{name}-\$\{%{name}.version\}.jar)|../main/target/\1|' coverageTests/pom.xml
# fix non ASCII chars
find -name \*.java -exec native2ascii -encoding UTF8 '{}' '{}' \;
%mvn_package :%{name}-project __noinstall
%mvn_package :coverage-tests __noinstall
%mvn_file :%{name} %{name}
%mvn_file :%{name}-coverage %{name}-coverage
%build
%mvn_build -f -s
%install
%mvn_install
#####################################################################################
%files -f .mfiles-%{name}
%doc README.md
%license LICENSE.txt NOTICE.txt
%files coverage -f .mfiles-%{name}-coverage
%license LICENSE.txt NOTICE.txt
%files javadoc -f .mfiles-javadoc
%license LICENSE.txt NOTICE.txt
#####################################################################################
%changelog
* Sat Jul 16 2016 Raphael Groner - 1.19-1.20150623git3203901
- new snapshot
- use macros
- simplify commands in %%prep
* Sun May 24 2015 gil cattaneo - 1.18-1
- initial rpm