From 0e4bdc75773c85f6696253a1d2fb7d4ed1ad9240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Lamar=C3=A3o?= Date: Mon, 2 Oct 2023 19:29:35 -0300 Subject: [PATCH] Test commands database generation. --- .../metal/base/CommandsFunctionalTest.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/plugins/src/functionalTest/java/br/dev/pedrolamarao/gradle/metal/base/CommandsFunctionalTest.java b/plugins/src/functionalTest/java/br/dev/pedrolamarao/gradle/metal/base/CommandsFunctionalTest.java index d9cbbac..5720db5 100644 --- a/plugins/src/functionalTest/java/br/dev/pedrolamarao/gradle/metal/base/CommandsFunctionalTest.java +++ b/plugins/src/functionalTest/java/br/dev/pedrolamarao/gradle/metal/base/CommandsFunctionalTest.java @@ -3,11 +3,15 @@ import org.gradle.testkit.runner.GradleRunner; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.assertTrue; + public class CommandsFunctionalTest { @TempDir Path projectDir; @@ -30,4 +34,60 @@ public void apply () throws IOException .withArguments("commands") .build(); } + + @ParameterizedTest + @ValueSource(strings={"asm","c","cxx","ixx"}) + public void language (String language) throws IOException + { + final var subprojectDir = projectDir.resolve("sub"); + final var subprojectSourceDir = subprojectDir.resolve("src/main/%s".formatted(language)); + + Files.createDirectories(subprojectSourceDir); + + Files.writeString(subprojectDir.resolve("build.gradle.kts"), + """ + plugins { + id("br.dev.pedrolamarao.metal.%s") + } + + metal { + %s { + create("main") + } + } + """.formatted(language,language) + ); + + Files.writeString(subprojectSourceDir.resolve("foo.%s".formatted(language)), + """ + """ + ); + + Files.writeString(projectDir.resolve("build.gradle.kts"), + """ + plugins { + id("br.dev.pedrolamarao.metal.commands") + } + + dependencies { + commands(project(":sub")) + } + """.formatted(language,language) + ); + + Files.writeString(projectDir.resolve("settings.gradle.kts"), + """ + include("sub") + """ + ); + + GradleRunner.create() + .withPluginClasspath() + .withProjectDir(projectDir.toFile()) + .withDebug(true) + .withArguments("commands") + .build(); + + assertTrue( Files.exists( projectDir.resolve("compile_commands.json") ) ); + } }