mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
8183503: Update hotspot tests to allow for unique test classes directory
Reviewed-by: iklam
This commit is contained in:
parent
0a79d06e97
commit
ce9501e66a
3 changed files with 43 additions and 10 deletions
|
@ -31,8 +31,10 @@ import java.io.File;
|
|||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class ClassUnloadCommon {
|
||||
public static class TestFailure extends RuntimeException {
|
||||
|
@ -61,14 +63,45 @@ public class ClassUnloadCommon {
|
|||
System.gc();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a class loader that loads classes from {@code ${test.class.path}}
|
||||
* before delegating to the system class loader.
|
||||
*/
|
||||
public static ClassLoader newClassLoader() {
|
||||
try {
|
||||
return new URLClassLoader(new URL[] {
|
||||
Paths.get(System.getProperty("test.classes",".") + File.separatorChar + "classes").toUri().toURL(),
|
||||
}, null);
|
||||
} catch (MalformedURLException e){
|
||||
throw new RuntimeException("Unexpected URL conversion failure", e);
|
||||
}
|
||||
String cp = System.getProperty("test.class.path", ".");
|
||||
URL[] urls = Stream.of(cp.split(File.pathSeparator))
|
||||
.map(Paths::get)
|
||||
.map(ClassUnloadCommon::toURL)
|
||||
.toArray(URL[]::new);
|
||||
return new URLClassLoader(urls) {
|
||||
@Override
|
||||
public Class<?> loadClass(String cn, boolean resolve)
|
||||
throws ClassNotFoundException
|
||||
{
|
||||
synchronized (getClassLoadingLock(cn)) {
|
||||
Class<?> c = findLoadedClass(cn);
|
||||
if (c == null) {
|
||||
try {
|
||||
c = findClass(cn);
|
||||
} catch (ClassNotFoundException e) {
|
||||
c = getParent().loadClass(cn);
|
||||
}
|
||||
|
||||
}
|
||||
if (resolve) {
|
||||
resolveClass(c);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static URL toURL(Path path) {
|
||||
try {
|
||||
return path.toUri().toURL();
|
||||
} catch (MalformedURLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue