summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-07-07 22:58:47 +0200
committerThibault Gagnaux <tgagnaux@gmail.com>2021-07-07 22:58:47 +0200
commit2fceaad440fffc1f6edbd8e4887469cc948edb5d (patch)
tree8ceac945432e7c38ac7655d4590bdc5e2f9ef6c3
parentcd5d39b867ad5435039d1a47244252078600ca0b (diff)
downloadfrege-gradle-plugin-2fceaad440fffc1f6edbd8e4887469cc948edb5d.tar.gz
frege-gradle-plugin-2fceaad440fffc1f6edbd8e4887469cc948edb5d.tar.bz2
frege-gradle-plugin-2fceaad440fffc1f6edbd8e4887469cc948edb5d.zip
Splits tests into fast unit tests and slow functional tests
-rw-r--r--.github/workflows/main.yml6
-rw-r--r--build.gradle33
-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.java67
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));
+ }
+}