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" "$@"
|
|
@ -37,3 +37,22 @@ 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