package tests.security.permissions;
import dalvik.annotation.AndroidOnly;
-import dalvik.annotation.BrokenTest;
import dalvik.annotation.TestTargets;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetNew;
)
})
@AndroidOnly("uses DexFile")
- @BrokenTest("Endless loop in ClassLoader. Actually a known failure.")
public void test_getSystemClassLoader () throws IOException,
IllegalAccessException, InstantiationException {
class TestSecurityManager extends SecurityManager {
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:
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(
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;
* @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);