public void testSingleProject()

in plugins/docker/base-image/src/integrationTest/java/co/elastic/gradle/dockerbase/DockerBaseImageMatrix.java [34:84]


    public void testSingleProject(String baseImages, @TempDir Path gradleHome) throws IOException, InterruptedException {
        helper.writeFile("image_content/foo.txt", "sample content");
        writeSimpleBuildScript(helper, baseImages);
        final BuildResult lockfileResult = runGradleTask(gradleRunner, "dockerBaseImageLockfile", gradleHome);

        System.out.println(lockfileResult.getOutput());
        runGradleTask(gradleRunner, "dockerLocalImport", gradleHome);



        System.out.println("Running verification script...");
        Files.copy(
                Objects.requireNonNull(getClass().getResourceAsStream("/test_created_image.sh")),
                helper.projectDir().resolve("test_created_image.sh")
        );
        Files.setPosixFilePermissions(
                helper.projectDir().resolve("test_created_image.sh"),
                PosixFilePermissions.fromString("r-xr-xr-x")
        );
        final Process process = new ProcessBuilder()
                .redirectOutput(ProcessBuilder.Redirect.PIPE)
                .redirectError(ProcessBuilder.Redirect.PIPE)
                .directory(helper.projectDir().toFile())
                .command(helper.projectDir().resolve("test_created_image.sh").toString())
                .start();

        do {
            IOUtils.copy(process.getInputStream(), System.out);
            IOUtils.copy(process.getErrorStream(), System.err);
        } while (process.isAlive());


        final int exitCode = process.waitFor();
        if (exitCode != 0) {
            Assertions.fail("Verification script failed with exit code: " + exitCode);
        }
        System.out.println("Verification script completed successfully...");

        final Set<String> imagesInDaemonRightBeforeClean = getImagesInDaemon();
        final String expectedLocalTag = "gradle-test-local/" + helper.projectDir().getFileName() + "-base:latest";
        if (!imagesInDaemonRightBeforeClean.contains(expectedLocalTag)) {
            fail("Expected " + expectedLocalTag + " to be present in the daemon after local import but it was not");
        }

        runGradleTask(gradleRunner, "dockerBaseImageClean", gradleHome);

        Set<String> imagesInDaemonAfterClean = getImagesInDaemon();
        if (imagesInDaemonAfterClean.contains(expectedLocalTag)) {
            fail("Expected " + expectedLocalTag + " to be not be in the daemon after clean but it was");
        }
    }