diff options
author | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-11-10 09:15:23 +0100 |
---|---|---|
committer | Thibault Gagnaux <tgagnaux@gmail.com> | 2021-11-10 09:15:23 +0100 |
commit | a5bdb321ebff31e5b2005c6b511fc3873ec9cc7f (patch) | |
tree | 5edc31f1546e38f1a5fd6a17d41100415666b657 | |
parent | 06d18924294dfe78eaba8eafe3a5ec559c43aecb (diff) | |
download | frege-gradle-plugin-a5bdb321ebff31e5b2005c6b511fc3873ec9cc7f.tar.gz frege-gradle-plugin-a5bdb321ebff31e5b2005c6b511fc3873ec9cc7f.tar.bz2 frege-gradle-plugin-a5bdb321ebff31e5b2005c6b511fc3873ec9cc7f.zip |
feat: `mainModule` property can be configured with command-line option
-rw-r--r-- | src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java | 19 | ||||
-rw-r--r-- | src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java | 2 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java index 3e36f52..aa3a7f4 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/FregePluginFunctionalTest.java @@ -67,7 +67,7 @@ public class FregePluginFunctionalTest { return String.format("%s {\n %s\n}", FREGE_EXTENSION_NAME, fregeDTO.toBuildFile()); } - private BuildResult runGradleTask(String taskName, String... args) { + private BuildResult runGradleTask(String... taskName) { return GradleRunner.create().withProjectDir(testProjectDir).withPluginClasspath().withArguments(taskName) .build(); } @@ -191,7 +191,7 @@ public class FregePluginFunctionalTest { @IndicativeSentencesGeneration(separator = " -> ", generator = DisplayNameGenerator.ReplaceUnderscores.class) class Run_frege_task_works { @Test - void given_frege_file_with_main_function() throws Exception { + void given_frege_file_with_main_function_and_main_module_config() throws Exception { String fregeCode = String.join(NEW_LINE, "module ch.fhnw.thga.Main where", NEW_LINE, NEW_LINE, " main = do", NEW_LINE, " println \"Frege rocks\"", NEW_LINE); String mainFr = "Main.fr"; @@ -219,5 +219,20 @@ public class FregePluginFunctionalTest { assertEquals(FAILED, result.task(":" + RUN_FREGE_TASK_NAME).getOutcome()); assertTrue(result.getOutput().contains("Main method not found")); } + + @Test + void given_frege_file_with_main_function_and_main_module_command_line_option() throws Exception { + String fregeCode = String.join(NEW_LINE, "module ch.fhnw.thga.Main where", NEW_LINE, NEW_LINE, + " main = do", NEW_LINE, " println \"Frege rocks\"", NEW_LINE); + String mainFr = "Main.fr"; + String buildFileConfig = createFregeSection( + fregeBuilder.version("'3.25.84'").release("'3.25alpha'").build()); + setupDefaultFregeProjectStructure(fregeCode, mainFr, buildFileConfig); + + BuildResult result = runGradleTask(RUN_FREGE_TASK_NAME, "--mainModule=ch.fhnw.thga.Main"); + assertTrue(project.getTasks().getByName(RUN_FREGE_TASK_NAME) instanceof RunFregeTask); + assertEquals(SUCCESS, result.task(":" + RUN_FREGE_TASK_NAME).getOutcome()); + assertTrue(result.getOutput().contains("Frege rocks")); + } } }
\ No newline at end of file diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java index 2f619a5..d27816c 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/RunFregeTask.java @@ -14,6 +14,7 @@ import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.options.Option; public abstract class RunFregeTask extends DefaultTask { public static final Logger LOGGER = Logging.getLogger(SetupFregeTask.class); @@ -26,6 +27,7 @@ public abstract class RunFregeTask extends DefaultTask { public abstract DirectoryProperty getFregeOutputDir(); @Input + @Option(option = "mainModule", description = "The full name of the Frege module with a main function, e.g. 'my.mod.Name'") public abstract Property<String> getMainModule(); @Inject |