diff --git a/getMethods-sort.patch b/getMethods-sort.patch new file mode 100644 index 0000000..85707f7 --- /dev/null +++ b/getMethods-sort.patch @@ -0,0 +1,73 @@ +From 72d003605170af32c20b72caff4ab35f3a40b254 Mon Sep 17 00:00:00 2001 +From: fanmenggang +Date: Wed, 8 May 2019 16:15:56 +0000 +Subject: [PATCH] hamcrest: eliminate class file differences + +reason: eliminate class file differences + +diff --git a/hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java b/hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java +index f51e659..5fa1c8f 100644 +--- a/hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java ++++ b/hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java +@@ -42,8 +42,8 @@ public class ReflectiveFactoryReader implements Iterable { + return new Iterator() { + + private int currentMethod = -1; +- private Method[] allMethods = cls.getMethods(); +- ++ private Method[] tmpMethods = cls.getMethods(); ++ private Method[] allMethods = sort(tmpMethods,0,tmpMethods.length - 1); + @Override + public boolean hasNext() { + while (true) { +@@ -72,6 +72,43 @@ public class ReflectiveFactoryReader implements Iterable { + private boolean outsideArrayBounds() { + return currentMethod < 0 || allMethods.length <= currentMethod; + } ++ ++ private Method[] sort(Method[] method, int low, int high) { ++ int start = low; ++ int end = high; ++ String key = method[low].toString(); ++ ++ while(end > start) { ++ while(end > start && method[end].toString().compareTo(key) >= 0) { ++ end--; ++ } ++ ++ if(end > start) { ++ Method temp = method[end]; ++ method[end] = method[start]; ++ method[start] = temp; ++ start++; ++ } ++ ++ while(start < end && method[start].toString().compareTo(key) <= 0) { ++ start++; ++ } ++ ++ if(start < end ) { ++ Method temp = method[end]; ++ method[end] = method[start]; ++ method[start] = temp; ++ end--; ++ } ++ } ++ if(start > low) { ++ sort(method,low, start - 1); ++ } ++ if(end < high) { ++ sort(method,start + 1, high); ++ } ++ return method; ++ } + }; + } + +@@ -171,4 +208,4 @@ public class ReflectiveFactoryReader implements Iterable { + return name.replace('$', '.'); + } + +-} +\ No newline at end of file ++} diff --git a/hamcrest-1.3-build.patch b/hamcrest-1.3-build.patch new file mode 100644 index 0000000..877e51e --- /dev/null +++ b/hamcrest-1.3-build.patch @@ -0,0 +1,39 @@ +diff --git a/build.xml b/build.xml +index 1cfd4fb..5a7c740 100644 +--- a/build.xml ++++ b/build.xml +@@ -14,13 +14,13 @@ + + ++ classpath="lib/generator/qdox.jar"/> + + +- ++ + + +- ++ + + + +@@ -152,7 +152,8 @@ + + ++ windowtitle="Hamcrest" source="1.6" failonerror="yes"> ++ + + + +@@ -313,6 +314,7 @@ + ++ + + + diff --git a/hamcrest-1.3-fork-javac.patch b/hamcrest-1.3-fork-javac.patch new file mode 100644 index 0000000..f5a86fe --- /dev/null +++ b/hamcrest-1.3-fork-javac.patch @@ -0,0 +1,25 @@ +From 54b7ccdd1e16f1d6dd07359eae0fcac8f1883373 Mon Sep 17 00:00:00 2001 +From: Michael Simacek +Date: Mon, 2 Jan 2017 10:31:56 +0100 +Subject: [PATCH] Fork javac + +--- + build.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build.xml b/build.xml +index 1cfd4fb..69acfe8 100644 +--- a/build.xml ++++ b/build.xml +@@ -284,7 +284,7 @@ + + + +- ++ + + + +-- +2.9.3 + diff --git a/hamcrest-1.3-javadoc.patch b/hamcrest-1.3-javadoc.patch new file mode 100644 index 0000000..adaae0d --- /dev/null +++ b/hamcrest-1.3-javadoc.patch @@ -0,0 +1,17 @@ +diff --git a/build.xml b/build.xml +index ed57763..a4550cb 100644 +--- a/build.xml ++++ b/build.xml +@@ -135,11 +135,10 @@ + + + +- ++ + + + +- + + + +- +- +- +- +- +- +- +- +- + + + diff --git a/hamcrest-1.3-qdox-2.0.patch b/hamcrest-1.3-qdox-2.0.patch new file mode 100644 index 0000000..a65f977 --- /dev/null +++ b/hamcrest-1.3-qdox-2.0.patch @@ -0,0 +1,105 @@ +From 6d7da5456a7458a249bed9c4c1e768cc7cc2fe40 Mon Sep 17 00:00:00 2001 +From: Michael Simacek +Date: Wed, 1 Feb 2017 12:57:14 +0100 +Subject: [PATCH] Port to qdox 2.0 + +--- + .../src/main/java/org/hamcrest/generator/QDox.java | 4 ++-- + .../org/hamcrest/generator/QDoxFactoryReader.java | 26 ++++++++++++---------- + 2 files changed, 16 insertions(+), 14 deletions(-) + +diff --git a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java +index efaf615..338178d 100644 +--- a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java ++++ b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDox.java +@@ -1,6 +1,6 @@ + package org.hamcrest.generator; + +-import com.thoughtworks.qdox.JavaDocBuilder; ++import com.thoughtworks.qdox.JavaProjectBuilder; + import com.thoughtworks.qdox.model.JavaClass; + + import java.io.File; +@@ -16,7 +16,7 @@ import java.io.Reader; + */ + public class QDox { + +- private final JavaDocBuilder javaDocBuilder = new JavaDocBuilder(); ++ private final JavaProjectBuilder javaDocBuilder = new JavaProjectBuilder(); + + public void addSourceTree(File sourceDir) { + javaDocBuilder.addSourceTree(sourceDir); +diff --git a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java +index 5108140..97fce01 100644 +--- a/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java ++++ b/hamcrest-generator/src/main/java/org/hamcrest/generator/QDoxFactoryReader.java +@@ -4,8 +4,10 @@ import com.thoughtworks.qdox.model.DocletTag; + import com.thoughtworks.qdox.model.JavaClass; + import com.thoughtworks.qdox.model.JavaMethod; + import com.thoughtworks.qdox.model.JavaParameter; +-import com.thoughtworks.qdox.model.Type; ++import com.thoughtworks.qdox.model.JavaType; ++import com.thoughtworks.qdox.model.impl.DefaultJavaClass; + ++import java.util.ArrayList; + import java.util.Iterator; + import java.util.List; + import java.util.regex.Pattern; +@@ -56,15 +58,15 @@ public class QDoxFactoryReader implements Iterable { + JavaMethod methodSource = findMethodInSource(factoryMethod); + if (methodSource != null) { + factoryMethod.setJavaDoc(createJavaDocComment(methodSource)); +- JavaParameter[] parametersFromSource ++ List parametersFromSource + = methodSource.getParameters(); + List parametersFromReflection + = factoryMethod.getParameters(); + +- if (parametersFromReflection.size() == parametersFromSource.length) { +- for (int i = 0; i < parametersFromSource.length; i++) { ++ if (parametersFromReflection.size() == parametersFromSource.size()) { ++ for (int i = 0; i < parametersFromSource.size(); i++) { + parametersFromReflection.get(i).setName( +- parametersFromSource[i].getName()); ++ parametersFromSource.get(i).getName()); + } + } + } +@@ -79,18 +81,18 @@ public class QDoxFactoryReader implements Iterable { + // Note, this doesn't always work - it struggles with some kinds of generics. + // This seems to cover most cases though. + List params = factoryMethod.getParameters(); +- Type[] types = new Type[params.size()]; ++ List types = new ArrayList(params.size()); + boolean varArgs = false; +- for (int i = 0; i < types.length; i++) { ++ for (int i = 0; i < params.size(); i++) { + String type = params.get(i).getType(); + varArgs = VARARGS_REGEX.matcher(type).find(); + // QDox ignores varargs and generics, so we strip them out to help QDox. + type = GENERIC_REGEX.matcher(type).replaceAll(""); + type = VARARGS_REGEX.matcher(type).replaceAll(""); +- types[i] = new Type(type); ++ types.add(new DefaultJavaClass(type)); + } +- JavaMethod[] methods = classSource.getMethodsBySignature(factoryMethod.getName(), types, false, varArgs); +- return methods.length == 1 ? methods[0] : null; ++ List methods = classSource.getMethodsBySignature(factoryMethod.getName(), types, false, varArgs); ++ return methods.size() == 1 ? methods.get(0) : null; + } + + /** +@@ -98,8 +100,8 @@ public class QDoxFactoryReader implements Iterable { + */ + private static String createJavaDocComment(JavaMethod methodSource) { + String comment = methodSource.getComment(); +- DocletTag[] tags = methodSource.getTags(); +- if ((comment == null || comment.trim().length() == 0) && tags.length == 0) { ++ List tags = methodSource.getTags(); ++ if ((comment == null || comment.trim().length() == 0) && tags.size() == 0) { + return null; + } + StringBuilder result = new StringBuilder(); +-- +2.9.3 + diff --git a/hamcrest-core-MANIFEST.MF b/hamcrest-core-MANIFEST.MF new file mode 100644 index 0000000..754d5d9 --- /dev/null +++ b/hamcrest-core-MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-Vendor: Fedoraproject.org +Bundle-ActivationPolicy: lazy +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Name: Hamcrest Core +Bundle-SymbolicName: org.hamcrest.core +Eclipse-SourceReferences: scm:cvs:pserver:dev.eclipse.org:/cvsroot/too + ls:org.eclipse.orbit/org.hamcrest.core;tag=v201303031735 +Export-Package: org.hamcrest;version="1.3.0";core=split;mandatory:=cor + e,org.hamcrest.core;version="1.3.0",org.hamcrest.internal;version="1. + 3.0";x-internal:=true +Bundle-Version: 1.3.0.v201303031735 +Bundle-ManifestVersion: 2 diff --git a/hamcrest-generator-MANIFEST.MF b/hamcrest-generator-MANIFEST.MF new file mode 100644 index 0000000..f99c220 --- /dev/null +++ b/hamcrest-generator-MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-Vendor: %providerName +Bundle-ActivationPolicy: lazy +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.hamcrest.generator +Bundle-Version: 1.3.0.v20090501071000 +Export-Package: org.hamcrest.generator;version="1.3.0",org.hamcrest.ge + nerator.config;version="1.3.0" +Bundle-ManifestVersion: 2 +Import-Package: com.thoughtworks.qdox;version="1.6.3",com.thoughtworks + .qdox.ant;version="1.6.3",com.thoughtworks.qdox.directorywalker;versi + on="1.6.3",com.thoughtworks.qdox.junit;version="1.6.3",com.thoughtwor + ks.qdox.model;version="1.6.3",com.thoughtworks.qdox.model.util;versio + n="1.6.3",com.thoughtworks.qdox.parser;version="1.6.3",com.thoughtwor + ks.qdox.parser.impl;version="1.6.3",com.thoughtworks.qdox.parser.stru + cts;version="1.6.3",com.thoughtworks.qdox.tools;version="1.6.3" diff --git a/hamcrest-integration-MANIFEST.MF b/hamcrest-integration-MANIFEST.MF new file mode 100644 index 0000000..ab68061 --- /dev/null +++ b/hamcrest-integration-MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-Vendor: %providerName +Bundle-ActivationPolicy: lazy +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.hamcrest.integration +Require-Bundle: org.hamcrest.core;bundle-version="1.3.0" +Bundle-Version: 1.3.0.v20090501071000 +Export-Package: org.hamcrest;integration=split;mandatory:=integration; + version="1.3.0",org.hamcrest.integration;version="1.3.0" +Bundle-ManifestVersion: 2 +Import-Package: org.easymock;version="2.4.0";resolution:=optional,org. + jmock.core;version="1.10";resolution:=optional diff --git a/hamcrest-java-1.3.tar.gz b/hamcrest-java-1.3.tar.gz new file mode 100644 index 0000000..ebd21cc Binary files /dev/null and b/hamcrest-java-1.3.tar.gz differ diff --git a/hamcrest-library-MANIFEST.MF b/hamcrest-library-MANIFEST.MF new file mode 100644 index 0000000..5fc8676 --- /dev/null +++ b/hamcrest-library-MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-Vendor: %providerName +Bundle-ActivationPolicy: lazy +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.hamcrest.library +Require-Bundle: org.hamcrest.core;bundle-version="1.3.0" +Bundle-Version: 1.3.0.v20090501071000 +Export-Package: org.hamcrest;version="1.3.0";library=split;mandatory:= + library,org.hamcrest.beans;version="1.3.0",org.hamcrest.collection;ve + rsion="1.3.0",org.hamcrest.number;version="1.3.0",org.hamcrest.object + ;version="1.3.0",org.hamcrest.text;version="1.3.0",org.hamcrest.xml;v + ersion="1.3.0" +Bundle-ManifestVersion: 2 diff --git a/hamcrest.spec b/hamcrest.spec new file mode 100644 index 0000000..5efb8ee --- /dev/null +++ b/hamcrest.spec @@ -0,0 +1,108 @@ +Name: hamcrest +Version: 1.3 +Release: 25 +Epoch: 0 +Summary: Library of matcher objects for building test expressions + +License: BSD +URL: https://github.com/hamcrest/JavaHamcrest +Source0: https://github.com/hamcrest/JavaHamcrest/archive/hamcrest-java-%{version}.tar.gz +Source1: hamcrest-core-MANIFEST.MF +Source2: hamcrest-library-MANIFEST.MF +Source3: hamcrest-integration-MANIFEST.MF +Source4: hamcrest-generator-MANIFEST.MF + +Patch0001: hamcrest-1.3-build.patch +Patch0002: hamcrest-1.3-no-jarjar.patch +Patch0003: hamcrest-1.3-javadoc.patch +Patch0004: hamcrest-1.3-qdox-2.0.patch +Patch0005: hamcrest-1.3-fork-javac.patch + +# pacth for openEuler +Patch9000: getMethods-sort.patch + +BuildArch: noarch +BuildRequires: javapackages-local ant ant-junit easymock junit qdox testng +Requires: qdox easymock >= 3.0 + +Provides: %{name}-core = %{epoch}:%{version}-%{release} +Obsoletes: %{name}-core < %{epoch}:%{version}-%{release} + +%description +Provides a library of matcher objects (also known as constraints or +predicates) allowing 'match' rules to be defined declaratively, to be +used in other frameworks. Typical scenarios include testing frameworks, +mocking libraries and UI validation rules. + +%package help +Summary: Javadoc for hamcrest package +Provides: %{name}-javadoc = %{epoch}:%{version}-%{release} +Obsoletes: %{name}-javadoc < %{epoch}:%{version}-%{release} + +%description help +Javadoc for hamcrest package. + +%package demo +Summary: Demos for hamcrest package +Requires: junit testng %{name} = %{epoch}:%{version}-%{release} + +%description demo +Demo files for hamcrest package. + +%prep +%autosetup -n JavaHamcrest-%{name}-java-%{version} -p1 + +find . -type f -name "*.jar" -delete +rm -rf hamcrest-integration/src/main/java/org/hamcrest/integration/JMock1Adapter.java +rm -rf hamcrest-integration/src/main/java/org/hamcrest/JMock1Matchers.java +rm -rf hamcrest-unit-test/src/main/java/org/hamcrest/integration/JMock1AdapterTest.java + + +ln -sf $(build-classpath qdox) lib/generator/ +ln -sf $(build-classpath easymock3) lib/integration/ +ln -sf $(build-classpath jmock) lib/integration/ +ln -sf $(build-classpath testng-jdk15) lib/integration/ + +%build +export CLASSPATH=$(build-classpath qdox) +export OPT_JAR_LIST="junit ant/ant-junit" +ant -Dant.build.javac.source=1.5 -Dversion=%{version} -Dbuild.sysclasspath=last clean core generator library bigjar javadoc + +jar ufm build/hamcrest-core-%{version}.jar %{SOURCE1} +jar ufm build/hamcrest-library-%{version}.jar %{SOURCE2} +jar ufm build/hamcrest-integration-%{version}.jar %{SOURCE3} +jar ufm build/hamcrest-generator-%{version}.jar %{SOURCE4} + +%install +sed -i 's/@VERSION@/%{version}/g' pom/*.pom + +%mvn_artifact pom/hamcrest-parent.pom +%mvn_artifact pom/hamcrest-all.pom build/hamcrest-all-%{version}.jar +%mvn_artifact pom/hamcrest-core.pom build/hamcrest-core-%{version}.jar +%mvn_artifact pom/hamcrest-generator.pom build/hamcrest-generator-%{version}.jar +%mvn_artifact pom/hamcrest-library.pom build/hamcrest-library-%{version}.jar +%mvn_artifact pom/hamcrest-integration.pom build/hamcrest-integration-%{version}.jar + +%mvn_package :hamcrest-parent core +%mvn_package :hamcrest-core core + +%mvn_file ':hamcrest-{*}' %{name}/@1 + +install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/hamcrest +cp -rp hamcrest-examples $RPM_BUILD_ROOT%{_datadir}/hamcrest/ + +%mvn_install -J build/temp/hamcrest-all-1.3-javadoc.jar.contents/ + + +%files -f .mfiles -f .mfiles-core +%license LICENSE.txt + +%files help -f .mfiles-javadoc + +%files demo +%{_datadir}/hamcrest + +%changelog +* Tue Dec 03 2019 daiqianwen - 0:1.3-25 +- Package init +