Fixing test regression from c473da3 by allowing a different resource classloader to be supplied in testing
diff --git a/core/src/main/java/org/jclouds/JcloudsVersion.java b/core/src/main/java/org/jclouds/JcloudsVersion.java
index f3019a2..81422b9 100644
--- a/core/src/main/java/org/jclouds/JcloudsVersion.java
+++ b/core/src/main/java/org/jclouds/JcloudsVersion.java
@@ -60,13 +60,18 @@
@VisibleForTesting
JcloudsVersion() {
- this(readVersionPropertyFromClasspath());
+ this(JcloudsVersion.class.getClassLoader());
}
- private static String readVersionPropertyFromClasspath() {
+ @VisibleForTesting
+ JcloudsVersion(ClassLoader resourceLoader) {
+ this(readVersionPropertyFromClasspath(resourceLoader));
+ }
+
+ private static String readVersionPropertyFromClasspath(ClassLoader resourceLoader) {
Properties versionProperties = new Properties();
try {
- versionProperties.load(checkNotNull(JcloudsVersion.class.getClassLoader().getResourceAsStream(VERSION_RESOURCE_FILE), VERSION_RESOURCE_FILE));
+ versionProperties.load(checkNotNull(resourceLoader.getResourceAsStream(VERSION_RESOURCE_FILE), VERSION_RESOURCE_FILE));
} catch (IOException exception) {
throw new IllegalStateException(format("Unable to load version resource file '%s'", VERSION_RESOURCE_FILE), exception);
}
diff --git a/core/src/test/java/org/jclouds/JcloudsVersionTest.java b/core/src/test/java/org/jclouds/JcloudsVersionTest.java
index 99acf27..18b8d5d 100644
--- a/core/src/test/java/org/jclouds/JcloudsVersionTest.java
+++ b/core/src/test/java/org/jclouds/JcloudsVersionTest.java
@@ -19,7 +19,10 @@
package org.jclouds;
import static org.jclouds.JcloudsVersion.VERSION_RESOURCE_FILE;
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
import java.io.InputStream;
import java.util.List;
@@ -35,18 +38,10 @@
@Test(singleThreaded = true)
public class JcloudsVersionTest {
- @Test
+ @Test(expectedExceptions = { NullPointerException.class })
public void testFailsIfResourceFileMissing() {
- ClassLoader original = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(
- new ResourceHidingClassLoader(original, VERSION_RESOURCE_FILE));
- try {
- new JcloudsVersion();
- fail("Expected NullPointerException");
- } catch (NullPointerException expected) {
- } finally {
- Thread.currentThread().setContextClassLoader(original);
- }
+ new JcloudsVersion(new ResourceHidingClassLoader(JcloudsVersion.class.getClassLoader(),
+ VERSION_RESOURCE_FILE));
}
@Test(expectedExceptions = { IllegalArgumentException.class })