You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/11/10 20:27:35 UTC
[commons-bcel] branch master updated: Reuse JavaHome for tests
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push:
new e3e1adcf Reuse JavaHome for tests
e3e1adcf is described below
commit e3e1adcf224504271fa2d3acf7c0bdf7a863ab1b
Author: Gary David Gregory (Code signing key) <gg...@apache.org>
AuthorDate: Thu Nov 10 15:27:31 2022 -0500
Reuse JavaHome for tests
---
.../bcel/classfile/JDKClassDumpTestCase.java | 45 ++++++++--------------
.../java/org/apache/bcel/generic/JavaHome.java | 30 +++++++++++++--
2 files changed, 43 insertions(+), 32 deletions(-)
diff --git a/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java b/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
index a53af89c..311a0fde 100644
--- a/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
+++ b/src/test/java/org/apache/bcel/classfile/JDKClassDumpTestCase.java
@@ -17,19 +17,19 @@
package org.apache.bcel.classfile;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
-import java.io.File;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
/**
* Test that dump() methods work on the JDK classes
@@ -52,36 +52,25 @@ public class JDKClassDumpTestCase {
}
}
- private void testJar(final File file) throws Exception {
- System.out.println("parsing " + file);
- try (JarFile jar = new JarFile(file)) {
- final Enumeration<JarEntry> en = jar.entries();
- while (en.hasMoreElements()) {
- final JarEntry e = en.nextElement();
- final String name = e.getName();
- if (name.endsWith(".class")) {
- // System.out.println("parsing " + name);
- try (InputStream inputStream1 = jar.getInputStream(e); InputStream inputStream2 = jar.getInputStream(e);) {
- compare(new ClassParser(inputStream1, name).parse(), inputStream2, name);
- }
+ private void testJar(final JarFile jar) throws Exception {
+ System.out.println("parsing " + jar.getName());
+ final Enumeration<JarEntry> en = jar.entries();
+ while (en.hasMoreElements()) {
+ final JarEntry e = en.nextElement();
+ final String name = e.getName();
+ if (name.endsWith(".class")) {
+ // System.out.println("parsing " + name);
+ try (InputStream inputStream1 = jar.getInputStream(e); InputStream inputStream2 = jar.getInputStream(e);) {
+ compare(new ClassParser(inputStream1, name).parse(), inputStream2, name);
}
}
}
}
- @Test
- public void testPerformance() throws Exception {
- final File javaLib = new File(System.getProperty("java.home") + "/lib");
- javaLib.listFiles(file -> {
- if (file.getName().endsWith(".jar")) {
- try {
- testJar(file);
- } catch (final Exception e) {
- fail(e.getMessage());
- }
- }
- return false;
- });
+ @ParameterizedTest
+ @MethodSource("org.apache.bcel.generic.JavaHome#streamJarFiles")
+ public void testPerformance(final JarFile path) throws Exception {
+ assertDoesNotThrow(() -> testJar(path));
}
}
diff --git a/src/test/java/org/apache/bcel/generic/JavaHome.java b/src/test/java/org/apache/bcel/generic/JavaHome.java
index 07d6a535..98a35e49 100644
--- a/src/test/java/org/apache/bcel/generic/JavaHome.java
+++ b/src/test/java/org/apache/bcel/generic/JavaHome.java
@@ -31,6 +31,7 @@ import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiPredicate;
+import java.util.jar.JarFile;
import java.util.stream.Stream;
import org.apache.bcel.util.ModularRuntimeImage;
@@ -81,13 +82,22 @@ public class JavaHome {
return Stream.concat(streamPropertyAndEnvVarValues(EXTRA_JAVA_HOMES), streamFromCustomKey(EXTRA_JAVA_ROOT));
}
+ /**
+ * Used from {@code @MethodSource} for tests.
+ *
+ * @return a stream of JarFile.
+ */
+ public static Stream<JarFile> streamJarFiles() {
+ return streamJavaHomes().flatMap(JavaHome::streamJarFilesByExt);
+ }
+
/**
* Used from {@code @MethodSource} for tests.
*
* @return a stream of Java jar paths.
*/
public static Stream<Path> streamJarPaths() {
- return streamJavaHomes().flatMap(JavaHome::streamJars);
+ return streamJavaHomes().flatMap(JavaHome::streamJarPathsByExt);
}
/**
@@ -126,7 +136,7 @@ public class JavaHome {
* @return a stream of Java jar paths.
*/
public static Stream<Path> streamModulePaths() {
- return streamJavaHomes().flatMap(JavaHome::streamModules);
+ return streamJavaHomes().flatMap(JavaHome::streamModulesByExt);
}
private static Stream<String> streamPropertyAndEnvVarValues(final String key) {
@@ -181,14 +191,26 @@ public class JavaHome {
return find(10, (p, a) -> p.toString().endsWith(suffix));
}
- private Stream<Path> streamJars() {
+ private Stream<JarFile> streamJarFilesByExt() {
+ return streamJarPathsByExt().map(this::toJarFile);
+ }
+
+ private Stream<Path> streamJarPathsByExt() {
return streamEndsWith(".jar");
}
- private Stream<Path> streamModules() {
+ private Stream<Path> streamModulesByExt() {
return streamEndsWith(".jmod");
}
+ private JarFile toJarFile(final Path path) {
+ try {
+ return new JarFile(path.toFile());
+ } catch (final IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
@Override
public String toString() {
return path.toString();