OSDN Git Service

Reactivating tests disabled because of ClassLoader loop
authorUrs Grob <ursg@google.com>
Wed, 29 Apr 2009 15:01:24 +0000 (17:01 +0200)
committerUrs Grob <ursg@google.com>
Thu, 28 May 2009 14:06:03 +0000 (16:06 +0200)
Since ClassLoader.isAncestorOf has been fixed these tests now succeed.
So they can be reactivated.

BUG=1732214

libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/lang/ClassLoaderTest.java
libcore/security/src/test/java/tests/security/permissions/JavaLangClassLoaderTest.java
libcore/security/src/test/java/tests/security/permissions/JavaLangThreadTest.java
libcore/support/src/test/java/tests/support/resource/Support_Resources.java

index c9fba59..9b5b17e 100644 (file)
@@ -600,7 +600,6 @@ public class ClassLoaderTest extends TestCase {
         method = "getSystemClassLoader",
         args = {}
     )
-    @BrokenTest("Infinite loop in classloader. Actually a known failure.")
     public void test_getSystemClassLoader() {
         // Test for method java.lang.ClassLoader
         // java.lang.ClassLoader.getSystemClassLoader()
index 66302ed..c33bb1b 100644 (file)
@@ -17,7 +17,6 @@
 package tests.security.permissions;
 
 import dalvik.annotation.AndroidOnly;
-import dalvik.annotation.BrokenTest;
 import dalvik.annotation.TestTargets;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetNew;
@@ -120,7 +119,6 @@ public class JavaLangClassLoaderTest extends TestCase {
         )
     })
     @AndroidOnly("uses DexFile")
-    @BrokenTest("Endless loop in ClassLoader. Actually a known failure.")
     public void test_getSystemClassLoader () throws IOException,
             IllegalAccessException, InstantiationException {
         class TestSecurityManager extends SecurityManager {
@@ -142,6 +140,10 @@ public class JavaLangClassLoaderTest extends TestCase {
         
         File tempFile = Support_Resources.createTempFile(".jar");
         tempFile.delete();
+        tempFile.deleteOnExit();
+        File tempCache = Support_Resources.createTempFile(".dex");
+        tempCache.delete();
+        tempCache.deleteOnExit();
         
         /*
          * The testdex.jar contains the following two classes:
@@ -167,8 +169,10 @@ public class JavaLangClassLoaderTest extends TestCase {
         
         InputStream is = Support_Resources.getResourceStream("testdex.jar");
         Support_Resources.copyLocalFileto(tempFile, is);
-        DexFile dexfile = new DexFile(tempFile);
-        ClassLoader pcl = Support_ClassLoader.getInstance(new URL(""),
+        DexFile dexfile = DexFile.loadDex(tempFile.getAbsolutePath(),
+                tempCache.getAbsolutePath(), 0);
+        ClassLoader pcl = Support_ClassLoader.getInstance(
+                new URL(Support_Resources.getResourceURL("testdex.jar")),
                 ClassLoader.getSystemClassLoader());
         
         Class<?> testClass = dexfile.loadClass(
index 0e5b43c..e71cec0 100644 (file)
@@ -143,8 +143,6 @@ public class JavaLangThreadTest extends TestCase {
         args = {}
     )
     @AndroidOnly("RI impl differs from RI spec, Android impl does not.")
-    @BrokenTest("Suffers from endless loop in getClassLoader(), actually a"
-            + "@KnownFailure, but we don't want to hang the test harness")
     public void test_getContextClassLoader() {
         class TestSecurityManager extends SecurityManager {
             boolean called;
index f15f618..53a8925 100644 (file)
@@ -147,17 +147,11 @@ public class Support_Resources {
      * @return - resource input stream
      */
     public static InputStream getResourceStream(String name) {
-//ATTENTION:
-//    Against class.getResourceStream(name) the name can start with a "/".
-//    Against classLoader.getResourceStream NOT!
         
-        InputStream is;
-//        is = Support_Resources.class.getClassLoader().getResourceAsStream(name); This would work without leading "/"
-        is = Support_Resources.class.getResourceAsStream(name);
-//        is = ClassLoader.getSystemClassLoader().getResourceAsStream(name); This would work without leading "/"
+        InputStream is = Support_Resources.class.getResourceAsStream(name);
 
         if (is == null) {
-            name = "/tests/resources/" + name;
+            name = RESOURCE_PACKAGE + name;
             is = Support_Resources.class.getResourceAsStream(name);
             if (is == null) {
                 throw new RuntimeException("Failed to load resource: " + name);