This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new c25bbe6e9c Ensure that `InputStream` marks are supported in a test
that need them. This is not always the case in a JPMS context.
c25bbe6e9c is described below
commit c25bbe6e9c6114913a9bfa64bc57dbe589b6699f
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Jul 13 11:08:31 2023 +0200
Ensure that `InputStream` marks are supported in a test that need them.
This is not always the case in a JPMS context.
---
.../apache/sis/storage/StorageConnectorTest.java | 23 ++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git
a/storage/sis-storage/src/test/java/org/apache/sis/storage/StorageConnectorTest.java
b/storage/sis-storage/src/test/java/org/apache/sis/storage/StorageConnectorTest.java
index 4980470d1b..041294e69d 100644
---
a/storage/sis-storage/src/test/java/org/apache/sis/storage/StorageConnectorTest.java
+++
b/storage/sis-storage/src/test/java/org/apache/sis/storage/StorageConnectorTest.java
@@ -19,6 +19,7 @@ package org.apache.sis.storage;
import java.net.URI;
import java.io.DataInput;
import java.io.InputStream;
+import java.io.BufferedInputStream;
import java.io.Reader;
import java.io.IOException;
import java.nio.file.Path;
@@ -48,7 +49,7 @@ import static org.opengis.test.Assert.assertInstanceOf;
*
* @author Martin Desruisseaux (Geomatys)
* @author Alexis Manin (Geomatys)
- * @version 1.2
+ * @version 1.4
* @since 0.3
*/
@DependsOn(org.apache.sis.internal.storage.io.ChannelImageInputStreamTest.class)
@@ -70,13 +71,31 @@ public final class StorageConnectorTest extends TestCase {
*/
private static final int MAGIC_NUMBER = ('T' << 24) | ('h' << 16) | ('e'
<< 8) | ' ';
+ /**
+ * Ensures that the given input stream supports marks. This check is
needed because
+ * {@link Class#getResourceAsStream(String)} may return different classes
of stream
+ * depending on the context. For example on Java 20 with observed that the
resource
+ * from unnamed module was returned as {@link BufferedInputStream}, while
the same
+ * resource was returned as {@code sun.nio.ch.ChannelInputStream} after
the module
+ * became a named one.
+ *
+ * @param in the input stream to check.
+ * @return the input stream with mark support.
+ */
+ private static InputStream withMarkSupport(InputStream in) {
+ if (in != null && !in.markSupported()) {
+ in = new BufferedInputStream(in);
+ }
+ return in;
+ }
+
/**
* Creates the instance to test. This method uses the {@code "Any.txt"}
ASCII file as
* the resource to test. The resource can be provided either as a URL or
as a stream.
*/
static StorageConnector create(final boolean asStream) {
final Class<?> c = StorageConnectorTest.class;
- final Object storage = asStream ? c.getResourceAsStream(FILENAME) :
c.getResource(FILENAME);
+ final Object storage = asStream ?
withMarkSupport(c.getResourceAsStream(FILENAME)) : c.getResource(FILENAME);
assertNotNull(storage);
final StorageConnector connector = new StorageConnector(storage);
connector.setOption(OptionKey.ENCODING, StandardCharsets.US_ASCII);