in plugins/sandbox/src/integrationTest/java/co/elastic/gradle/sandbox/SandboxPluginIT.java [127:170]
void sandboxExec() {
helper.settings("""
buildCache {
local {
directory = File(rootDir, "build-cache")
}
}
"""
);
helper.buildScript(String.format("""
import %s
plugins {
id("co.elastic.sandbox")
}
tasks.register<SandboxExecTask>("test") {
setWorkingDir("samples")
setCommandLine(listOf("../scripts/test.sh", "arg1", "arg2"))
reads(file("scripts/test.sh"))
runsSystemBinary("mkdir")
runsSystemBinary("env")
runs(file("/usr/bin/find"))
runsSystemBinary("sed")
reads(file("samples/file1"))
reads(fileTree("samples/dir"))
writes(file("build/script_out/output_file"))
writes(fileTree("build/script_out_dir"))
environment("ENV_VAR1", "value1")
environment(mapOf("ENV_VAR2" to "value2"))
}
""", SandboxExecTask.class.getName()
));
BuildResult result = runAndVerifyOutput();
assertContains(result.getOutput(), "Path is: /.bin");
// Env variable specific to docker utils
assertContains(result.getOutput(), "DOCKER_BUILDKIT=1");
final BuildResult upToDateResult = gradleRunner
.withArguments("--warning-mode", "fail", "-s", "test")
.build();
assertEquals(TaskOutcome.UP_TO_DATE, Objects.requireNonNull(upToDateResult.task(":test")).getOutcome());
}