18
18
import static io .github .ascopes .jct .assertions .JctAssertions .assertThatCompilation ;
19
19
20
20
import io .github .ascopes .jct .compilers .JctCompiler ;
21
+ import io .github .ascopes .jct .junit .EcjCompilerTest ;
21
22
import io .github .ascopes .jct .junit .JavacCompilerTest ;
22
23
import io .github .ascopes .jct .tests .integration .AbstractIntegrationTest ;
24
+ import io .github .ascopes .jct .workspaces .PathStrategy ;
25
+ import io .github .ascopes .jct .workspaces .Workspace ;
23
26
import io .github .ascopes .jct .workspaces .Workspaces ;
24
27
import org .junit .jupiter .api .DisplayName ;
25
28
@@ -34,89 +37,138 @@ class MultiTieredCompilationIntegrationTest extends AbstractIntegrationTest {
34
37
35
38
@ DisplayName (
36
39
"I can compile sources to classes and provide them in the classpath to a second compilation"
40
+ + "for Javac"
37
41
)
38
42
@ JavacCompilerTest
39
- void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilation (
43
+ void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationForJavac (
40
44
JctCompiler <?, ?> compiler
41
45
) {
42
46
try (
43
47
var firstWorkspace = Workspaces .newWorkspace ();
44
48
var secondWorkspace = Workspaces .newWorkspace ()
45
49
) {
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 );
73
51
}
74
52
}
75
53
76
54
@ DisplayName (
77
55
"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 "
79
57
)
80
58
@ JavacCompilerTest
81
- void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationWithinJar (
59
+ void compileSourcesToClassesAndProvideThemInClassPathToSecondCompilationWithinJarForJavac (
82
60
JctCompiler <?, ?> compiler
83
61
) {
84
62
try (
85
63
var firstWorkspace = Workspaces .newWorkspace ();
86
64
var secondWorkspace = Workspaces .newWorkspace ()
87
65
) {
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 );
120
67
}
121
68
}
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
+ }
122
174
}
0 commit comments