Skip to content

Commit 5810ef8

Browse files
committed
inherit annotation processors from a calling point
1 parent 2a36c0f commit 5810ef8

File tree

3 files changed

+60
-3
lines changed

3 files changed

+60
-3
lines changed

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@
4141
<scope>test</scope>
4242
</dependency>
4343

44+
<dependency>
45+
<groupId>org.projectlombok</groupId>
46+
<artifactId>lombok</artifactId>
47+
<version>1.18.10</version>
48+
<scope>test</scope>
49+
</dependency>
50+
4451
<!-- region Junit 5 -->
4552
<dependency>
4653
<groupId>org.junit.jupiter</groupId>

src/main/java/com/jupitertools/compiletest/CompileTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
import org.intellij.lang.annotations.Language;
1212

1313

14-
1514
public class CompileTest {
1615

1716
private List<Code> classCodes = new ArrayList<>();
1817
private List<Processor> processors = new ArrayList<>();
18+
private boolean inheritAllProcessors = false;
1919

2020
public CompileTest classCode(String name, @Language("Java") String code) {
2121
classCodes.add(new Code(name, code));
@@ -45,10 +45,16 @@ public CompileResult compile() {
4545
null,
4646
null,
4747
compilationUnits);
48-
49-
compilationTask.setProcessors(processors);
48+
if (!inheritAllProcessors) {
49+
compilationTask.setProcessors(processors);
50+
}
5051
compilationTask.call();
5152
CompiledClassLoader classLoader = new CompiledClassLoader(fileManager.getGeneratedFiles());
5253
return new CompileResult(classLoader);
5354
}
55+
56+
public CompileTest inheritAllProcessors() {
57+
this.inheritAllProcessors = true;
58+
return this;
59+
}
5460
}

src/test/java/com/jupitertools/compiletest/CompileTestTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.jupitertools.compiletest;
22

3+
import org.junit.jupiter.api.Assertions;
34
import org.junit.jupiter.api.Nested;
45
import org.junit.jupiter.api.Test;
56

@@ -94,4 +95,47 @@ void invokeStatic() {
9495
assertThat(result).isEqualTo("Hey-Ho! class C");
9596
}
9697
}
98+
99+
@Nested
100+
class ProcessorsInherit {
101+
102+
@Test
103+
void lombokTest() {
104+
105+
String code = "import lombok.Getter;" +
106+
"" +
107+
"public class A {" +
108+
" @Getter" +
109+
" public String tst = \"ABC\";" +
110+
"}";
111+
112+
Object result = new CompileTest().classCode("A", code)
113+
.inheritAllProcessors()
114+
.compile()
115+
.createClass("A")
116+
.invoke("getTst");
117+
118+
assertThat(result).isEqualTo("ABC");
119+
}
120+
121+
@Test
122+
void error() {
123+
String code = "import lombok.Getter;" +
124+
"" +
125+
"public class A {" +
126+
" @Getter" +
127+
" public String tst = \"ABC\";" +
128+
"}";
129+
130+
InstantiatedClass instance = new CompileTest().classCode("A", code)
131+
.compile()
132+
.createClass("A");
133+
134+
RuntimeException exc = Assertions.assertThrows(RuntimeException.class,
135+
() -> instance.invoke("getTst"));
136+
137+
assertThat(exc.getCause()).isInstanceOf(NoSuchMethodException.class);
138+
assertThat(exc.getMessage()).contains("A.getTst()");
139+
}
140+
}
97141
}

0 commit comments

Comments
 (0)