100 .requiresPublic("O", modules, jarModules) 101 .exports("openN") 102 .classes("package openN; public class N { }") 103 .classes("package closedN; public class N { }") 104 .build(modSrc, modules); 105 new ModuleBuilder(tb, "L") 106 .requiresPublic("O", modules, jarModules) 107 .exports("openL") 108 .classes("package openL; public class L { }") 109 .classes("package closedL; public class L { }") 110 .build(modSrc, modules); 111 ModuleBuilder m = new ModuleBuilder(tb, "M"); 112 //positive case 113 Path positiveSrc = m 114 .requires("N", modules) 115 .requires("L", modules) 116 .classes("package p; public class Positive { openO.O o; openN.N n; openL.L l; }") 117 .write(base.resolve("positiveSrc")); 118 119 new JavacTask(tb) 120 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) 121 .outdir(Files.createDirectories(base.resolve("positive"))) 122 .files(findJavaFiles(positiveSrc)) 123 .run() 124 .writeAll(); 125 //negative case 126 Path negativeSrc = m.classes("package p; public class Negative { closedO.O o; closedN.N n; closedL.L l; }") 127 .write(base.resolve("negativeSrc")); 128 List<String> log = new JavacTask(tb) 129 .options("-XDrawDiagnostics", "-mp", modules + File.pathSeparator + jarModules) 130 .outdir(Files.createDirectories(base.resolve("negative"))) 131 .files(findJavaFiles(negativeSrc)) 132 .run(Task.Expect.FAIL) 133 .writeAll() 134 .getOutputLines(Task.OutputKind.DIRECT); 135 136 List<String> expected = Arrays.asList( 137 "Negative.java:1:43: compiler.err.doesnt.exist: closedO", 138 "Negative.java:1:56: compiler.err.doesnt.exist: closedN", 139 "Negative.java:1:69: compiler.err.doesnt.exist: closedL"); 140 if (!log.containsAll(expected)) { 141 throw new Exception("Expected output not found"); 142 } 143 //multi module mode 144 m.write(modSrc); 145 List<String> out = new JavacTask(tb) 146 .options("-XDrawDiagnostics", 147 "-modulesourcepath", modSrc.toString(), 148 "-mp", jarModules.toString() 149 ) 150 .outdir(Files.createDirectories(base.resolve("negative"))) 151 .files(findJavaFiles(modSrc)) 152 .run(Task.Expect.FAIL) 153 .writeAll() 154 .getOutputLines(Task.OutputKind.DIRECT); 155 expected = Arrays.asList( 156 "Negative.java:1:43: compiler.err.not.def.access.package.cant.access: closedO.O, closedO", 157 "Negative.java:1:56: compiler.err.not.def.access.package.cant.access: closedN.N, closedN", 158 "Negative.java:1:69: compiler.err.not.def.access.package.cant.access: closedL.L, closedL"); 159 if (!out.containsAll(expected)) { 160 throw new Exception("Expected output not found"); 161 } 162 //checks if the output does not contain messages about exported packages. 163 Pattern regex = Pattern.compile("compiler\\.err.*(openO\\.O|openN\\.N|openL\\.L)"); 164 for (String s : out) { 165 if (regex.matcher(s).find()) { 166 throw new Exception("Unexpected output: " + s); 167 } 168 } | 100 .requiresPublic("O", modules, jarModules) 101 .exports("openN") 102 .classes("package openN; public class N { }") 103 .classes("package closedN; public class N { }") 104 .build(modSrc, modules); 105 new ModuleBuilder(tb, "L") 106 .requiresPublic("O", modules, jarModules) 107 .exports("openL") 108 .classes("package openL; public class L { }") 109 .classes("package closedL; public class L { }") 110 .build(modSrc, modules); 111 ModuleBuilder m = new ModuleBuilder(tb, "M"); 112 //positive case 113 Path positiveSrc = m 114 .requires("N", modules) 115 .requires("L", modules) 116 .classes("package p; public class Positive { openO.O o; openN.N n; openL.L l; }") 117 .write(base.resolve("positiveSrc")); 118 119 new JavacTask(tb) 120 .options("-XDrawDiagnostics", "-p", modules + File.pathSeparator + jarModules) 121 .outdir(Files.createDirectories(base.resolve("positive"))) 122 .files(findJavaFiles(positiveSrc)) 123 .run() 124 .writeAll(); 125 //negative case 126 Path negativeSrc = m.classes("package p; public class Negative { closedO.O o; closedN.N n; closedL.L l; }") 127 .write(base.resolve("negativeSrc")); 128 List<String> log = new JavacTask(tb) 129 .options("-XDrawDiagnostics", "-p", modules + File.pathSeparator + jarModules) 130 .outdir(Files.createDirectories(base.resolve("negative"))) 131 .files(findJavaFiles(negativeSrc)) 132 .run(Task.Expect.FAIL) 133 .writeAll() 134 .getOutputLines(Task.OutputKind.DIRECT); 135 136 List<String> expected = Arrays.asList( 137 "Negative.java:1:43: compiler.err.doesnt.exist: closedO", 138 "Negative.java:1:56: compiler.err.doesnt.exist: closedN", 139 "Negative.java:1:69: compiler.err.doesnt.exist: closedL"); 140 if (!log.containsAll(expected)) { 141 throw new Exception("Expected output not found"); 142 } 143 //multi module mode 144 m.write(modSrc); 145 List<String> out = new JavacTask(tb) 146 .options("-XDrawDiagnostics", 147 "--module-source-path", modSrc.toString(), 148 "-p", jarModules.toString() 149 ) 150 .outdir(Files.createDirectories(base.resolve("negative"))) 151 .files(findJavaFiles(modSrc)) 152 .run(Task.Expect.FAIL) 153 .writeAll() 154 .getOutputLines(Task.OutputKind.DIRECT); 155 expected = Arrays.asList( 156 "Negative.java:1:43: compiler.err.not.def.access.package.cant.access: closedO.O, closedO", 157 "Negative.java:1:56: compiler.err.not.def.access.package.cant.access: closedN.N, closedN", 158 "Negative.java:1:69: compiler.err.not.def.access.package.cant.access: closedL.L, closedL"); 159 if (!out.containsAll(expected)) { 160 throw new Exception("Expected output not found"); 161 } 162 //checks if the output does not contain messages about exported packages. 163 Pattern regex = Pattern.compile("compiler\\.err.*(openO\\.O|openN\\.N|openL\\.L)"); 164 for (String s : out) { 165 if (regex.matcher(s).find()) { 166 throw new Exception("Unexpected output: " + s); 167 } 168 } |