aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorThibault Gagnaux <tgagnaux@gmail.com>2021-12-20 20:48:17 +0100
committerThibault Gagnaux <tgagnaux@gmail.com>2021-12-21 11:22:55 +0100
commit992490f446720cd4cf4fb9aadff463b2328a8287 (patch)
treee3a19d9c3f79a6ba9620f05da2db8ba5421df9ff /src/test
parentf923b4f8733003d55891dd4da25d849c81c4933c (diff)
downloadfrege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.gz
frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.tar.bz2
frege-gradle-plugin-992490f446720cd4cf4fb9aadff463b2328a8287.zip
feat: adds `replSource` property and command-line option
The `replSource` property specifies the frege source file that you want to load into the repl. It is excluded in the `fregeCompile` task so that we don't get two java class files (one from `compileFrege` and one from the fregeRepl `:l` command) that shadow each other on the classpath. As a result, we can make interactive changes to the `replSource` file and use the `:r` reload command to see them.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/ch/fhnw/thga/gradleplugins/Builder.java2
-rw-r--r--src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java39
-rw-r--r--src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java18
3 files changed, 49 insertions, 10 deletions
diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java b/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java
index 9293e44..d379013 100644
--- a/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java
+++ b/src/test/java/ch/fhnw/thga/gradleplugins/Builder.java
@@ -15,5 +15,7 @@ public interface Builder {
Builder compilerFlags(String compilerFlags);
+ Builder replModule(String replModule);
+
FregeDTO build();
}
diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java
index a09bd27..bea1e81 100644
--- a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java
+++ b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTO.java
@@ -14,9 +14,17 @@ public class FregeDTO {
public final String outputDir;
public final String mainModule;
public final String compilerFlags;
-
- public FregeDTO(String version, String release, String compilerDownloadDir, String mainSourceDir,
- String outputDir, String mainModule, String compilerFlags) {
+ public final String replModule;
+
+ public FregeDTO(
+ String version,
+ String release,
+ String compilerDownloadDir,
+ String mainSourceDir,
+ String outputDir,
+ String mainModule,
+ String compilerFlags,
+ String replModule) {
this.version = version;
this.release = release;
this.compilerDownloadDir = compilerDownloadDir;
@@ -24,6 +32,7 @@ public class FregeDTO {
this.outputDir = outputDir;
this.mainModule = mainModule;
this.compilerFlags = compilerFlags;
+ this.replModule = replModule;
}
public String getVersion() {
@@ -54,6 +63,10 @@ public class FregeDTO {
return compilerFlags;
}
+ public String getReplModule() {
+ return replModule;
+ }
+
private String getFieldValue(Field field) {
try {
return field.get(this).toString();
@@ -67,7 +80,9 @@ public class FregeDTO {
return FregeDTO.class.getField(fieldName);
} catch (NoSuchFieldException e) {
throw new RuntimeException(
- String.format("Field %s not found in class %s", e.getMessage(), FregeDTO.class.getName()),
+ String.format(
+ "Field %s not found in class %s",
+ e.getMessage(), FregeDTO.class.getName()),
e.getCause());
}
}
@@ -81,7 +96,8 @@ public class FregeDTO {
}
private boolean isGetterProperty(Method method) {
- return method.getName().startsWith("get") && method.getReturnType().getName().contains("Property");
+ return method.getName().startsWith("get") &&
+ method.getReturnType().getName().contains("Property");
}
private String stripGetPrefixAndDecapitalize(String s) {
@@ -89,9 +105,14 @@ public class FregeDTO {
}
public String toBuildFile() {
- Stream<Method> methods = Arrays.stream(FregeExtension.class.getMethods());
- Stream<Field> fields = methods.filter(m -> isGetterProperty(m))
- .map(m -> stripGetPrefixAndDecapitalize(m.getName())).map(name -> getField(name));
- return fields.filter(f -> !isEmpty(f)).map(f -> toKeyValuePairs(f)).collect(Collectors.joining("\n "));
+ Stream<Field> fields =
+ Arrays.stream(FregeExtension.class.getMethods())
+ .filter(m -> isGetterProperty(m))
+ .map(m -> stripGetPrefixAndDecapitalize(m.getName()))
+ .map(name -> getField(name));
+ return fields
+ .filter(f -> !isEmpty(f))
+ .map(f -> toKeyValuePairs(f))
+ .collect(Collectors.joining("\n "));
}
}
diff --git a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java
index 910114e..d3a6c52 100644
--- a/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java
+++ b/src/test/java/ch/fhnw/thga/gradleplugins/FregeDTOBuilder.java
@@ -8,6 +8,7 @@ public final class FregeDTOBuilder implements Builder {
private String outputDir = "";
private String mainModule = "";
private String compilerFlags = "";
+ private String replModule = "";
private static volatile FregeDTOBuilder instance;
@@ -72,7 +73,22 @@ public final class FregeDTOBuilder implements Builder {
return this;
}
+ @Override
+ public Builder replModule(String replModule)
+ {
+ this.replModule = replModule;
+ return this;
+ }
+
public FregeDTO build() {
- return new FregeDTO(version, release, compilerDownloadDir, mainSourceDir, outputDir, mainModule, compilerFlags);
+ return new FregeDTO(
+ version,
+ release,
+ compilerDownloadDir,
+ mainSourceDir,
+ outputDir,
+ mainModule,
+ compilerFlags,
+ replModule);
}
}