diff options
-rw-r--r-- | .github/workflows/main.yml | 6 | ||||
-rw-r--r-- | build.gradle | 33 | ||||
-rw-r--r-- | src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java (renamed from src/test/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java) | 43 | ||||
-rw-r--r-- | src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOTest.java | 67 |
4 files changed, 99 insertions, 50 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0c68f2b..4f896e5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,7 +1,7 @@ name: Test on: push: - branches: [ main ] + branches: [ main, f-simple-javaExec-task-alternative ] pull_request: branches: [ main ] workflow_dispatch: @@ -22,7 +22,7 @@ jobs: - name: Run Tests run: | if [ "$RUNNER_OS" = "Windows" ]; then - gradlew.bat clean test + gradlew.bat clean check else - ./gradlew clean test + ./gradlew clean check fi
\ No newline at end of file diff --git a/build.gradle b/build.gradle index d889b1f..9d7ac13 100644 --- a/build.gradle +++ b/build.gradle @@ -6,15 +6,18 @@ repositories { mavenCentral() } -dependencies { - testImplementation('org.junit.jupiter:junit-jupiter-api:5.7.2') - testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.7.2') -} - group = 'ch.fhnw.thga' version = '0.0.1-SNAPSHOT' +sourceSets { + functionalTest { + compileClasspath += sourceSets.main.output + sourceSets.test.output + runtimeClasspath += sourceSets.test.runtimeClasspath + } +} + gradlePlugin { + testSourceSets project.sourceSets.functionalTest plugins { fregePlugin { id = 'ch.fhnw.thga.frege' @@ -23,6 +26,26 @@ gradlePlugin { } } +configurations { + functionalTestImplementation.extendsFrom testImplementation + functionalRuntimeOnly.extendsFrom runtimeOnly +} + +tasks.register('functionalTest', Test) { + description = 'Runs functional tests.' + group = 'verification' + testClassesDirs = sourceSets.functionalTest.output.classesDirs + classpath = sourceSets.functionalTest.runtimeClasspath + shouldRunAfter test +} + +check.dependsOn functionalTest + tasks.withType(Test).configureEach { useJUnitPlatform() } + +dependencies { + testImplementation('org.junit.jupiter:junit-jupiter-api:5.7.2') + testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.7.2') +} diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java index 81ba9ad..6800f96 100644 --- a/src/test/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java @@ -1,5 +1,6 @@ package ch.fhnw.thga.gradleplugins; +import static ch.fhnw.thga.gradleplugins.FregeDTOTest.createPluginsSection; import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_DOWNLOAD_DIRECTORY; import static ch.fhnw.thga.gradleplugins.FregePlugin.COMPILE_FREGE_TASK_NAME; import static ch.fhnw.thga.gradleplugins.FregePlugin.FREGE_EXTENSION_NAME; @@ -15,7 +16,6 @@ import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.stream.Collectors; import java.util.stream.Stream; import org.gradle.api.Project; @@ -56,15 +56,6 @@ public class FregePluginFunctionalTest { writeFile(destination, "\n" + content, true); } - private static String buildFilePluginString(String pluginId) { - return String.format("id '%s'", pluginId); - } - - private static String createPluginsSection(Stream<String> pluginIds) { - String plugins = pluginIds.map(pluginId -> buildFilePluginString(pluginId)).collect(Collectors.joining("\n ")); - return String.format("plugins {\n %s\n}\n", plugins); - } - private static String createFregeSection(FregeDTO fregeDTO) { return String.format("%s {\n %s\n}", FREGE_EXTENSION_NAME, fregeDTO.toBuildFile()); } @@ -88,38 +79,6 @@ public class FregePluginFunctionalTest { } @Test - void given_version_and_release_then_fregeDTO_can_be_converted_to_build_file_string() { - FregeDTO fregeDTO = fregeBuilder.version("'3.25'").release("'3.25alpha'").build(); - String expected = "version = '3.25'\n release = '3.25alpha'"; - assertEquals(expected, fregeDTO.toBuildFile()); - } - - @Test - void given_version_release_and_compiler_download_dir_then_fregeDTO_can_be_converted_to_build_file_string() { - FregeDTO fregeDTO = fregeBuilder.version("'3.25'").release("'3.25alpha'") - .compilerDownloadDir("layout.projectDirectory.dir('dist')").build(); - String expected = "version = '3.25'\n release = '3.25alpha'\n compilerDownloadDir = layout.projectDirectory.dir('dist')"; - assertEquals(expected, fregeDTO.toBuildFile()); - } - - @Test - void given_single_plugin_id_then_it_is_correctly_converted_to_build_file_string() { - String pluginId = "frege"; - Stream<String> pluginIds = Stream.of(pluginId); - String expected = "plugins {\n" + " id '" + pluginId + "'\n" + "}\n"; - assertEquals(expected, createPluginsSection(pluginIds)); - } - - @Test - void given_multiple_plugin_ids_then_they_are_correctly_converted_to_build_file_string() { - String fregeId = "frege"; - String javaId = "java"; - Stream<String> pluginIds = Stream.of(fregeId, javaId); - String expected = "plugins {\n" + " id '" + fregeId + "'\n" + " id '" + javaId + "'\n" + "}\n"; - assertEquals(expected, createPluginsSection(pluginIds)); - } - - @Test void given_setup_frege_compiler_task_when_frege_version_and_frege_release_is_specified_then_frege_compiler_is_successfully_downloaded_to_default_directory() throws Exception { FregeDTO minimalFregeDTO = fregeBuilder.version("'3.25.84'").release("'3.25alpha'").build(); diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOTest.java b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOTest.java new file mode 100644 index 0000000..8df6eae --- /dev/null +++ b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOTest.java @@ -0,0 +1,67 @@ +package ch.fhnw.thga.gradleplugins; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.stream.Stream; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; + +public class FregeDTOTest { + private final FregeDTOBuilder fregeBuilder = new FregeDTOBuilder(); + + private static String buildFilePluginString(String pluginId) { + return String.format("id '%s'", pluginId); + } + + static String createPluginsSection(Stream<String> pluginIds) { + String plugins = pluginIds.map(pluginId -> buildFilePluginString(pluginId)).collect(Collectors.joining("\n ")); + return String.format("plugins {\n %s\n}\n", plugins); + } + + // TODO: Is there a better alternative? + // needed helper method because reflection does NOT return the fields in order + private void assertStringContainsSubStrings(String s, Stream<String> subStrings) { + assertTrue(subStrings.allMatch(substring -> s.contains(substring))); + } + + @Test + void given_version_then_fregeDTO_can_be_converted_to_build_file_string() { + FregeDTO fregeDTO = fregeBuilder.version("'3.25'").build(); + String expected = "version = '3.25'"; + assertEquals(expected, fregeDTO.toBuildFile()); + } + + @Test + void given_version_and_release_then_fregeDTO_can_be_converted_to_build_file_string() { + FregeDTO fregeDTO = fregeBuilder.version("'3.25'").release("'3.25alpha'").build(); + String expected = "version = '3.25'\n release = '3.25alpha'"; + assertStringContainsSubStrings(expected, fregeDTO.toBuildFile().lines()); + } + + @Test + void given_version_release_and_compiler_download_dir_then_fregeDTO_can_be_converted_to_build_file_string() { + FregeDTO fregeDTO = fregeBuilder.version("'3.25'").release("'3.25alpha'") + .compilerDownloadDir("layout.projectDirectory.dir('dist')").build(); + String expected = "version = '3.25'\n release = '3.25alpha'\n compilerDownloadDir = layout.projectDirectory.dir('dist')"; + assertStringContainsSubStrings(expected, fregeDTO.toBuildFile().lines()); + } + + @Test + void given_single_plugin_id_then_it_is_correctly_converted_to_build_file_string() { + String pluginId = "frege"; + Stream<String> pluginIds = Stream.of(pluginId); + String expected = "plugins {\n" + " id '" + pluginId + "'\n" + "}\n"; + assertEquals(expected, createPluginsSection(pluginIds)); + } + + @Test + void given_multiple_plugin_ids_then_they_are_correctly_converted_to_build_file_string() { + String fregeId = "frege"; + String javaId = "java"; + Stream<String> pluginIds = Stream.of(fregeId, javaId); + String expected = "plugins {\n" + " id '" + fregeId + "'\n" + " id '" + javaId + "'\n" + "}\n"; + assertEquals(expected, createPluginsSection(pluginIds)); + } +} |