support symlinked .m2/repository in tests
Some jenkins servers have this, but our codebase normalization doesn't follow symlinks. Add this so that its correct. Only really impacts tests, i suppose it helps if someone has a symlinked plugins/ but that is not recommended :)
This commit is contained in:
parent
eec3c2a97c
commit
15e55e882f
|
@ -133,10 +133,11 @@ final class Security {
|
||||||
Path policyFile = plugin.resolve(PluginInfo.ES_PLUGIN_POLICY);
|
Path policyFile = plugin.resolve(PluginInfo.ES_PLUGIN_POLICY);
|
||||||
if (Files.exists(policyFile)) {
|
if (Files.exists(policyFile)) {
|
||||||
// first get a list of URLs for the plugins' jars:
|
// first get a list of URLs for the plugins' jars:
|
||||||
|
// we resolve symlinks so map is keyed on the normalize codebase name
|
||||||
List<URL> codebases = new ArrayList<>();
|
List<URL> codebases = new ArrayList<>();
|
||||||
try (DirectoryStream<Path> jarStream = Files.newDirectoryStream(plugin, "*.jar")) {
|
try (DirectoryStream<Path> jarStream = Files.newDirectoryStream(plugin, "*.jar")) {
|
||||||
for (Path jar : jarStream) {
|
for (Path jar : jarStream) {
|
||||||
codebases.add(jar.toUri().toURL());
|
codebases.add(jar.toRealPath().toUri().toURL());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -174,7 +174,7 @@ public class BootstrapForTesting {
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute classpath minus obvious places, all other jars will get the permission.
|
// compute classpath minus obvious places, all other jars will get the permission.
|
||||||
Set<URL> codebases = new HashSet<>(Arrays.asList(JarHell.parseClassPath()));
|
Set<URL> codebases = new HashSet<>(Arrays.asList(parseClassPathWithSymlinks()));
|
||||||
Set<URL> excluded = new HashSet<>(Arrays.asList(
|
Set<URL> excluded = new HashSet<>(Arrays.asList(
|
||||||
// es core
|
// es core
|
||||||
Bootstrap.class.getProtectionDomain().getCodeSource().getLocation(),
|
Bootstrap.class.getProtectionDomain().getCodeSource().getLocation(),
|
||||||
|
@ -214,6 +214,19 @@ public class BootstrapForTesting {
|
||||||
return Collections.unmodifiableMap(map);
|
return Collections.unmodifiableMap(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return parsed classpath, but with symlinks resolved to destination files for matching
|
||||||
|
* this is for matching the toRealPath() in the code where we have a proper plugin structure
|
||||||
|
*/
|
||||||
|
@SuppressForbidden(reason = "does evil stuff with paths and urls because devs and jenkins do evil stuff with paths and urls")
|
||||||
|
static URL[] parseClassPathWithSymlinks() throws Exception {
|
||||||
|
URL raw[] = JarHell.parseClassPath();
|
||||||
|
for (int i = 0; i < raw.length; i++) {
|
||||||
|
raw[i] = PathUtils.get(raw[i].toURI()).toRealPath().toUri().toURL();
|
||||||
|
}
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
|
||||||
// does nothing, just easy way to make sure the class is loaded.
|
// does nothing, just easy way to make sure the class is loaded.
|
||||||
public static void ensureInitialized() {}
|
public static void ensureInitialized() {}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue