diff options
| author | tricktron <tgagnaux@gmail.com> | 2022-03-09 18:08:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-09 18:08:57 +0100 |
| commit | 77dd1ed3d3f451fe2a58cfdaad1329777777d3b4 (patch) | |
| tree | 81b445ffa30e5c1e953612e481514b56859fd11b /src/functionalTest/java/ch | |
| parent | 0fb7e5baa3b1418e69f04716d20ad0f8bbdb5992 (diff) | |
| parent | 68562738c90ede953ab3e4c24c0fa9aef79c8c6d (diff) | |
| download | frege-gradle-plugin-77dd1ed3d3f451fe2a58cfdaad1329777777d3b4.tar.gz frege-gradle-plugin-77dd1ed3d3f451fe2a58cfdaad1329777777d3b4.tar.bz2 frege-gradle-plugin-77dd1ed3d3f451fe2a58cfdaad1329777777d3b4.zip | |
Merge pull request #31 from tricktron/f-test-task
Adds testFrege Task
Diffstat (limited to 'src/functionalTest/java/ch')
| -rw-r--r-- | src/functionalTest/java/ch/fhnw/thga/gradleplugins/TestFregeFunctionalTest.java | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/TestFregeFunctionalTest.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/TestFregeFunctionalTest.java new file mode 100644 index 0000000..4a53fa0 --- /dev/null +++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/TestFregeFunctionalTest.java @@ -0,0 +1,144 @@ +package ch.fhnw.thga.gradleplugins; + +import static ch.fhnw.thga.gradleplugins.FregeExtension.DEFAULT_RELATIVE_SOURCE_DIR; +import static ch.fhnw.thga.gradleplugins.FregePlugin.TEST_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.SharedTaskLogic.EMPTY_LINE; +import static ch.fhnw.thga.gradleplugins.SharedTaskLogic.NEW_LINE; +import static org.gradle.testkit.runner.TaskOutcome.FAILED; +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 java.util.stream.Stream; + +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.FregeSourceFile; + +public class TestFregeFunctionalTest +{ + private static final FregeSourceFile PROPERTY_TESTS_FR = new FregeSourceFile( + String.format( + "%s/%s", + DEFAULT_RELATIVE_SOURCE_DIR, + "ch/fhnw/thga/PropertyTests.fr" + ), + String.join(NEW_LINE, + "module ch.fhnw.thga.PropertyTests where", + EMPTY_LINE, + "import Test.QuickCheck", + EMPTY_LINE, + "p_pass = property $ \\(n::Integer) -> odd n ^^ even n", + "p_fail = property $ \\(n::Integer) -> even n" + ) + ); + + @Nested + @IndicativeSentencesGeneration( + separator = " -> ", + generator = DisplayNameGenerator.ReplaceUnderscores.class + ) + class Test_frege_task_works + { + @Test + void given_frege_code_with_true_quick_check_property( + @TempDir File testProjectDir) + throws Exception + { + String mainBuildConfig = createFregeSection( + FregeDTOBuilder + .builder() + .version("'3.25.84'") + .release("'3.25alpha'") + .mainModule("'ch.fhnw.thga.PropertyTests'") + .build() + ); + + Project project = FregeProjectBuilder + .builder() + .projectRoot(testProjectDir) + .buildFile(mainBuildConfig) + .fregeSourceFiles(() -> Stream.of(PROPERTY_TESTS_FR)) + .build(); + + BuildResult result = runGradleTask( + testProjectDir, + TEST_FREGE_TASK_NAME, + "--args=-v -p p_pass" + ); + + assertTrue( + project + .getTasks() + .getByName(TEST_FREGE_TASK_NAME) + instanceof TestFregeTask + ); + assertEquals( + SUCCESS, + result.task(":" + TEST_FREGE_TASK_NAME).getOutcome() + ); + assertTrue(result.getOutput().contains("OK")); + assertTrue(result.getOutput().contains("Properties passed: 1, failed: 0")); + } + } + + @Nested + @IndicativeSentencesGeneration( + separator = " -> ", + generator = DisplayNameGenerator.ReplaceUnderscores.class + ) + class Test_frege_task_fails + { + @Test + void given_frege_code_with_false_quick_check_property( + @TempDir File testProjectDir) + throws Exception + { + String mainBuildConfig = createFregeSection( + FregeDTOBuilder + .builder() + .version("'3.25.84'") + .release("'3.25alpha'") + .mainModule("'ch.fhnw.thga.PropertyTests'") + .build() + ); + + Project project = FregeProjectBuilder + .builder() + .projectRoot(testProjectDir) + .buildFile(mainBuildConfig) + .fregeSourceFiles(() -> Stream.of(PROPERTY_TESTS_FR)) + .build(); + + BuildResult result = runAndFailGradleTask( + testProjectDir, + TEST_FREGE_TASK_NAME, + "--args=-v -p p_fail" + ); + + assertTrue( + project + .getTasks() + .getByName(TEST_FREGE_TASK_NAME) + instanceof TestFregeTask + ); + assertEquals( + FAILED, + result.task(":" + TEST_FREGE_TASK_NAME).getOutcome() + ); + assertTrue(result.getOutput().contains("Failed")); + assertTrue(result.getOutput().contains("Properties passed: 0, failed: 1")); + } + } +} |
