Skip to content

Commit 800946d

Browse files
committed
Enable MultiTieredCompilationIntegrationTest for ECJ
This is currently failing due to an integration issue with the classpath.
1 parent e9999b7 commit 800946d

File tree

1 file changed

+114
-62
lines changed

1 file changed

+114
-62
lines changed

java-compiler-testing/src/test/java/io/github/ascopes/jct/tests/integration/compilation/MultiTieredCompilationIntegrationTest.java

Lines changed: 114 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818
import static io.github.ascopes.jct.assertions.JctAssertions.assertThatCompilation;
1919

2020
import io.github.ascopes.jct.compilers.JctCompiler;
21+
import io.github.ascopes.jct.junit.EcjCompilerTest;
2122
import io.github.ascopes.jct.junit.JavacCompilerTest;
2223
import io.github.ascopes.jct.tests.integration.AbstractIntegrationTest;
24+
import io.github.ascopes.jct.workspaces.PathStrategy;
25+
import io.github.ascopes.jct.workspaces.Workspace;
2326
import io.github.ascopes.jct.workspaces.Workspaces;
2427
import org.junit.jupiter.api.DisplayName;
2528

@@ -34,89 +37,138 @@ class MultiTieredCompilationIntegrationTest extends AbstractIntegrationTest {
3437

3538
@DisplayName(
3639
"I can compile sources to classes and provide them in the classpath to a second compilation"
40+
+ "for Javac"
3741
)
3842
@JavacCompilerTest
39-
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilation(
43+
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationForJavac(
4044
JctCompiler<?, ?> compiler
4145
) {
4246
try (
4347
var firstWorkspace = Workspaces.newWorkspace();
4448
var secondWorkspace = Workspaces.newWorkspace()
4549
) {
46-
firstWorkspace
47-
.createSourcePathPackage()
48-
.createDirectory("org", "example", "first")
49-
.copyContentsFrom(resourcesDirectory().resolve("first"));
50-
51-
var firstCompilation = compiler.compile(firstWorkspace);
52-
assertThatCompilation(firstCompilation)
53-
.isSuccessfulWithoutWarnings()
54-
.classOutput()
55-
.packages()
56-
.fileExists("org", "example", "first", "Adder.class")
57-
.isRegularFile()
58-
.isNotEmptyFile();
59-
60-
secondWorkspace.addClassPathPackage(firstWorkspace.getClassOutputPackages().get(0).getPath());
61-
secondWorkspace.createSourcePathPackage()
62-
.createDirectory("org", "example", "second")
63-
.copyContentsFrom(resourcesDirectory().resolve("second"));
64-
65-
var secondCompilation = compiler.compile(secondWorkspace);
66-
assertThatCompilation(secondCompilation)
67-
.isSuccessfulWithoutWarnings()
68-
.classOutput()
69-
.packages()
70-
.fileExists("org", "example", "second", "Main.class")
71-
.isRegularFile()
72-
.isNotEmptyFile();
50+
runTestForClassPathPackage(compiler, firstWorkspace, secondWorkspace);
7351
}
7452
}
7553

7654
@DisplayName(
7755
"I can compile sources to classes and provide them in the classpath to a second "
78-
+ "compilation within a JAR"
56+
+ "compilation within a JAR for Javac"
7957
)
8058
@JavacCompilerTest
81-
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationWithinJar(
59+
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationWithinJarForJavac(
8260
JctCompiler<?, ?> compiler
8361
) {
8462
try (
8563
var firstWorkspace = Workspaces.newWorkspace();
8664
var secondWorkspace = Workspaces.newWorkspace()
8765
) {
88-
firstWorkspace
89-
.createSourcePathPackage()
90-
.copyContentsFrom(resourcesDirectory().resolve("first"));
91-
92-
var firstCompilation = compiler.compile(firstWorkspace);
93-
assertThatCompilation(firstCompilation)
94-
.isSuccessfulWithoutWarnings()
95-
.classOutput()
96-
.packages()
97-
.fileExists("org", "example", "first", "Adder.class")
98-
.isRegularFile()
99-
.isNotEmptyFile();
100-
101-
firstWorkspace
102-
.createClassOutputPackage()
103-
.createFile("first.jar")
104-
.asJarFrom(firstWorkspace.getClassOutputPackages().get(0));
105-
106-
var firstJar = firstWorkspace.getClassOutputPackages().get(1).getPath().resolve("first.jar");
107-
secondWorkspace.addClassPathPackage(firstJar);
108-
secondWorkspace
109-
.createSourcePathPackage()
110-
.copyContentsFrom(resourcesDirectory().resolve("second"));
111-
112-
var secondCompilation = compiler.compile(secondWorkspace);
113-
assertThatCompilation(secondCompilation)
114-
.isSuccessfulWithoutWarnings()
115-
.classOutput()
116-
.packages()
117-
.fileExists("org", "example", "second", "Main.class")
118-
.isRegularFile()
119-
.isNotEmptyFile();
66+
runTestForClassPathJar(compiler, firstWorkspace, secondWorkspace);
12067
}
12168
}
69+
70+
@DisplayName(
71+
"I can compile sources to classes and provide them in the classpath to a second compilation"
72+
+ "for ECJ"
73+
)
74+
@EcjCompilerTest
75+
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationForEcj(
76+
JctCompiler<?, ?> compiler
77+
) {
78+
try (
79+
var firstWorkspace = Workspaces.newWorkspace(PathStrategy.TEMP_DIRECTORIES);
80+
var secondWorkspace = Workspaces.newWorkspace(PathStrategy.TEMP_DIRECTORIES)
81+
) {
82+
runTestForClassPathPackage(compiler, firstWorkspace, secondWorkspace);
83+
}
84+
}
85+
86+
@DisplayName(
87+
"I can compile sources to classes and provide them in the classpath to a second "
88+
+ "compilation within a JAR for ECJ"
89+
)
90+
@EcjCompilerTest
91+
void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationWithinJarForEcj(
92+
JctCompiler<?, ?> compiler
93+
) {
94+
try (
95+
var firstWorkspace = Workspaces.newWorkspace(PathStrategy.TEMP_DIRECTORIES);
96+
var secondWorkspace = Workspaces.newWorkspace(PathStrategy.TEMP_DIRECTORIES)
97+
) {
98+
runTestForClassPathJar(compiler, firstWorkspace, secondWorkspace);
99+
}
100+
}
101+
102+
private void runTestForClassPathPackage(
103+
JctCompiler<?, ?> compiler,
104+
Workspace firstWorkspace,
105+
Workspace secondWorkspace
106+
) {
107+
firstWorkspace
108+
.createSourcePathPackage()
109+
.createDirectory("org", "example", "first")
110+
.copyContentsFrom(resourcesDirectory().resolve("first"));
111+
112+
var firstCompilation = compiler.compile(firstWorkspace);
113+
assertThatCompilation(firstCompilation)
114+
.isSuccessfulWithoutWarnings()
115+
.classOutput()
116+
.packages()
117+
.fileExists("org", "example", "first", "Adder.class")
118+
.isRegularFile()
119+
.isNotEmptyFile();
120+
121+
secondWorkspace.addClassPathPackage(firstWorkspace.getClassOutputPackages().get(0).getPath());
122+
secondWorkspace.createSourcePathPackage()
123+
.createDirectory("org", "example", "second")
124+
.copyContentsFrom(resourcesDirectory().resolve("second"));
125+
126+
var secondCompilation = compiler.compile(secondWorkspace);
127+
assertThatCompilation(secondCompilation)
128+
.isSuccessfulWithoutWarnings()
129+
.classOutput()
130+
.packages()
131+
.fileExists("org", "example", "second", "Main.class")
132+
.isRegularFile()
133+
.isNotEmptyFile();
134+
}
135+
136+
private void runTestForClassPathJar(
137+
JctCompiler<?, ?> compiler,
138+
Workspace firstWorkspace,
139+
Workspace secondWorkspace
140+
) {
141+
firstWorkspace
142+
.createSourcePathPackage()
143+
.copyContentsFrom(resourcesDirectory().resolve("first"));
144+
145+
var firstCompilation = compiler.compile(firstWorkspace);
146+
assertThatCompilation(firstCompilation)
147+
.isSuccessfulWithoutWarnings()
148+
.classOutput()
149+
.packages()
150+
.fileExists("org", "example", "first", "Adder.class")
151+
.isRegularFile()
152+
.isNotEmptyFile();
153+
154+
firstWorkspace
155+
.createClassOutputPackage()
156+
.createFile("first.jar")
157+
.asJarFrom(firstWorkspace.getClassOutputPackages().get(0));
158+
159+
var firstJar = firstWorkspace.getClassOutputPackages().get(1).getPath().resolve("first.jar");
160+
secondWorkspace.addClassPathPackage(firstJar);
161+
secondWorkspace
162+
.createSourcePathPackage()
163+
.copyContentsFrom(resourcesDirectory().resolve("second"));
164+
165+
var secondCompilation = compiler.compile(secondWorkspace);
166+
assertThatCompilation(secondCompilation)
167+
.isSuccessfulWithoutWarnings()
168+
.classOutput()
169+
.packages()
170+
.fileExists("org", "example", "second", "Main.class")
171+
.isRegularFile()
172+
.isNotEmptyFile();
173+
}
122174
}

0 commit comments

Comments
 (0)