diff options
Diffstat (limited to 'src/functionalTest/java/ch')
6 files changed, 116 insertions, 98 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/CompileFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/CompileFregeTaskFunctionalTest.java index 90a459c..642f958 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/CompileFregeTaskFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/CompileFregeTaskFunctionalTest.java @@ -5,7 +5,7 @@ import static ch.fhnw.thga.gradleplugins.FregePlugin.COMPILE_FREGE_TASK_NAME; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.createFregeSection; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runAndFailGradleTask; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runGradleTask; -import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.NEW_LINE; +import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.NEW_LINE; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.MINIMAL_BUILD_FILE_CONFIG; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.COMPLETION_FR; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.assertFileExists; diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/InitFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/InitFregeTaskFunctionalTest.java new file mode 100644 index 0000000..cd1f4ab --- /dev/null +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/InitFregeTaskFunctionalTest.java @@ -0,0 +1,96 @@ +package ch.fhnw.thga.gradleplugins; + +import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_DIR; +import static ch.fhnw.thga.gradleplugins.FregePlugin.COMPILE_FREGE_TASK_NAME; +import static ch.fhnw.thga.gradleplugins.FregePlugin.INIT_FREGE_TASK_NAME; +import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.MINIMAL_BUILD_FILE_CONFIG; +import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.assertFileExists; +import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runGradleTask; +import static org.gradle.testkit.runner.TaskOutcome.SUCCESS; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.File; + +import org.gradle.api.Project; +import org.gradle.testkit.runner.BuildResult; +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.io.TempDir; + +import ch.fhnw.thga.gradleplugins.fregeproject.FregeProjectBuilder; +import ch.fhnw.thga.gradleplugins.fregeproject.ProjectRoot; + +public class InitFregeTaskFunctionalTest +{ + private static ProjectRoot FREGE_PROJECT_BUILDER = FregeProjectBuilder.builder(); + + @Nested + @IndicativeSentencesGeneration( + separator = " -> ", + generator = DisplayNameGenerator.ReplaceUnderscores.class) + class Init_frege_task_works { + @Test + void given_minimal_build_file_config( + @TempDir File testProjectDir) + throws Exception + { + Project project = FREGE_PROJECT_BUILDER + .projectRoot(testProjectDir) + .buildFile(MINIMAL_BUILD_FILE_CONFIG) + .build(); + + BuildResult result = runGradleTask(testProjectDir, INIT_FREGE_TASK_NAME); + + assertTrue( + project + .getTasks() + .getByName(INIT_FREGE_TASK_NAME) instanceof InitFregeTask + ); + assertEquals( + SUCCESS, + result.task(":" + INIT_FREGE_TASK_NAME).getOutcome() + ); + assertFileExists( + testProjectDir.toPath().resolve(DEFAULT_RELATIVE_SOURCE_DIR).toFile(), + "examples/HelloFrege.fr" + ); + + BuildResult compileHelloFrege = runGradleTask(testProjectDir, COMPILE_FREGE_TASK_NAME); + assertEquals(SUCCESS, compileHelloFrege.task(":" + COMPILE_FREGE_TASK_NAME).getOutcome()); + } + + @Test + void given_custom_module_name_on_command_line( + @TempDir File testProjectDir) + throws Exception + { + Project project = FREGE_PROJECT_BUILDER + .projectRoot(testProjectDir) + .buildFile(MINIMAL_BUILD_FILE_CONFIG) + .build(); + + BuildResult result = runGradleTask( + testProjectDir, + INIT_FREGE_TASK_NAME, + "--moduleName=ch.fhnw.thga.HelloFrege" + ); + + assertTrue( + project + .getTasks() + .getByName(INIT_FREGE_TASK_NAME) instanceof InitFregeTask + ); + assertEquals( + SUCCESS, + result.task(":" + INIT_FREGE_TASK_NAME).getOutcome() + ); + assertFileExists( + testProjectDir.toPath().resolve(DEFAULT_RELATIVE_SOURCE_DIR).toFile(), + "ch/fhnw/thga/HelloFrege.fr" + ); + } + } +} diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/ReplFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/ReplFregeTaskFunctionalTest.java index 652a3c2..792883d 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/ReplFregeTaskFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/ReplFregeTaskFunctionalTest.java @@ -4,7 +4,7 @@ import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_ import static ch.fhnw.thga.gradleplugins.FregePlugin.REPL_FREGE_TASK_NAME; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.COMPLETION_FR; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.MINIMAL_BUILD_FILE_CONFIG; -import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.NEW_LINE; +import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.NEW_LINE; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.assertFileDoesNotExist; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.assertFileExists; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.createFregeSection; diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java index 9170547..ab93b3e 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java @@ -2,7 +2,7 @@ package ch.fhnw.thga.gradleplugins; import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_DIR; import static ch.fhnw.thga.gradleplugins.FregePlugin.RUN_FREGE_TASK_NAME; -import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.NEW_LINE; +import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.NEW_LINE; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.createFregeSection; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runAndFailGradleTask; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runGradleTask; diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SetupFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SetupFregeTaskFunctionalTest.java index 6781764..b0ced6d 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SetupFregeTaskFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SetupFregeTaskFunctionalTest.java @@ -2,6 +2,7 @@ package ch.fhnw.thga.gradleplugins; import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_COMPILER_DOWNLOAD_DIR; import static ch.fhnw.thga.gradleplugins.FregePlugin.SETUP_FREGE_TASK_NAME; +import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.assertFileExists; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.createFregeSection; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runGradleTask; import static org.gradle.testkit.runner.TaskOutcome.SUCCESS; @@ -16,8 +17,8 @@ import org.gradle.testkit.runner.BuildResult; 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.Tag; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import ch.fhnw.thga.gradleplugins.fregeproject.FregeProjectBuilder; @@ -26,20 +27,22 @@ import ch.fhnw.thga.gradleplugins.fregeproject.ProjectRoot; @Tag("network") class SetupFregeTaskFunctionalTest { - private static FregeDTOBuilder FREGE_BUILDER = FregeDTOBuilder.builder(); + private static FregeDTOBuilder FREGE_BUILDER = FregeDTOBuilder.builder(); private static ProjectRoot FREGE_PROJECT_BUILDER = FregeProjectBuilder.builder(); @Nested - @IndicativeSentencesGeneration(separator = " -> ", generator = DisplayNameGenerator.ReplaceUnderscores.class) + @IndicativeSentencesGeneration( + separator = " -> ", + generator = DisplayNameGenerator.ReplaceUnderscores.class) class Setup_frege_task_works { @Test void given_minimal_build_file_config(@TempDir File testProjectDir) throws Exception { String minimalBuildFileConfig = createFregeSection( FREGE_BUILDER - .version("'3.25.84'") - .release("'3.25alpha'") - .build() + .version("'3.25.84'") + .release("'3.25alpha'") + .build() ); Project project = FREGE_PROJECT_BUILDER @@ -56,12 +59,9 @@ class SetupFregeTaskFunctionalTest .getByName(SETUP_FREGE_TASK_NAME) instanceof SetupFregeTask ); assertEquals(SUCCESS, result.task(":" + SETUP_FREGE_TASK_NAME).getOutcome()); - assertTrue( - testProjectDir - .toPath() - .resolve(Paths.get(DEFAULT_RELATIVE_COMPILER_DOWNLOAD_DIR, "frege3.25.84.jar")) - .toFile() - .exists() + assertFileExists( + testProjectDir, + Paths.get(DEFAULT_RELATIVE_COMPILER_DOWNLOAD_DIR, "frege3.25.84.jar").toString() ); } @@ -92,12 +92,9 @@ class SetupFregeTaskFunctionalTest .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() + assertFileExists( + testProjectDir, + Paths.get("dist", "frege3.25.84.jar").toString() ); } } diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java index f935b28..1e6330c 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java @@ -1,20 +1,13 @@ package ch.fhnw.thga.gradleplugins; +import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_DIR; import static ch.fhnw.thga.gradleplugins.FregePlugin.FREGE_EXTENSION_NAME; -import static ch.fhnw.thga.gradleplugins.FregePlugin.FREGE_PLUGIN_ID; -import static ch.fhnw.thga.gradleplugins.GradleBuildFileConversionTest.createPluginsSection; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_DIR; +import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.NEW_LINE; -import java.io.BufferedWriter; import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.stream.Stream; -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; @@ -22,7 +15,6 @@ import ch.fhnw.thga.gradleplugins.fregeproject.FregeSourceFile; public class SharedFunctionalTestLogic { - public static final String NEW_LINE = System.lineSeparator(); public static final String MINIMAL_BUILD_FILE_CONFIG = createFregeSection( FregeDTOBuilder .builder() @@ -83,31 +75,6 @@ public class SharedFunctionalTestLogic System.lineSeparator()); } - private static void writeFile( - File destination, - String content, - boolean append) - throws IOException - { - try (BufferedWriter output = new BufferedWriter(new FileWriter(destination, append))) - { - output.write(content); - } - - } - - static File writeToFile(File destination, String content) throws IOException - { - writeFile(destination, content, false); - return destination; - } - - static File appendToFile(File destination, String content) throws IOException - { - writeFile(destination, System.lineSeparator() + content, true); - return destination; - } - static BuildResult runGradleTask(File testProjectDir, String... args) { return GradleRunner @@ -127,46 +94,4 @@ public class SharedFunctionalTestLogic .withArguments(args) .buildAndFail(); } - - static File createSettingsFile(File testProjectDir) throws IOException - { - File settingsFile = new File(testProjectDir, "settings.gradle"); - return writeToFile(settingsFile, "rootProject.name='frege-plugin'"); - } - - private static File createFregePluginBuildFile( - File testProjectDir) - throws IOException - { - File buildFile = new File(testProjectDir, "build.gradle"); - return writeToFile( - buildFile, - createPluginsSection(Stream.of(FREGE_PLUGIN_ID))); - } - - static File createFregeBuildFile( - File testProjectDir, - String fregeBuildFileConfig) - throws IOException - { - return appendToFile( - createFregePluginBuildFile( - testProjectDir), - fregeBuildFileConfig); - } - - static Project createFregeGradleProject( - File testProjectDir, - String fregeBuildFileConfig) - throws Exception - { - createSettingsFile(testProjectDir); - createFregeBuildFile(testProjectDir, fregeBuildFileConfig); - Project project = ProjectBuilder - .builder() - .withProjectDir(testProjectDir) - .build(); - project.getPluginManager().apply(FREGE_PLUGIN_ID); - return project; - } } |