support for testing offline via gradle-side reflection hacks and firejail
This commit is contained in:
parent
ec67a80389
commit
cbba1ab70a
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/bash
|
||||||
|
firejail --net=none "$G_ORIGINAL_EXECUTABLE" "$@"
|
|
@ -36,4 +36,23 @@ publishing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
afterEvaluate {
|
||||||
|
if (hasProperty("offline")) {
|
||||||
|
tasks.withType(JavaExec::class) {
|
||||||
|
environment("G_ORIGINAL_EXECUTABLE", executable ?: "java")
|
||||||
|
//TODO once we are not using a toolchain, just do executable(rootDir.resolve("buildSrc/java-offline"))
|
||||||
|
val originalMetadata = javaLauncher.get().metadata
|
||||||
|
val field = org.gradle.api.internal.provider.AbstractProperty::class.java.getDeclaredField("value")
|
||||||
|
field.isAccessible = true
|
||||||
|
val customLauncher = object: JavaLauncher {
|
||||||
|
override fun getMetadata(): JavaInstallationMetadata = originalMetadata
|
||||||
|
override fun getExecutablePath(): RegularFile = rootProject.layout.projectDirectory
|
||||||
|
.dir("buildSrc")
|
||||||
|
.file("java-offline")
|
||||||
|
}
|
||||||
|
field.set(javaLauncher, org.gradle.api.internal.provider.Providers.of(customLauncher))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue