void sandboxExec()

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());
    }