diff options
author | tricktron <tgagnaux@gmail.com> | 2022-02-25 10:19:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-25 10:19:16 +0100 |
commit | d852eb27823a53abb97366bae84ad0b806d6c748 (patch) | |
tree | 05345a77152410d3d8354e209108e7fd125080f6 /src | |
parent | 5dda097196baa60fc45bb4f300439d791ccb1130 (diff) | |
parent | 4ea98e2199fcabbb585c4eb9187b3f00d7197d39 (diff) | |
download | frege-gradle-plugin-d852eb27823a53abb97366bae84ad0b806d6c748.tar.gz frege-gradle-plugin-d852eb27823a53abb97366bae84ad0b806d6c748.tar.bz2 frege-gradle-plugin-d852eb27823a53abb97366bae84ad0b806d6c748.zip |
Merge pull request #26 from tricktron/f-only-compile-mainModule-and-replModule-files
Only Compile Specified Files if Specified
Diffstat (limited to 'src')
3 files changed, 51 insertions, 13 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java index c4d5bad..9170547 100644 --- a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/RunFregeTaskFunctionalTest.java @@ -7,6 +7,8 @@ import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.createFregeSe import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runAndFailGradleTask; import static ch.fhnw.thga.gradleplugins.SharedFunctionalTestLogic.runGradleTask; 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.assertFileDoesNotExist; import static org.gradle.testkit.runner.TaskOutcome.FAILED; import static org.gradle.testkit.runner.TaskOutcome.SUCCESS; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -116,7 +118,46 @@ public class RunFregeTaskFunctionalTest ); assertTrue(result.getOutput().contains("Frege rocks")); } + + @Test + void given_two_frege_files_then_only_the_specified_main_module_is_compiled( + @TempDir File testProjectDir) + throws Exception + { + Project project = FregeProjectBuilder + .builder() + .projectRoot(testProjectDir) + .buildFile(MINIMAL_BUILD_FILE_CONFIG) + .fregeSourceFiles(() -> Stream.of(MAIN_FR, COMPLETION_FR)) + .build(); + + BuildResult result = runGradleTask( + testProjectDir, + 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")); + assertFileDoesNotExist( + testProjectDir, + "build/classes/main/frege/ch/fhnw/thga/Completion.java" + ); + assertFileDoesNotExist( + testProjectDir, + "build/classes/main/frege/ch/fhnw/thga/Completion.class" + ); + } } + @Nested @IndicativeSentencesGeneration( separator = " -> ", diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java index a39a07b..0620e51 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/CompileFregeTask.java @@ -11,7 +11,6 @@ import javax.inject.Inject; import org.gradle.api.DefaultTask; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.RegularFileProperty; -import org.gradle.api.logging.LogLevel; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; @@ -22,6 +21,7 @@ import org.gradle.api.tasks.InputDirectory; import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.JavaExec; +import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; @@ -48,6 +48,7 @@ public abstract class CompileFregeTask extends DefaultTask { public abstract Property<String> getFregeDependencies(); @Input + @Optional @Option(option = "compileItem", description = "The absolute path to the frege file or the module name" ) @@ -69,11 +70,8 @@ public abstract class CompileFregeTask extends DefaultTask { @Internal public final Provider<List<String>> getCompileItems() { return getFregeCompileItem() - .map(name -> - { - return name.isEmpty() ? getFregeSourceFiles().get() - : List.of(name); - }); + .map(name -> List.of(name)) + .orElse(getFregeSourceFiles()); } @Internal @@ -116,7 +114,6 @@ public abstract class CompileFregeTask extends DefaultTask { @TaskAction public void compileFrege() { - this.getLogging().captureStandardOutput(LogLevel.LIFECYCLE); List<String> targetDirectoryArg = List.of( "-d", getFregeOutputDir().getAsFile().get().getAbsolutePath() @@ -124,7 +121,6 @@ public abstract class CompileFregeTask extends DefaultTask { javaExec.setClasspath( getProject() .files(getFregeCompilerJar())) - .setErrorOutput(System.out) .setArgs(buildCompilerArgsFromProperties(targetDirectoryArg)) .exec(); } diff --git a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java index e1f410a..a4fa7b8 100644 --- a/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java +++ b/src/main/java/ch/fhnw/thga/gradleplugins/FregePlugin.java @@ -3,6 +3,7 @@ package ch.fhnw.thga.gradleplugins; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; +import org.gradle.api.logging.LogLevel; import org.gradle.api.tasks.TaskProvider; public class FregePlugin implements Plugin<Project> @@ -52,7 +53,6 @@ public class FregePlugin implements Plugin<Project> task.getFregeOutputDir().set(extension.getOutputDir()); task.getFregeCompilerFlags().set(extension.getCompilerFlags()); task.getFregeDependencies().set(implementation.getAsPath()); - task.getFregeCompileItem().set(""); } ); @@ -61,7 +61,6 @@ public class FregePlugin implements Plugin<Project> RunFregeTask.class, task -> { - task.getMainModule().set(extension.getMainModule()); task.dependsOn(compileFregeTask.map( compileTask -> @@ -69,7 +68,7 @@ public class FregePlugin implements Plugin<Project> compileTask.getFregeCompileItem().set(task.getMainModule()); return compileTask; } - )); + ).get()); task.getFregeCompilerJar().set( setupFregeCompilerTask.get().getFregeCompilerOutputPath()); task.getFregeOutputDir().set(extension.getOutputDir()); @@ -86,10 +85,12 @@ public class FregePlugin implements Plugin<Project> task.dependsOn(compileFregeTask.map( compileTask -> { - compileTask.getFregeCompileItem().set(task.getReplModule()); + compileTask.getFregeCompileItem().set(extension.getReplModule()); + compileTask.getLogging().captureStandardOutput(LogLevel.LIFECYCLE); + compileTask.getLogging().captureStandardError(LogLevel.LIFECYCLE); return compileTask; } - )); + ).get()); task.getFregeCompilerJar().set( setupFregeCompilerTask.get().getFregeCompilerOutputPath()); task.getFregeOutputDir().set(extension.getOutputDir()); |