in plugins/sandbox/src/integrationTest/java/co/elastic/gradle/sandbox/SandboxPluginIT.java [271:332]
void testWithLocallyBuiltImage() {
helper.settings("""
include("subproject")
"""
);
helper.buildScript("subproject", String.format("""
import %s
abstract class BuildDockerImage : DefaultTask(), ContainerImageProviderTask {
init {
tag.convention("ubuntu:20.04@sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9")
imageId.convention("test")
}
abstract override fun getTag(): Property<String>
abstract override fun getImageId(): Property<String>
}
val dockerTask by tasks.registering(BuildDockerImage::class)
""", ContainerImageProviderTask.class.getName()
));
helper.buildScript(String.format("""
import %s
import %s
plugins {
id("co.elastic.sandbox")
}
abstract class BuildDockerImage : DefaultTask(), ContainerImageProviderTask {
init {
tag.convention("ubuntu:20.04@sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9")
imageId.convention("test")
}
abstract override fun getTag(): Property<String>
abstract override fun getImageId(): Property<String>
}
val dockerTask by tasks.registering(BuildDockerImage::class)
tasks.register<SandboxDockerExecTask>("test1") {
image(dockerTask)
setCommandLine(listOf("uname", "-r", "-s"))
}
tasks.register<SandboxDockerExecTask>("test2") {
image(project(":subproject"))
setCommandLine(listOf("uname", "-r", "-s"))
}
""", SandboxDockerExecTask.class.getName(), ContainerImageProviderTask.class.getName()
));
final BuildResult result = gradleRunner
.withArguments("--warning-mode", "fail", "-s", "test1", "test2")
.build();
assertDoesNotContain(
result.getOutput(),
"Pulling docker image: ubuntu:20.04@sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9"
);
assertContains(result.getOutput(), "Linux ");
// Assert that the dependent tasks ran. These will be up-to-date as they don't have any task actions
assertEquals(Objects.requireNonNull(result.task(":dockerTask")).getOutcome(), TaskOutcome.UP_TO_DATE);
assertEquals(Objects.requireNonNull(result.task(":subproject:dockerTask")).getOutcome(), TaskOutcome.UP_TO_DATE);
}