aboutsummaryrefslogtreecommitdiff
path: root/src/functionalTest/java/ch/fhnw/thga
diff options
context:
space:
mode:
authorThibault Gagnaux <thibault.gagnaux@bit.admin.ch>2021-07-08 12:18:42 +0200
committerThibault Gagnaux <thibault.gagnaux@bit.admin.ch>2021-07-08 16:04:54 +0200
commitce39d8f5cdfae2788c4664e08d895afead76c682 (patch)
treef61be38f42c1b93a8b0cebdaaad52a90931b870e /src/functionalTest/java/ch/fhnw/thga
parent2fceaad440fffc1f6edbd8e4887469cc948edb5d (diff)
downloadfrege-gradle-plugin-ce39d8f5cdfae2788c4664e08d895afead76c682.tar.gz
frege-gradle-plugin-ce39d8f5cdfae2788c4664e08d895afead76c682.tar.bz2
frege-gradle-plugin-ce39d8f5cdfae2788c4664e08d895afead76c682.zip
Refactor: Uses junit5 nested tests for a better structure
Setups missing java 11 in the github workflow
Diffstat (limited to 'src/functionalTest/java/ch/fhnw/thga')
-rw-r--r--src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java132
1 files changed, 82 insertions, 50 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java
index 6800f96..e93bd19 100644
--- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java
+++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java
@@ -1,6 +1,6 @@
package ch.fhnw.thga.gradleplugins;
-import static ch.fhnw.thga.gradleplugins.FregeDTOTest.createPluginsSection;
+import static ch.fhnw.thga.gradleplugins.GradleBuildFileConversionTest.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;
@@ -22,10 +22,18 @@ import org.gradle.api.Project;
import org.gradle.testfixtures.ProjectBuilder;
import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayNameGenerator;
+import org.junit.jupiter.api.IndicativeSentencesGeneration;
+import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.junit.jupiter.api.io.TempDir;
+@TestInstance(Lifecycle.PER_CLASS)
public class FregePluginFunctionalTest {
private final FregeDTOBuilder fregeBuilder = new FregeDTOBuilder();
@@ -37,14 +45,8 @@ public class FregePluginFunctionalTest {
private Project project;
private void writeFile(File destination, String content, boolean append) throws IOException {
- BufferedWriter output = null;
- try {
- output = new BufferedWriter(new FileWriter(destination, append));
+ try (BufferedWriter output = new BufferedWriter(new FileWriter(destination, append))) {
output.write(content);
- } finally {
- if (output != null) {
- output.close();
- }
}
}
@@ -60,59 +62,89 @@ public class FregePluginFunctionalTest {
return String.format("%s {\n %s\n}", FREGE_EXTENSION_NAME, fregeDTO.toBuildFile());
}
- private void assertGradleTaskOutcome(String buildFileTaskConfig, String taskName) throws Exception {
- appendToFile(buildFile, buildFileTaskConfig);
- BuildResult result = GradleRunner.create().withProjectDir(testProjectDir).withPluginClasspath()
- .withArguments(taskName).build();
- System.out.println(result.getOutput());
- assertEquals(SUCCESS, result.task(":" + taskName).getOutcome());
+ private BuildResult runGradleTask(String taskName) {
+ return GradleRunner.create().withProjectDir(testProjectDir).withPluginClasspath()
+ .withArguments(taskName).build();
}
- @BeforeEach
- void setup() throws Exception {
- buildFile = new File(testProjectDir, "build.gradle");
+ @BeforeAll
+ void beforeAll() throws Exception {
settingsFile = new File(testProjectDir, "settings.gradle");
- writeToFile(buildFile, createPluginsSection(Stream.of(FREGE_PLUGIN_ID)));
writeToFile(settingsFile, "rootProject.name='frege-plugin'");
project = ProjectBuilder.builder().withProjectDir(testProjectDir).build();
project.getPluginManager().apply(FREGE_PLUGIN_ID);
+
+ }
+
+ @BeforeEach
+ void setup() throws Exception {
+ buildFile = new File(testProjectDir, "build.gradle");
+ writeToFile(buildFile, createPluginsSection(Stream.of(FREGE_PLUGIN_ID)));
}
- @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();
- assertTrue(project.getTasks().getByName(SETUP_FREGE_TASK_NAME) instanceof SetupFregeTask);
- assertGradleTaskOutcome(createFregeSection(minimalFregeDTO), SETUP_FREGE_TASK_NAME);
- assertTrue(testProjectDir.toPath().resolve(Paths.get(DEFAULT_DOWNLOAD_DIRECTORY, "frege3.25.84.jar")).toFile()
- .exists());
+ @AfterEach
+ void cleanup() {
+ buildFile.delete();
}
- @Test
- void given_setup_frege_compiler_task_when_frege_version_and_frege_release_and_download_directory_is_specified_then_frege_compiler_is_successfully_downloaded_to_specified_directory()
- throws Exception {
- FregeDTO fregeDTO = fregeBuilder.version("'3.25.84'").release("'3.25alpha'")
- .compilerDownloadDir("layout.projectDirectory.dir('dist')").build();
- assertTrue(project.getTasks().getByName(SETUP_FREGE_TASK_NAME) instanceof SetupFregeTask);
- assertGradleTaskOutcome(createFregeSection(fregeDTO), SETUP_FREGE_TASK_NAME);
- assertTrue(testProjectDir.toPath().resolve(Paths.get("dist", "frege3.25.84.jar")).toFile().exists());
+ @Nested
+ @IndicativeSentencesGeneration(separator = " -> ", generator = DisplayNameGenerator.ReplaceUnderscores.class)
+ class Setup_frege_task_works {
+
+ @Test
+ void given_minimal_build_file_config()
+ throws Exception {
+ String minimalBuildFileConfig = createFregeSection(fregeBuilder.version("'3.25.84'").release("'3.25alpha'").build());
+ appendToFile(buildFile, minimalBuildFileConfig);
+
+ BuildResult result = runGradleTask(SETUP_FREGE_TASK_NAME);
+
+ assertTrue(project.getTasks().getByName(SETUP_FREGE_TASK_NAME) instanceof SetupFregeTask);
+ assertEquals(SUCCESS, result.task(":" + SETUP_FREGE_TASK_NAME).getOutcome());
+ assertTrue(testProjectDir.toPath().resolve(Paths.get(DEFAULT_DOWNLOAD_DIRECTORY, "frege3.25.84.jar"))
+ .toFile().exists());
+ }
+
+ @Test
+ void given_custom_frege_compiler_download_directory_in_build_file_config()
+ throws Exception {
+ String buildFileConfigWithCustomDownloadDir = createFregeSection(fregeBuilder.version("'3.25.84'").release("'3.25alpha'")
+ .compilerDownloadDir("layout.projectDirectory.dir('dist')").build());
+ appendToFile(buildFile, buildFileConfigWithCustomDownloadDir);
+
+ BuildResult result = runGradleTask(SETUP_FREGE_TASK_NAME);
+
+ assertTrue(project.getTasks().getByName(SETUP_FREGE_TASK_NAME) instanceof SetupFregeTask);
+ assertEquals(SUCCESS, result.task(":" + SETUP_FREGE_TASK_NAME).getOutcome());
+ assertTrue(testProjectDir.toPath().resolve(Paths.get("dist", "frege3.25.84.jar")).toFile().exists());
+ }
}
- @Test
- void frege_compile_task_is_correctly_executed() throws Exception {
- String fregeCode = "module ch.fhnw.thga.Completion where\n\n" + "complete :: Int -> (Int, String)\n"
- + "complete i = (i, \"Frege rocks\")\n";
- Files.createDirectories(testProjectDir.toPath().resolve(Paths.get("src", "main", "frege")));
- File completionFr = testProjectDir.toPath().resolve(Paths.get("src", "main", "frege", "Completion.fr"))
- .toFile();
- writeToFile(completionFr, fregeCode);
- FregeDTO minimalFregeDTO = fregeBuilder.version("'3.25.84'").release("'3.25alpha'").build();
- assertTrue(project.getTasks().getByName(COMPILE_FREGE_TASK_NAME) instanceof CompileFregeTask);
- assertGradleTaskOutcome(createFregeSection(minimalFregeDTO), COMPILE_FREGE_TASK_NAME);
- assertTrue(new File(testProjectDir.getAbsolutePath() + "/build/classes/main/frege/ch/fhnw/thga/Completion.java")
- .exists());
- assertTrue(
- new File(testProjectDir.getAbsolutePath() + "/build/classes/main/frege/ch/fhnw/thga/Completion.class")
- .exists());
+ @Nested
+ @IndicativeSentencesGeneration(separator = " -> ", generator = DisplayNameGenerator.ReplaceUnderscores.class)
+ class Compile_frege_task_works {
+
+ @Test
+ void given_frege_code_in_src_main_frege_and_minimal_build_file_config() throws Exception {
+ String fregeCode = "module ch.fhnw.thga.Completion where\n\n" + "complete :: Int -> (Int, String)\n"
+ + "complete i = (i, \"Frege rocks\")\n";
+ Files.createDirectories(testProjectDir.toPath().resolve(Paths.get("src", "main", "frege")));
+ File completionFr = testProjectDir.toPath().resolve(Paths.get("src", "main", "frege", "Completion.fr"))
+ .toFile();
+ writeToFile(completionFr, fregeCode);
+ String minimalBuildFileConfig = createFregeSection(fregeBuilder.version("'3.25.84'").release("'3.25alpha'").build());
+ appendToFile(buildFile, minimalBuildFileConfig);
+
+ BuildResult result = runGradleTask(COMPILE_FREGE_TASK_NAME);
+
+ assertTrue(project.getTasks().getByName(COMPILE_FREGE_TASK_NAME) instanceof CompileFregeTask);
+ assertEquals(SUCCESS, result.task(":" + COMPILE_FREGE_TASK_NAME).getOutcome());
+ assertTrue(new File(
+ testProjectDir.getAbsolutePath() + "/build/classes/main/frege/ch/fhnw/thga/Completion.java")
+ .exists());
+ assertTrue(new File(
+ testProjectDir.getAbsolutePath() + "/build/classes/main/frege/ch/fhnw/thga/Completion.class")
+ .exists());
+ }
}
} \ No newline at end of file