public void testTasksAreSkippedOnUnsupportedArch()

in plugins/docker/base-image/src/integrationTest/java/co/elastic/gradle/dockerbase/MoreDockerBaseImageBuildPluginIT.java [112:181]


    public void testTasksAreSkippedOnUnsupportedArch() throws IOException {
        final Architecture currentArchitecture = Architecture.current();
        final Architecture otherArchitecture = Arrays.stream(Architecture.values())
                .filter(value -> !currentArchitecture.equals(value))
                .findFirst()
                .orElseThrow(() -> new IllegalStateException("No architecture found"));

        helper.buildScript(String.format("""
                import %s.*
                import java.net.URL
                plugins {
                   id("co.elastic.docker-base")
                   id("co.elastic.vault")
                }
                vault {
                      address.set("https://vault-ci-prod.elastic.dev")
                      auth {
                        ghTokenFile()
                        ghTokenEnv()
                        tokenEnv()
                        roleAndSecretEnv()
                      }
                }
                repositories {
                    mavenCentral()
                }
                val creds = vault.readAndCacheSecret("secret/ci/elastic-gradle-plugins/artifactory_creds").get()
                cli {
                    jfrog {
                        username.set(creds["username"])
                        password.set(creds["plaintext"])
                    }
                }
                dockerBaseImage {
                    osPackageRepository.set(URL("https://${creds["username"]}:${creds["plaintext"]}@artifactory.elastic.dev/artifactory/gradle-plugins-os-packages"))
                    fromUbuntu("ubuntu", "20.04")
                    platforms.add(%s)
                }
                """, Architecture.class.getName(), otherArchitecture
        ));
        Files.copy(
                Objects.requireNonNull(getClass().getResourceAsStream("/ubuntu.lockfile.yaml")),
                helper.projectDir().resolve("docker-base-image.lock")
        );

        Assertions.assertEquals(
                TaskOutcome.SKIPPED,
                Objects.requireNonNull(
                        gradleRunner.withArguments("--warning-mode", "fail", "-s", "dockerBaseImageLockfile")
                                .build()
                                .task(":dockerBaseImageLockfile")
                ).getOutcome(),
                "Expected dockerBaseImageLockfile to be skipped but it was not "
        );

        final BuildResult result = gradleRunner.withArguments("--warning-mode", "fail", "-s",
                "dockerBasePull",
                "dockerBaseImageBuild",
                "dockerBaseImagePush"
        ).build();
        List.of(
                ":dockerBasePull", ":dockerBaseImageBuild", ":dockerBaseImagePush"
        ).forEach(task -> {
            Assertions.assertEquals(
                    TaskOutcome.SKIPPED,
                    Objects.requireNonNull(result.task(task)).getOutcome(),
                    "Expected " + task + " to be skipped but it was not "
            );
        });
    }