36 import java.nio.file.Path; |
36 import java.nio.file.Path; |
37 |
37 |
38 import toolbox.JavacTask; |
38 import toolbox.JavacTask; |
39 import toolbox.ModuleBuilder; |
39 import toolbox.ModuleBuilder; |
40 import toolbox.Task; |
40 import toolbox.Task; |
41 import toolbox.ToolBox; |
|
42 |
41 |
43 public class UpgradeModulePathTest extends ModuleTestBase { |
42 public class UpgradeModulePathTest extends ModuleTestBase { |
44 |
43 |
45 public static void main(String... args) throws Exception { |
44 public static void main(String... args) throws Exception { |
46 UpgradeModulePathTest t = new UpgradeModulePathTest(); |
45 UpgradeModulePathTest t = new UpgradeModulePathTest(); |
48 } |
47 } |
49 |
48 |
50 @Test |
49 @Test |
51 public void simpleUsage(Path base) throws Exception { |
50 public void simpleUsage(Path base) throws Exception { |
52 Path modules = base.resolve("modules"); |
51 Path modules = base.resolve("modules"); |
53 new ModuleBuilder(tb, "m1") |
52 new ModuleBuilder(tb, "m1x") |
54 .exports("pkg1") |
53 .exports("pkg1") |
55 .classes("package pkg1; public class E { }") |
54 .classes("package pkg1; public class E { }") |
56 .build(modules); |
55 .build(modules); |
57 |
56 |
58 final Path upgradeModules = base.resolve("upgradeModules"); |
57 final Path upgradeModules = base.resolve("upgradeModules"); |
59 new ModuleBuilder(tb, "m1") |
58 new ModuleBuilder(tb, "m1x") |
60 .exports("pkg2") |
59 .exports("pkg2") |
61 .classes("package pkg2; public class E { }") |
60 .classes("package pkg2; public class E { }") |
62 .build(upgradeModules); |
61 .build(upgradeModules); |
63 |
62 |
64 Path src = base.resolve("src"); |
63 Path src = base.resolve("src"); |
65 tb.writeJavaFiles(src, "module m2 { requires m1; }", |
64 tb.writeJavaFiles(src, "module m2x { requires m1x; }", |
66 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
65 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
67 |
66 |
68 new JavacTask(tb, Task.Mode.CMDLINE) |
67 new JavacTask(tb, Task.Mode.CMDLINE) |
69 .options("--module-path", modules.toString(), |
68 .options("--module-path", modules.toString(), |
70 "--upgrade-module-path", upgradeModules.toString()) |
69 "--upgrade-module-path", upgradeModules.toString()) |
74 } |
73 } |
75 |
74 |
76 @Test |
75 @Test |
77 public void onlyUpgradeModulePath(Path base) throws Exception { |
76 public void onlyUpgradeModulePath(Path base) throws Exception { |
78 final Path module = base.resolve("modules"); |
77 final Path module = base.resolve("modules"); |
79 new ModuleBuilder(tb, "m1") |
78 new ModuleBuilder(tb, "m1x") |
80 .exports("pkg1") |
79 .exports("pkg1") |
81 .classes("package pkg1; public class E { }") |
80 .classes("package pkg1; public class E { }") |
82 .build(module); |
81 .build(module); |
83 |
82 |
84 final Path upgradeModule = base.resolve("upgradeModule"); |
83 final Path upgradeModule = base.resolve("upgradeModule"); |
85 new ModuleBuilder(tb, "m1") |
84 new ModuleBuilder(tb, "m1x") |
86 .exports("pkg2") |
85 .exports("pkg2") |
87 .classes("package pkg2; public class E { }") |
86 .classes("package pkg2; public class E { }") |
88 .build(upgradeModule); |
87 .build(upgradeModule); |
89 |
88 |
90 Path src = base.resolve("src"); |
89 Path src = base.resolve("src"); |
91 tb.writeJavaFiles(src, "module m2 { requires m1; }", |
90 tb.writeJavaFiles(src, "module m2x { requires m1x; }", |
92 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
91 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
93 |
92 |
94 new JavacTask(tb, Task.Mode.CMDLINE) |
93 new JavacTask(tb, Task.Mode.CMDLINE) |
95 .options("--upgrade-module-path", upgradeModule + File.pathSeparator + module) |
94 .options("--upgrade-module-path", upgradeModule + File.pathSeparator + module) |
96 .files(findJavaFiles(src)) |
95 .files(findJavaFiles(src)) |
99 } |
98 } |
100 |
99 |
101 @Test |
100 @Test |
102 public void withModuleSourcePath(Path base) throws Exception { |
101 public void withModuleSourcePath(Path base) throws Exception { |
103 final Path module = base.resolve("modules"); |
102 final Path module = base.resolve("modules"); |
104 new ModuleBuilder(tb, "m1") |
103 new ModuleBuilder(tb, "m1x") |
105 .exports("pkg1") |
104 .exports("pkg1") |
106 .classes("package pkg1; public class E { }") |
105 .classes("package pkg1; public class E { }") |
107 .build(module); |
106 .build(module); |
108 |
107 |
109 final Path upgradeModule = base.resolve("upgradeModule"); |
108 final Path upgradeModule = base.resolve("upgradeModule"); |
110 new ModuleBuilder(tb, "m1") |
109 new ModuleBuilder(tb, "m1x") |
111 .exports("pkg2") |
110 .exports("pkg2") |
112 .classes("package pkg2; public class E { }") |
111 .classes("package pkg2; public class E { }") |
113 .build(upgradeModule); |
112 .build(upgradeModule); |
114 |
113 |
115 final Path s = base.resolve("source"); |
114 final Path s = base.resolve("source"); |
116 tb.writeJavaFiles(s.resolve("m3"), "module m3 { }"); |
115 tb.writeJavaFiles(s.resolve("m3x"), "module m3x { }"); |
117 |
116 |
118 final Path upgradeModule3 = base.resolve("upgradeModule"); |
117 final Path upgradeModule3 = base.resolve("upgradeModule"); |
119 new ModuleBuilder(tb, "m3") |
118 new ModuleBuilder(tb, "m3x") |
120 .exports("pkg3") |
119 .exports("pkg3") |
121 .classes("package pkg3; public class E { }") |
120 .classes("package pkg3; public class E { }") |
122 .build(upgradeModule); |
121 .build(upgradeModule); |
123 |
122 |
124 Path src = base.resolve("src"); |
123 Path src = base.resolve("src"); |
125 tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; requires m3; }", |
124 tb.writeJavaFiles(src.resolve("m2x"), "module m2x { requires m1x; requires m3x; }", |
126 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
125 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
127 |
126 |
128 new JavacTask(tb, Task.Mode.CMDLINE) |
127 new JavacTask(tb, Task.Mode.CMDLINE) |
129 .options("--module-path", module.toString(), |
128 .options("--module-path", module.toString(), |
130 "--module-source-path", src + File.pathSeparator + s, |
129 "--module-source-path", src + File.pathSeparator + s, |
136 } |
135 } |
137 |
136 |
138 @Test |
137 @Test |
139 public void sameUpgradeAndModulePath(Path base) throws Exception { |
138 public void sameUpgradeAndModulePath(Path base) throws Exception { |
140 final Path module = base.resolve("modules"); |
139 final Path module = base.resolve("modules"); |
141 new ModuleBuilder(tb, "m1") |
140 new ModuleBuilder(tb, "m1x") |
142 .exports("pkg1") |
141 .exports("pkg1") |
143 .classes("package pkg1; public class E { }") |
142 .classes("package pkg1; public class E { }") |
144 .build(module); |
143 .build(module); |
145 |
144 |
146 final Path upgradeModule = base.resolve("upgradeModule"); |
145 final Path upgradeModule = base.resolve("upgradeModule"); |
147 new ModuleBuilder(tb, "m1") |
146 new ModuleBuilder(tb, "m1x") |
148 .exports("pkg2") |
147 .exports("pkg2") |
149 .classes("package pkg2; public class E { }") |
148 .classes("package pkg2; public class E { }") |
150 .build(upgradeModule); |
149 .build(upgradeModule); |
151 |
150 |
152 Path src = base.resolve("src"); |
151 Path src = base.resolve("src"); |
153 tb.writeJavaFiles(src, "module m2 { requires m1; }", |
152 tb.writeJavaFiles(src, "module m2x { requires m1x; }", |
154 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
153 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
155 |
154 |
156 new JavacTask(tb, Task.Mode.CMDLINE) |
155 new JavacTask(tb, Task.Mode.CMDLINE) |
157 .options("--module-path", upgradeModule + File.pathSeparator + module, |
156 .options("--module-path", upgradeModule + File.pathSeparator + module, |
158 "--upgrade-module-path", upgradeModule.toString()) |
157 "--upgrade-module-path", upgradeModule.toString()) |
162 } |
161 } |
163 |
162 |
164 @Test |
163 @Test |
165 public void dummyFileInUpgradeModulePath(Path base) throws Exception { |
164 public void dummyFileInUpgradeModulePath(Path base) throws Exception { |
166 final Path module = base.resolve("modules"); |
165 final Path module = base.resolve("modules"); |
167 new ModuleBuilder(tb, "m1") |
166 new ModuleBuilder(tb, "m1x") |
168 .exports("pkg1") |
167 .exports("pkg1") |
169 .classes("package pkg1; public class E { }") |
168 .classes("package pkg1; public class E { }") |
170 .build(module); |
169 .build(module); |
171 |
170 |
172 Path dummy = base.resolve("dummy.txt"); |
171 Path dummy = base.resolve("dummy.txt"); |
173 tb.writeFile(dummy, ""); |
172 tb.writeFile(dummy, ""); |
174 |
173 |
175 Path src = base.resolve("src"); |
174 Path src = base.resolve("src"); |
176 tb.writeJavaFiles(src, "module m2 { requires m1; }", |
175 tb.writeJavaFiles(src, "module m2x { requires m1x; }", |
177 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
176 "package p; class A { void main() { pkg2.E.class.getName(); } }"); |
178 |
177 |
179 String output = new JavacTask(tb, Task.Mode.CMDLINE) |
178 String output = new JavacTask(tb, Task.Mode.CMDLINE) |
180 .options("-XDrawDiagnostics", |
179 .options("-XDrawDiagnostics", |
181 "--module-path", module.toString(), |
180 "--module-path", module.toString(), |
190 } |
189 } |
191 |
190 |
192 @Test |
191 @Test |
193 public void severalUpgradeModules(Path base) throws Exception { |
192 public void severalUpgradeModules(Path base) throws Exception { |
194 final Path module = base.resolve("modules"); |
193 final Path module = base.resolve("modules"); |
195 new ModuleBuilder(tb, "m1") |
194 new ModuleBuilder(tb, "m1x") |
196 .exports("pkg1") |
195 .exports("pkg1") |
197 .classes("package pkg1; public class A { }") |
196 .classes("package pkg1; public class A { }") |
198 .build(module); |
197 .build(module); |
199 |
198 |
200 new ModuleBuilder(tb, "m2") |
199 new ModuleBuilder(tb, "m2x") |
201 .exports("pkg2") |
200 .exports("pkg2") |
202 .classes("package pkg2; public class B { }") |
201 .classes("package pkg2; public class B { }") |
203 .build(module); |
202 .build(module); |
204 |
203 |
205 Path upgradeModule = base.resolve("upgradeModule"); |
204 Path upgradeModule = base.resolve("upgradeModule"); |
206 new ModuleBuilder(tb, "m2") |
205 new ModuleBuilder(tb, "m2x") |
207 .exports("pkg2") |
206 .exports("pkg2") |
208 .classes("package pkg2; public class BC { }") |
207 .classes("package pkg2; public class BC { }") |
209 .build(upgradeModule); |
208 .build(upgradeModule); |
210 new ModuleBuilder(tb, "m3") |
209 new ModuleBuilder(tb, "m3x") |
211 .exports("pkg3") |
210 .exports("pkg3") |
212 .classes("package pkg3; public class DC { }") |
211 .classes("package pkg3; public class DC { }") |
213 .build(upgradeModule); |
212 .build(upgradeModule); |
214 |
213 |
215 Path src = base.resolve("src"); |
214 Path src = base.resolve("src"); |
216 tb.writeJavaFiles(src, "module m4 { requires m1; requires m2; requires m3; }", |
215 tb.writeJavaFiles(src, "module m4x { requires m1x; requires m2x; requires m3x; }", |
217 "package p; class A { void main() { pkg1.A.class.getName(); pkg2.BC.class.getName(); pkg3.DC.class.getName(); } }"); |
216 "package p; class A { void main() { pkg1.A.class.getName(); pkg2.BC.class.getName(); pkg3.DC.class.getName(); } }"); |
218 |
217 |
219 new JavacTask(tb, Task.Mode.CMDLINE) |
218 new JavacTask(tb, Task.Mode.CMDLINE) |
220 .options("--module-path", module.toString(), |
219 .options("--module-path", module.toString(), |
221 "--upgrade-module-path", upgradeModule.toString()) |
220 "--upgrade-module-path", upgradeModule.toString()) |
222 .files(findJavaFiles(src)) |
221 .files(findJavaFiles(src)) |
223 .run() |
222 .run() |
224 .writeAll(); |
223 .writeAll(); |
225 |
224 |
226 Path src2 = base.resolve("src2"); |
225 Path src2 = base.resolve("src2"); |
227 tb.writeJavaFiles(src2, "module m4 { requires m1; }", |
226 tb.writeJavaFiles(src2, "module m4x { requires m1x; }", |
228 "package p; class A { void main() { pkg2.B.class.getName(); } }"); |
227 "package p; class A { void main() { pkg2.B.class.getName(); } }"); |
229 |
228 |
230 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
229 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
231 .options("-XDrawDiagnostics", |
230 .options("-XDrawDiagnostics", |
232 "--module-path", module.toString(), |
231 "--module-path", module.toString(), |
241 } |
240 } |
242 |
241 |
243 @Test |
242 @Test |
244 public void severalUpgradeModulePathsLastWin(Path base) throws Exception { |
243 public void severalUpgradeModulePathsLastWin(Path base) throws Exception { |
245 final Path module = base.resolve("modules"); |
244 final Path module = base.resolve("modules"); |
246 new ModuleBuilder(tb, "m1") |
245 new ModuleBuilder(tb, "m1x") |
247 .exports("pkg1") |
246 .exports("pkg1") |
248 .classes("package pkg1; public class E { }") |
247 .classes("package pkg1; public class E { }") |
249 .build(module); |
248 .build(module); |
250 |
249 |
251 final Path upgradeModule1 = base.resolve("upgradeModule1"); |
250 final Path upgradeModule1 = base.resolve("upgradeModule1"); |
252 new ModuleBuilder(tb, "m1") |
251 new ModuleBuilder(tb, "m1x") |
253 .exports("pkg2") |
252 .exports("pkg2") |
254 .classes("package pkg2; public class EC1 { }") |
253 .classes("package pkg2; public class EC1 { }") |
255 .build(upgradeModule1); |
254 .build(upgradeModule1); |
256 |
255 |
257 final Path upgradeModule2 = base.resolve("upgradeModule2"); |
256 final Path upgradeModule2 = base.resolve("upgradeModule2"); |
258 new ModuleBuilder(tb, "m1") |
257 new ModuleBuilder(tb, "m1x") |
259 .exports("pkg2") |
258 .exports("pkg2") |
260 .classes("package pkg2; public class EC2 { }") |
259 .classes("package pkg2; public class EC2 { }") |
261 .build(upgradeModule2); |
260 .build(upgradeModule2); |
262 |
261 |
263 Path src = base.resolve("src"); |
262 Path src = base.resolve("src"); |
264 tb.writeJavaFiles(src, "module m2 { requires m1; }", |
263 tb.writeJavaFiles(src, "module m2x { requires m1x; }", |
265 "package p; class A { void main() { pkg2.EC2.class.getName(); } }"); |
264 "package p; class A { void main() { pkg2.EC2.class.getName(); } }"); |
266 |
265 |
267 new JavacTask(tb, Task.Mode.CMDLINE) |
266 new JavacTask(tb, Task.Mode.CMDLINE) |
268 .options("--module-path", module.toString(), |
267 .options("--module-path", module.toString(), |
269 "--upgrade-module-path", upgradeModule1.toString(), |
268 "--upgrade-module-path", upgradeModule1.toString(), |
271 .files(findJavaFiles(src)) |
270 .files(findJavaFiles(src)) |
272 .run() |
271 .run() |
273 .writeAll(); |
272 .writeAll(); |
274 |
273 |
275 Path src2 = base.resolve("src2"); |
274 Path src2 = base.resolve("src2"); |
276 tb.writeJavaFiles(src2, "module m2 { requires m1; }", |
275 tb.writeJavaFiles(src2, "module m2x { requires m1x; }", |
277 "package p; class A { void main() { pkg2.EC1.class.getName(); } }"); |
276 "package p; class A { void main() { pkg2.EC1.class.getName(); } }"); |
278 |
277 |
279 final String log = new JavacTask(tb, Task.Mode.CMDLINE) |
278 final String log = new JavacTask(tb, Task.Mode.CMDLINE) |
280 .options("-XDrawDiagnostics", |
279 .options("-XDrawDiagnostics", |
281 "--module-path", module.toString(), |
280 "--module-path", module.toString(), |