Author: tchemit Date: 2012-05-01 14:46:41 +0200 (Tue, 01 May 2012) New Revision: 2327 Url: http://nuiton.org/repositories/revision/nuiton-utils/2327 Log: fixes #2072: ResourceTest is bad Modified: trunk/nuiton-utils/src/test/java/org/nuiton/util/ResourceTest.java Modified: trunk/nuiton-utils/src/test/java/org/nuiton/util/ResourceTest.java =================================================================== --- trunk/nuiton-utils/src/test/java/org/nuiton/util/ResourceTest.java 2012-05-01 11:16:07 UTC (rev 2326) +++ trunk/nuiton-utils/src/test/java/org/nuiton/util/ResourceTest.java 2012-05-01 12:46:41 UTC (rev 2327) @@ -27,10 +27,14 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import java.io.File; +import java.lang.reflect.Field; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; @@ -72,8 +76,17 @@ url = Resource.getURL("README.txt"); Assert.assertNotNull(url); + try { + Resource.getURL("bin/java"); + Assert.fail(); + } catch (ResourceNotFoundException e) { + Assert.assertTrue(true); + } + File repository = new File(System.getProperty("java.home")); + Resource.addDefaultClassLoader(repository.toURI().toURL()); url = Resource.getURL("bin/java"); Assert.assertNotNull(url); + } @Test @@ -100,26 +113,52 @@ File file = new File(repository, "lib" + File.separator + "rt.jar"); List<URL> result = Resource.getURLsFromJar(file, ".*OutOfMemoryError.*"); + Assert.assertNotNull(result); Assert.assertEquals(1, result.size()); } + // unaltered classloader + static ClassLoader systemClassLoader; + + @BeforeClass + public static void beforeClass() { + systemClassLoader = ClassLoader.getSystemClassLoader(); + } + + @Before + public void beforeTest() throws NoSuchFieldException, IllegalAccessException { + URLClassLoader classLoader = (URLClassLoader) systemClassLoader; + ClassLoader parent = classLoader.getParent(); + ClassLoader currentClassLoader = new URLClassLoader(classLoader.getURLs(), parent); + Field field = ClassLoader.class.getDeclaredField("scl"); + field.setAccessible(true); + field.set(null, currentClassLoader); + } + + @After + public void afterTest() throws NoSuchFieldException, IllegalAccessException { + Field field = ClassLoader.class.getDeclaredField("scl"); + field.setAccessible(true); + field.set(null, systemClassLoader); + } + @Test public void testGetURLs() throws Exception { if (log.isInfoEnabled()) { log.info(Arrays.asList(((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs())); } + File repository = new File(System.getProperty("java.home")); + Resource.addDefaultClassLoader(repository.toURI().toURL()); List<URL> result; result = Resource.getURLs(".*bin/java"); - if (log.isInfoEnabled()) { - log.info(result); - } + Assert.assertNotNull(result); + Assert.assertEquals(1, result.size()); result = Resource.getURLs("META-INF/MANIFEST.MF"); - if (log.isInfoEnabled()) { - log.info(result); - } + Assert.assertNotNull(result); + Assert.assertEquals(1, result.size()); } @Test
participants (1)
-
tchemit@users.nuiton.org