From 45413d0e3e03f583041ebb59d35906f238c13a41 Mon Sep 17 00:00:00 2001 From: king-tyler <8304181+king-tyler@users.noreply.github.com> Date: Mon, 29 Jun 2020 22:10:48 -0500 Subject: [PATCH] Add testing for other Gradle versions (#23) --- .github/workflows/pull_request.yml | 2 +- README.md | 2 + build.gradle | 3 ++ .../XtextProjectPluginsFunctionalTest.java | 47 +++++++++++++------ .../mydsl-xtend/example.mydsl.ui/build.gradle | 4 +- .../example.mydsl.ui/build.gradle | 4 +- .../mydsl/example.mydsl.ui/build.gradle | 4 +- 7 files changed, 48 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 7f8e439..8a63bab 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,4 +16,4 @@ jobs: with: java-version: ${{ matrix.jdk }} - name: Build - run: ./gradlew build --info --stacktrace --warning-mode=fail + run: ./gradlew build "-PgradleVersions=6.2.2,current" --info --stacktrace --warning-mode=fail diff --git a/README.md b/README.md index 5e7e5a4..6e4af68 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ within Gradle. This includes: * Generates the project's `build.properties` when imported into Eclipse so that dsl project can be launched and tested within Eclipse PDE. +These plugins have been successfully tested with Gradle 6.2 up to 6.5. They should work with newer versions as well. + ## Usage gradle-xtext-generator provides the following plugins: diff --git a/build.gradle b/build.gradle index 877766b..bfc6ff9 100644 --- a/build.gradle +++ b/build.gradle @@ -128,6 +128,9 @@ tasks.named(JavaPlugin.TEST_TASK_NAME) { systemProperty 'm2', file(repository.url) systemProperty 'pluginVersion', version systemProperty 'xtextVersion', xtextVersion + if (findProperty('gradleVersions') != null) { + systemProperty 'gradleVersions', gradleVersions + } doFirst { mkdir temporaryDir } diff --git a/src/test/java/com/github/zxhr/gradle/xtext/XtextProjectPluginsFunctionalTest.java b/src/test/java/com/github/zxhr/gradle/xtext/XtextProjectPluginsFunctionalTest.java index 6b24322..2ed1d5d 100644 --- a/src/test/java/com/github/zxhr/gradle/xtext/XtextProjectPluginsFunctionalTest.java +++ b/src/test/java/com/github/zxhr/gradle/xtext/XtextProjectPluginsFunctionalTest.java @@ -36,12 +36,23 @@ import org.gradle.api.UncheckedIOException; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; public class XtextProjectPluginsFunctionalTest { private Path tempDir; + public static Stream<String> getGradleVersions() { + String gradleVersions = System.getProperty("gradleVersions"); + Stream<String> current = Stream.of("current"); + if (gradleVersions == null) { + return current; + } else { + return Stream.concat(current, Stream.of(gradleVersions.split(","))).distinct(); + } + } + private void setupProject(String project) throws IOException { tempDir = Files.createTempDirectory(Paths.get(System.getProperty("testdir")), project); Path rootProject = Paths.get("src", "test", "resources", project); @@ -56,14 +67,15 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO }); } - @Test - public void testXtextJavaProject() throws IOException { + @ParameterizedTest(name = "Xtext Java Project - Gradle {0}") + @MethodSource("getGradleVersions") + public void testXtextJavaProject(String gradleVersion) throws IOException { setupProject("mydsl"); - BuildResult result = runProject(CLEAN_TASK_NAME, BUILD_TASK_NAME, ECLIPSE_TASK_NAME); + BuildResult result = runProject(gradleVersion, CLEAN_TASK_NAME, BUILD_TASK_NAME, ECLIPSE_TASK_NAME); checkProjectsGenerated(result, "example.mydsl", "example.mydsl.ide", "example.mydsl.ui", "example.mydsl.web"); checkEclipsePdeSetup(tempDir.resolve("example.mydsl.ui")); - result = runProject(BUILD_TASK_NAME); + result = runProject(gradleVersion, BUILD_TASK_NAME); assertEquals(UP_TO_DATE, result.task(getTask(GENERATE_MWE2_TASK_NAME)).getOutcome()); Path pluginXml = tempDir .resolve(Paths.get("example.mydsl", "build", "src-gen", "main", "resources", "plugin.xml")); @@ -71,26 +83,33 @@ public void testXtextJavaProject() throws IOException { assertTrue(pluginXmlText.contains("point=\"org.example.extension.point\"")); } - @Test - public void testXtextXtendProject() throws IOException { + @ParameterizedTest(name = "Xtext Xtend Project - Gradle {0}") + @MethodSource("getGradleVersions") + public void testXtextXtendProject(String gradleVersion) throws IOException { setupProject("mydsl-xtend"); - BuildResult result = runProject(CLEAN_TASK_NAME, BUILD_TASK_NAME); + BuildResult result = runProject(gradleVersion, CLEAN_TASK_NAME, BUILD_TASK_NAME); checkProjectsGenerated(result, "example.mydsl", "example.mydsl.ide", "example.mydsl.ui", "example.mydsl.web"); } - @Test - public void testDifferentVersionXtextProject() throws IOException { + @ParameterizedTest(name = "Xtext 2.20.0 Java Project - Gradle {0}") + @MethodSource("getGradleVersions") + public void testDifferentVersionXtextProject(String gradleVersion) throws IOException { setupProject("mydsl-xtext-version"); - BuildResult result = runProject(CLEAN_TASK_NAME, BUILD_TASK_NAME); + BuildResult result = runProject(gradleVersion, CLEAN_TASK_NAME, BUILD_TASK_NAME); checkProjectsGenerated(result, "example.mydsl", "example.mydsl.ide", "example.mydsl.ui", "example.mydsl.web"); } - private BuildResult runProject(String... tasks) { - List<String> arguments = new ArrayList<>(asList(tasks)); + private BuildResult runProject(String gradleVersion, String... tasks) { + List<String> arguments = new ArrayList<>(); arguments.addAll(asList("-PxtextExampleVersion=" + System.getProperty("xtextVersion"), "-PpluginVersion=" + System.getProperty("pluginVersion"), "-Dmaven.repo.local=" + System.getProperty("m2"), "-s", "--warning-mode=fail")); - return GradleRunner.create().withProjectDir(tempDir.toFile()).forwardOutput().withArguments(arguments).build(); + arguments.addAll(asList(tasks)); + GradleRunner runner = GradleRunner.create(); + if (!"current".equals(gradleVersion)) { + runner = runner.withGradleVersion(gradleVersion); + } + return runner.withProjectDir(tempDir.toFile()).forwardOutput().withArguments(arguments).build(); } private void checkProjectsGenerated(BuildResult result, String runtimeProject, String genericIdeProject, diff --git a/src/test/resources/mydsl-xtend/example.mydsl.ui/build.gradle b/src/test/resources/mydsl-xtend/example.mydsl.ui/build.gradle index 193ec72..08b6490 100644 --- a/src/test/resources/mydsl-xtend/example.mydsl.ui/build.gradle +++ b/src/test/resources/mydsl-xtend/example.mydsl.ui/build.gradle @@ -11,7 +11,9 @@ repositories { patternLayout { artifact '[artifact]_[revision].[ext]' } - metadataSources.artifact() + metadataSources { + artifact() + } } } diff --git a/src/test/resources/mydsl-xtext-version/example.mydsl.ui/build.gradle b/src/test/resources/mydsl-xtext-version/example.mydsl.ui/build.gradle index 193ec72..08b6490 100644 --- a/src/test/resources/mydsl-xtext-version/example.mydsl.ui/build.gradle +++ b/src/test/resources/mydsl-xtext-version/example.mydsl.ui/build.gradle @@ -11,7 +11,9 @@ repositories { patternLayout { artifact '[artifact]_[revision].[ext]' } - metadataSources.artifact() + metadataSources { + artifact() + } } } diff --git a/src/test/resources/mydsl/example.mydsl.ui/build.gradle b/src/test/resources/mydsl/example.mydsl.ui/build.gradle index 0a98398..3a99094 100644 --- a/src/test/resources/mydsl/example.mydsl.ui/build.gradle +++ b/src/test/resources/mydsl/example.mydsl.ui/build.gradle @@ -12,7 +12,9 @@ repositories { patternLayout { artifact '[artifact]_[revision].[ext]' } - metadataSources.artifact() + metadataSources { + artifact() + } } }