aboutsummaryrefslogtreecommitdiff
path: root/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2022-02-09 10:43:29 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2022-02-09 10:43:29 +0100
commit43ee2210fa07f42a13ac6879ae167db6d2729742 (patch)
tree722fd5a79b230a927234601d74581fdaa9c3b700 /src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java
parent47f99d65a09660863cb5d6b25b239ead3389f3ac (diff)
downloadfrege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.tar.gz
frege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.tar.bz2
frege-gradle-plugin-43ee2210fa07f42a13ac6879ae167db6d2729742.zip
refactor: introduces staged builder patterns for frege project setup
(WIP)
Diffstat (limited to 'src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java')
-rw-r--r--src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java
new file mode 100644
index 0000000..a0d46a4
--- /dev/null
+++ b/src/functionalTest/java/ch/fhnw/thga/gradleplugins/SharedFunctionalTestLogic.java
@@ -0,0 +1,107 @@
+package ch.fhnw.thga.gradleplugins;
+
+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 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;
+
+public class SharedFunctionalTestLogic
+{
+
+ static String createFregeSection(FregeDTO fregeDTO)
+ {
+ return String.format(
+ "%s {%s %s%s}",
+ FREGE_EXTENSION_NAME,
+ System.lineSeparator(),
+ fregeDTO.toBuildFile(),
+ 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... taskName)
+ {
+ return GradleRunner
+ .create()
+ .withProjectDir(testProjectDir)
+ .withPluginClasspath()
+ .withArguments(taskName)
+ .build();
+ }
+
+ 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;
+ }
+}