diff --git a/0001-Port-to-hamcrest-2.2.patch b/0001-Port-to-hamcrest-2.2.patch new file mode 100644 index 0000000..0d51ef4 --- /dev/null +++ b/0001-Port-to-hamcrest-2.2.patch @@ -0,0 +1,108 @@ +From 85c780b61cd35b4544d2926393805e1699641f38 Mon Sep 17 00:00:00 2001 +From: Marian Koncek +Date: Fri, 6 Mar 2020 14:28:05 +0100 +Subject: [PATCH] Port to hamcrest 2.2 + +--- + .../org/junit/internal/matchers/StacktracePrintingMatcher.java | 3 --- + .../org/junit/internal/matchers/ThrowableCauseMatcher.java | 2 -- + .../org/junit/internal/matchers/ThrowableMessageMatcher.java | 2 -- + src/main/java/org/junit/matchers/JUnitMatchers.java | 2 +- + .../experimental/theories/runner/WithDataPointMethod.java | 2 +- + 5 files changed, 2 insertions(+), 9 deletions(-) + +diff --git a/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java b/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java +index 93a6827..3ea4a81 100644 +--- a/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java ++++ b/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java +@@ -1,7 +1,6 @@ + package org.junit.internal.matchers; + + import org.hamcrest.Description; +-import org.hamcrest.Factory; + import org.hamcrest.Matcher; + + import org.junit.internal.Throwables; +@@ -39,13 +38,11 @@ public class StacktracePrintingMatcher extends + return Throwables.getStacktrace(throwable); + } + +- @Factory + public static Matcher isThrowable( + Matcher throwableMatcher) { + return new StacktracePrintingMatcher(throwableMatcher); + } + +- @Factory + public static Matcher isException( + Matcher exceptionMatcher) { + return new StacktracePrintingMatcher(exceptionMatcher); +diff --git a/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java b/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java +index 6e2ff5e..1f0a0a0 100644 +--- a/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java ++++ b/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java +@@ -1,7 +1,6 @@ + package org.junit.internal.matchers; + + import org.hamcrest.Description; +-import org.hamcrest.Factory; + import org.hamcrest.Matcher; + import org.hamcrest.TypeSafeMatcher; + +@@ -43,7 +42,6 @@ public class ThrowableCauseMatcher extends + * @param matcher to apply to the cause of the outer exception + * @param type of the outer exception + */ +- @Factory + public static Matcher hasCause(final Matcher matcher) { + return new ThrowableCauseMatcher(matcher); + } +diff --git a/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java b/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java +index 74386a8..7d16b11 100644 +--- a/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java ++++ b/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java +@@ -1,7 +1,6 @@ + package org.junit.internal.matchers; + + import org.hamcrest.Description; +-import org.hamcrest.Factory; + import org.hamcrest.Matcher; + import org.hamcrest.TypeSafeMatcher; + +@@ -30,7 +29,6 @@ public class ThrowableMessageMatcher extends + matcher.describeMismatch(item.getMessage(), description); + } + +- @Factory + public static Matcher hasMessage(final Matcher matcher) { + return new ThrowableMessageMatcher(matcher); + } +diff --git a/src/main/java/org/junit/matchers/JUnitMatchers.java b/src/main/java/org/junit/matchers/JUnitMatchers.java +index 13407cc..8889266 100644 +--- a/src/main/java/org/junit/matchers/JUnitMatchers.java ++++ b/src/main/java/org/junit/matchers/JUnitMatchers.java +@@ -56,7 +56,7 @@ public class JUnitMatchers { + * @deprecated Please use {@link CoreMatchers#everyItem(Matcher)} instead. + */ + @Deprecated +- public static Matcher> everyItem(final Matcher elementMatcher) { ++ public static Matcher> everyItem(final Matcher elementMatcher) { + return CoreMatchers.everyItem(elementMatcher); + } + +diff --git a/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java b/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java +index f2b2753..e5759ed 100644 +--- a/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java ++++ b/src/test/java/org/junit/tests/experimental/theories/runner/WithDataPointMethod.java +@@ -108,7 +108,7 @@ public class WithDataPointMethod { + return JUnitCore.runClasses(type).getFailures(); + } + +- private Matcher> empty() { ++ private Matcher> empty() { + return everyItem(nullValue(Failure.class)); + } + } +-- +2.25.2 + diff --git a/CVE-2020-15250-pre.patch b/CVE-2020-15250-pre.patch deleted file mode 100644 index e6d7aed..0000000 --- a/CVE-2020-15250-pre.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 24b8ee0bec2f2761b479bdd989275f19597955a3 Mon Sep 17 00:00:00 2001 -From: Carsten Varming -Date: Sat, 21 May 2016 22:43:07 -0400 -Subject: [PATCH] Retry TemporaryFolder.newFolder's call to mkdir if the call - does not create a new directory. - -Closes #1304 ---- - .../java/org/junit/rules/TemporaryFolder.java | 27 +++++++++++++++---- - 1 file changed, 22 insertions(+), 5 deletions(-) - -diff --git a/src/main/java/org/junit/rules/TemporaryFolder.java b/src/main/java/org/junit/rules/TemporaryFolder.java -index 8fc9d5b370..0b3e874528 100644 ---- a/src/main/java/org/junit/rules/TemporaryFolder.java -+++ b/src/main/java/org/junit/rules/TemporaryFolder.java -@@ -32,6 +32,9 @@ public class TemporaryFolder extends Ext - private final File parentFolder; - private File folder; - -+ private static final int TEMP_DIR_ATTEMPTS = 10000; -+ private static final String TMP_PREFIX = "junit"; -+ - public TemporaryFolder() { - this(null); - } -@@ -75,7 +78,7 @@ public class TemporaryFolder extends Ext - * Returns a new fresh file with a random name under the temporary folder. - */ - public File newFile() throws IOException { -- return File.createTempFile("junit", null, getRoot()); -+ return File.createTempFile(TMP_PREFIX, null, getRoot()); - } - - /** -@@ -131,10 +134,24 @@ public class TemporaryFolder extends Ext - } - - private File createTemporaryFolderIn(File parentFolder) throws IOException { -- File createdFolder = File.createTempFile("junit", "", parentFolder); -- createdFolder.delete(); -- createdFolder.mkdir(); -- return createdFolder; -+ File createdFolder = null; -+ for (int i = 0; i < TEMP_DIR_ATTEMPTS; ++i) { -+ // Use createTempFile to get a suitable folder name. -+ String suffix = ".tmp"; -+ File tmpFile = File.createTempFile(TMP_PREFIX, suffix, parentFolder); -+ String tmpName = tmpFile.getName(); -+ // Discard suffix of tmpName. -+ String folderName = tmpName.substring(0, tmpName.length() - suffix.length()); -+ createdFolder = new File(parentFolder, folderName); -+ if (createdFolder.mkdir()) { -+ tmpFile.delete(); -+ return createdFolder; -+ } -+ tmpFile.delete(); -+ } -+ throw new IOException("Unable to create temporary directory in: " -+ + parentFolder.toString() + ". Tried " + TEMP_DIR_ATTEMPTS + " times. " -+ + "Last attempted to create: " + createdFolder.toString()); - } - - /** diff --git a/CVE-2020-15250.patch b/CVE-2020-15250.patch deleted file mode 100644 index 75a8bb8..0000000 --- a/CVE-2020-15250.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 610155b8c22138329f0723eec22521627dbc52ae Mon Sep 17 00:00:00 2001 -From: Marc Philipp -Date: Sun, 11 Oct 2020 16:56:21 +0200 -Subject: [PATCH] Merge pull request from GHSA-269g-pwp5-87pp -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When running on Java 7 or later, temporary directories are now created -Using Java’s NIO API which restricts permissions to owner-only by -default. ---- - .../java/org/junit/rules/TemporaryFolder.java | 43 ++++++++++++++++++- - .../org/junit/rules/TempFolderRuleTest.java | 37 +++++++++++++++- - 2 files changed, 78 insertions(+), 2 deletions(-) - -diff --git a/src/main/java/org/junit/rules/TemporaryFolder.java b/src/main/java/org/junit/rules/TemporaryFolder.java -index 1a6a770608..a726c66e36 100644 ---- a/src/main/java/org/junit/rules/TemporaryFolder.java -+++ b/src/main/java/org/junit/rules/TemporaryFolder.java -@@ -2,6 +2,9 @@ - - import java.io.File; - import java.io.IOException; -+import java.lang.reflect.Array; -+import java.lang.reflect.InvocationTargetException; -+import java.lang.reflect.Method; - - import org.junit.Rule; - -@@ -133,7 +136,45 @@ public File newFolder() throws IOException { - return createTemporaryFolderIn(getRoot()); - } - -- private File createTemporaryFolderIn(File parentFolder) throws IOException { -+ private static File createTemporaryFolderIn(File parentFolder) throws IOException { -+ try { -+ return createTemporaryFolderWithNioApi(parentFolder); -+ } catch (ClassNotFoundException ignore) { -+ // Fallback for Java 5 and 6 -+ return createTemporaryFolderWithFileApi(parentFolder); -+ } catch (InvocationTargetException e) { -+ Throwable cause = e.getCause(); -+ if (cause instanceof IOException) { -+ throw (IOException) cause; -+ } -+ if (cause instanceof RuntimeException) { -+ throw (RuntimeException) cause; -+ } -+ IOException exception = new IOException("Failed to create temporary folder in " + parentFolder); -+ exception.initCause(cause); -+ throw exception; -+ } catch (Exception e) { -+ throw new RuntimeException("Failed to create temporary folder in " + parentFolder, e); -+ } -+ } -+ -+ private static File createTemporaryFolderWithNioApi(File parentFolder) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { -+ Class filesClass = Class.forName("java.nio.file.Files"); -+ Object fileAttributeArray = Array.newInstance(Class.forName("java.nio.file.attribute.FileAttribute"), 0); -+ Class pathClass = Class.forName("java.nio.file.Path"); -+ Object tempDir; -+ if (parentFolder != null) { -+ Method createTempDirectoryMethod = filesClass.getDeclaredMethod("createTempDirectory", pathClass, String.class, fileAttributeArray.getClass()); -+ Object parentPath = File.class.getDeclaredMethod("toPath").invoke(parentFolder); -+ tempDir = createTempDirectoryMethod.invoke(null, parentPath, TMP_PREFIX, fileAttributeArray); -+ } else { -+ Method createTempDirectoryMethod = filesClass.getDeclaredMethod("createTempDirectory", String.class, fileAttributeArray.getClass()); -+ tempDir = createTempDirectoryMethod.invoke(null, TMP_PREFIX, fileAttributeArray); -+ } -+ return (File) pathClass.getDeclaredMethod("toFile").invoke(tempDir); -+ } -+ -+ private static File createTemporaryFolderWithFileApi(File parentFolder) throws IOException { - File createdFolder = null; - for (int i = 0; i < TEMP_DIR_ATTEMPTS; ++i) { - // Use createTempFile to get a suitable folder name. diff --git a/junit.spec b/junit.spec index bb33d87..e5ed477 100644 --- a/junit.spec +++ b/junit.spec @@ -1,18 +1,19 @@ Name: junit Epoch: 1 -Version: 4.12 -Release: 13 +Version: 4.13.2 +Release: 1 Summary: A Java package for unit testing frameworks License: EPL-1.0 URL: http://www.junit.org/ Source0: https://github.com/%{name}-team/%{name}/archive/r%{version}.tar.gz -Patch0000: CVE-2020-15250-pre.patch -Patch0001: CVE-2020-15250.patch +Patch0000: 0001-Port-to-hamcrest-2.2.patch BuildArch: noarch BuildRequires: maven-local mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-enforcer-plugin) BuildRequires: mvn(org.hamcrest:hamcrest-core) +BuildRequires: java-11-openjdk-devel +Requires: java-11-openjdk Obsoletes: %{name}-demo < 4.12 @@ -37,6 +38,9 @@ The junit-help package contains related documents. find . -name "*.jar" -delete find . -name "*.class" -delete +# InaccessibleBaseClassTest fails with Java 8 +sed -i /InaccessibleBaseClassTest/d src/test/java/org/junit/tests/AllTests.java + %pom_remove_plugin :replacer sed s/@version@/%{version}/ src/main/java/junit/runner/Version.java.template >src/main/java/junit/runner/Version.java @@ -60,9 +64,12 @@ sed s/@version@/%{version}/ src/main/java/junit/runner/Version.java.template >sr " %mvn_file : junit +%mvn_alias junit:junit junit:junit-dep %build -%mvn_build +#set openjdk11 for build +export JAVA_HOME=%{_jvmdir}/java-11-openjdk +%mvn_build -f -- -DjdkVersion=1.7 -P\!restrict-doclint %install %mvn_install @@ -74,6 +81,9 @@ sed s/@version@/%{version}/ src/main/java/junit/runner/Version.java.template >sr %doc doc/* %changelog +* Mon Sep 25 2023 wangkai <13474090681@163.com> - 1:4.13.2-1 +- Update to 4.13.2 + * Fri Feb 19 2021 wangxiao - 1:4.12-13 - Fix CVE-2020-15250 diff --git a/junit.yaml b/junit.yaml index b7b6400..6498f95 100644 --- a/junit.yaml +++ b/junit.yaml @@ -1,4 +1,4 @@ version_control: github src_repo: junit-team/junit4 tag_prefix: "^r" -seperator: "." +separator: "." diff --git a/r4.12.tar.gz b/r4.12.tar.gz deleted file mode 100644 index eb70a2a..0000000 Binary files a/r4.12.tar.gz and /dev/null differ diff --git a/r4.13.2.tar.gz b/r4.13.2.tar.gz new file mode 100644 index 0000000..c276ee9 Binary files /dev/null and b/r4.13.2.tar.gz differ