From ac26947b99df2e61a13b20aab07fc11c538625dc Mon Sep 17 00:00:00 2001 From: George Gastaldi Date: Wed, 9 Mar 2022 14:05:21 -0300 Subject: [PATCH] Fix NPE when configuration resource does not exist This prevents an NPE to be thrown in tests if a configuration file does not exist --- .../java/io/quarkus/test/QuarkusProdModeTest.java | 10 ++++++++-- .../main/java/io/quarkus/test/QuarkusUnitTest.java | 11 +++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusProdModeTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusProdModeTest.java index fa459a2223dfe..5efe401568e10 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusProdModeTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusProdModeTest.java @@ -5,12 +5,14 @@ import java.io.BufferedReader; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UncheckedIOException; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -777,12 +779,16 @@ public QuarkusProdModeTest withConfigurationResource(String resourceName) { customApplicationProperties = new Properties(); } try { - try (InputStream in = ClassLoader.getSystemResourceAsStream(resourceName)) { + URL systemResource = ClassLoader.getSystemResource(resourceName); + if (systemResource == null) { + throw new FileNotFoundException("Resource '" + resourceName + "' not found"); + } + try (InputStream in = systemResource.openStream()) { customApplicationProperties.load(in); } return this; } catch (IOException e) { - throw new RuntimeException("Could not load resource: '" + resourceName + "'"); + throw new UncheckedIOException("Could not load resource: '" + resourceName + "'", e); } } diff --git a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java index ea97f4c0a77ca..631ebcc7b571b 100644 --- a/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java +++ b/test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusUnitTest.java @@ -3,13 +3,16 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -791,12 +794,16 @@ public QuarkusUnitTest withConfigurationResource(String resourceName) { customApplicationProperties = new Properties(); } try { - try (InputStream in = ClassLoader.getSystemResourceAsStream(resourceName)) { + URL systemResource = ClassLoader.getSystemResource(resourceName); + if (systemResource == null) { + throw new FileNotFoundException("Resource '" + resourceName + "' not found"); + } + try (InputStream in = systemResource.openStream()) { customApplicationProperties.load(in); } return this; } catch (IOException e) { - throw new RuntimeException("Could not load resource: '" + resourceName + "'"); + throw new UncheckedIOException("Could not load resource: '" + resourceName + "'", e); } }