26 * @summary tests for module graph resolution issues |
26 * @summary tests for module graph resolution issues |
27 * @library /tools/lib |
27 * @library /tools/lib |
28 * @modules |
28 * @modules |
29 * jdk.compiler/com.sun.tools.javac.api |
29 * jdk.compiler/com.sun.tools.javac.api |
30 * jdk.compiler/com.sun.tools.javac.main |
30 * jdk.compiler/com.sun.tools.javac.main |
31 * jdk.jdeps/com.sun.tools.javap |
31 * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase |
32 * @build ToolBox ModuleTestBase |
|
33 * @run main GraphsTest |
32 * @run main GraphsTest |
34 */ |
33 */ |
35 |
34 |
36 import java.io.File; |
35 import java.io.File; |
37 import java.nio.file.Files; |
36 import java.nio.file.Files; |
38 import java.nio.file.Path; |
37 import java.nio.file.Path; |
39 import java.util.Arrays; |
38 import java.util.Arrays; |
40 import java.util.List; |
39 import java.util.List; |
41 import java.util.regex.Pattern; |
40 import java.util.regex.Pattern; |
|
41 |
|
42 import toolbox.JarTask; |
|
43 import toolbox.JavacTask; |
|
44 import toolbox.Task; |
|
45 import toolbox.ToolBox; |
42 |
46 |
43 public class GraphsTest extends ModuleTestBase { |
47 public class GraphsTest extends ModuleTestBase { |
44 |
48 |
45 public static void main(String... args) throws Exception { |
49 public static void main(String... args) throws Exception { |
46 GraphsTest t = new GraphsTest(); |
50 GraphsTest t = new GraphsTest(); |
107 .requires("N", modules) |
111 .requires("N", modules) |
108 .requires("L", modules) |
112 .requires("L", modules) |
109 .classes("package p; public class Positive { openO.O o; openN.N n; openL.L l; }") |
113 .classes("package p; public class Positive { openO.O o; openN.N n; openL.L l; }") |
110 .write(base.resolve("positiveSrc")); |
114 .write(base.resolve("positiveSrc")); |
111 |
115 |
112 tb.new JavacTask() |
116 new JavacTask(tb) |
113 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) |
117 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) |
114 .outdir(Files.createDirectories(base.resolve("positive"))) |
118 .outdir(Files.createDirectories(base.resolve("positive"))) |
115 .files(findJavaFiles(positiveSrc)) |
119 .files(findJavaFiles(positiveSrc)) |
116 .run() |
120 .run() |
117 .writeAll(); |
121 .writeAll(); |
118 //negative case |
122 //negative case |
119 Path negativeSrc = m.classes("package p; public class Negative { closedO.O o; closedN.N n; closedL.L l; }") |
123 Path negativeSrc = m.classes("package p; public class Negative { closedO.O o; closedN.N n; closedL.L l; }") |
120 .write(base.resolve("negativeSrc")); |
124 .write(base.resolve("negativeSrc")); |
121 List<String> log = tb.new JavacTask() |
125 List<String> log = new JavacTask(tb) |
122 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) |
126 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) |
123 .outdir(Files.createDirectories(base.resolve("negative"))) |
127 .outdir(Files.createDirectories(base.resolve("negative"))) |
124 .files(findJavaFiles(negativeSrc)) |
128 .files(findJavaFiles(negativeSrc)) |
125 .run(ToolBox.Expect.FAIL) |
129 .run(Task.Expect.FAIL) |
126 .writeAll() |
130 .writeAll() |
127 .getOutputLines(ToolBox.OutputKind.DIRECT); |
131 .getOutputLines(Task.OutputKind.DIRECT); |
128 |
132 |
129 List<String> expected = Arrays.asList( |
133 List<String> expected = Arrays.asList( |
130 "Negative.java:1:43: compiler.err.doesnt.exist: closedO", |
134 "Negative.java:1:43: compiler.err.doesnt.exist: closedO", |
131 "Negative.java:1:56: compiler.err.doesnt.exist: closedN", |
135 "Negative.java:1:56: compiler.err.doesnt.exist: closedN", |
132 "Negative.java:1:69: compiler.err.doesnt.exist: closedL"); |
136 "Negative.java:1:69: compiler.err.doesnt.exist: closedL"); |
133 if (!log.containsAll(expected)) { |
137 if (!log.containsAll(expected)) { |
134 throw new Exception("Expected output not found"); |
138 throw new Exception("Expected output not found"); |
135 } |
139 } |
136 //multi module mode |
140 //multi module mode |
137 m.write(modules); |
141 m.write(modules); |
138 List<String> out = tb.new JavacTask() |
142 List<String> out = new JavacTask(tb) |
139 .options("-XDrawDiagnostics", |
143 .options("-XDrawDiagnostics", |
140 "-modulesourcepath", modules + "/*/src", |
144 "-modulesourcepath", modules + "/*/src", |
141 "-mp", jarModules.toString() |
145 "-mp", jarModules.toString() |
142 ) |
146 ) |
143 .outdir(Files.createDirectories(base.resolve("negative"))) |
147 .outdir(Files.createDirectories(base.resolve("negative"))) |
144 .files(findJavaFiles(modules)) |
148 .files(findJavaFiles(modules)) |
145 .run(ToolBox.Expect.FAIL) |
149 .run(Task.Expect.FAIL) |
146 .writeAll() |
150 .writeAll() |
147 .getOutputLines(ToolBox.OutputKind.DIRECT); |
151 .getOutputLines(Task.OutputKind.DIRECT); |
148 expected = Arrays.asList( |
152 expected = Arrays.asList( |
149 "Negative.java:1:43: compiler.err.not.def.access.package.cant.access: closedO.O, closedO", |
153 "Negative.java:1:43: compiler.err.not.def.access.package.cant.access: closedO.O, closedO", |
150 "Negative.java:1:56: compiler.err.not.def.access.package.cant.access: closedN.N, closedN", |
154 "Negative.java:1:56: compiler.err.not.def.access.package.cant.access: closedN.N, closedN", |
151 "Negative.java:1:69: compiler.err.not.def.access.package.cant.access: closedL.L, closedL"); |
155 "Negative.java:1:69: compiler.err.not.def.access.package.cant.access: closedL.L, closedL"); |
152 if (!out.containsAll(expected)) { |
156 if (!out.containsAll(expected)) { |
183 .write(modules); |
187 .write(modules); |
184 new ModuleBuilder("L") |
188 new ModuleBuilder("L") |
185 .requires("M") |
189 .requires("M") |
186 .classes("package p; public class A { A(pack.Clazz cl){} } ") |
190 .classes("package p; public class A { A(pack.Clazz cl){} } ") |
187 .write(modules); |
191 .write(modules); |
188 String log = tb.new JavacTask() |
192 String log = new JavacTask(tb) |
189 .options("-XDrawDiagnostics", |
193 .options("-XDrawDiagnostics", |
190 "-modulesourcepath", modules + "/*/src") |
194 "-modulesourcepath", modules + "/*/src") |
191 .outdir(Files.createDirectories(base.resolve("negative"))) |
195 .outdir(Files.createDirectories(base.resolve("negative"))) |
192 .files(findJavaFiles(modules)) |
196 .files(findJavaFiles(modules)) |
193 .run(ToolBox.Expect.FAIL) |
197 .run(Task.Expect.FAIL) |
194 .writeAll() |
198 .writeAll() |
195 .getOutput(ToolBox.OutputKind.DIRECT); |
199 .getOutput(Task.OutputKind.DIRECT); |
196 |
200 |
197 String expected = "A.java:1:35: compiler.err.not.def.access.package.cant.access: pack.Clazz, pack"; |
201 String expected = "A.java:1:35: compiler.err.not.def.access.package.cant.access: pack.Clazz, pack"; |
198 if (!log.contains(expected)) { |
202 if (!log.contains(expected)) { |
199 throw new Exception("Expected output not found"); |
203 throw new Exception("Expected output not found"); |
200 } |
204 } |