mirror of
https://github.com/apple/pkl.git
synced 2026-06-17 19:09:41 +02:00
Add @Generated annotation to generated Java types (#1075)
JaCoCo automatically excludes methods and classes annotated with @Generated from the coverage reports. This is very important to us as generated code should not normally be included in the coverage report. We want to measure the coverage of the code that we actually wrote and maintain, not the code that was automatically generated by tools. By introducing a property generatedAnnotation (default value false) one could enable writing @Generated on Java types to be generated. Co-authored-by: Nullpointer <mike.schulze@tealium.com>
This commit is contained in:
@@ -859,6 +859,24 @@ class JavaCodeGeneratorTest {
|
||||
assertThat(fooClass.declaredFields).allSatisfy(Consumer { it.name.startsWith("_") })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun generatedAnnotation() {
|
||||
val javaCode =
|
||||
generateJavaCode(
|
||||
"""
|
||||
module my.mod
|
||||
|
||||
class GeneratedAnnotation {
|
||||
test: Boolean = true
|
||||
}
|
||||
"""
|
||||
.trimIndent(),
|
||||
JavaCodeGeneratorOptions(generatedAnnotation = true),
|
||||
)
|
||||
|
||||
assertThat(javaCode).compilesSuccessfully().isEqualToResourceFile("GeneratedAnnotation.jva")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getters() {
|
||||
val javaCode =
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package my;
|
||||
|
||||
import java.lang.Object;
|
||||
import java.lang.Override;
|
||||
import java.lang.String;
|
||||
import java.lang.StringBuilder;
|
||||
import java.util.Objects;
|
||||
import org.pkl.config.java.Generated;
|
||||
import org.pkl.config.java.mapper.Named;
|
||||
|
||||
@Generated
|
||||
public final class Mod {
|
||||
private Mod() {
|
||||
}
|
||||
|
||||
private static void appendProperty(StringBuilder builder, String name, Object value) {
|
||||
builder.append("\n ").append(name).append(" = ");
|
||||
String[] lines = Objects.toString(value).split("\n");
|
||||
builder.append(lines[0]);
|
||||
for (int i = 1; i < lines.length; i++) {
|
||||
builder.append("\n ").append(lines[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@Generated
|
||||
public static final class GeneratedAnnotation {
|
||||
public final boolean test;
|
||||
|
||||
public GeneratedAnnotation(@Named("test") boolean test) {
|
||||
this.test = test;
|
||||
}
|
||||
|
||||
public GeneratedAnnotation withTest(boolean test) {
|
||||
return new GeneratedAnnotation(test);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null) return false;
|
||||
if (this.getClass() != obj.getClass()) return false;
|
||||
GeneratedAnnotation other = (GeneratedAnnotation) obj;
|
||||
if (!Objects.equals(this.test, other.test)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = 1;
|
||||
result = 31 * result + Objects.hashCode(this.test);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder(100);
|
||||
builder.append(GeneratedAnnotation.class.getSimpleName()).append(" {");
|
||||
appendProperty(builder, "test", this.test);
|
||||
builder.append("\n}");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user