< prev index next >

test/tools/javac/modules/UpgradeModulePathTest.java

Print this page




  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @summary tests for --upgrade-module-path
  27  * @library /tools/lib
  28  * @modules
  29  *      jdk.compiler/com.sun.tools.javac.api
  30  *      jdk.compiler/com.sun.tools.javac.main
  31  * @build toolbox.ToolBox toolbox.JavacTask toolbox.ModuleBuilder ModuleTestBase
  32  * @run main UpgradeModulePathTest
  33  */
  34 
  35 import java.io.File;
  36 import java.nio.file.Path;
  37 
  38 import toolbox.JavacTask;
  39 import toolbox.ModuleBuilder;
  40 import toolbox.Task;
  41 import toolbox.ToolBox;
  42 
  43 public class UpgradeModulePathTest extends ModuleTestBase {
  44 
  45     public static void main(String... args) throws Exception {
  46         UpgradeModulePathTest t = new UpgradeModulePathTest();
  47         t.runTests();
  48     }
  49 
  50     @Test
  51     public void simpleUsage(Path base) throws Exception {
  52         Path modules = base.resolve("modules");
  53         new ModuleBuilder(tb, "m1")
  54                 .exports("pkg1")
  55                 .classes("package pkg1; public class E { }")
  56                 .build(modules);
  57 
  58         final Path upgradeModules = base.resolve("upgradeModules");
  59         new ModuleBuilder(tb, "m1")
  60                 .exports("pkg2")
  61                 .classes("package pkg2; public class E { }")
  62                 .build(upgradeModules);
  63 
  64         Path src = base.resolve("src");
  65         tb.writeJavaFiles(src, "module m2 { requires m1; }",
  66                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
  67 
  68         new JavacTask(tb, Task.Mode.CMDLINE)
  69                 .options("--module-path", modules.toString(),
  70                         "--upgrade-module-path", upgradeModules.toString())
  71                 .files(findJavaFiles(src))
  72                 .run()
  73                 .writeAll();
  74     }
  75 
  76     @Test
  77     public void onlyUpgradeModulePath(Path base) throws Exception {
  78         final Path module = base.resolve("modules");
  79         new ModuleBuilder(tb, "m1")
  80                 .exports("pkg1")
  81                 .classes("package pkg1; public class E { }")
  82                 .build(module);
  83 
  84         final Path upgradeModule = base.resolve("upgradeModule");
  85         new ModuleBuilder(tb, "m1")
  86                 .exports("pkg2")
  87                 .classes("package pkg2; public class E { }")
  88                 .build(upgradeModule);
  89 
  90         Path src = base.resolve("src");
  91         tb.writeJavaFiles(src, "module m2 { requires m1; }",
  92                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
  93 
  94         new JavacTask(tb, Task.Mode.CMDLINE)
  95                 .options("--upgrade-module-path", upgradeModule + File.pathSeparator + module)
  96                 .files(findJavaFiles(src))
  97                 .run()
  98                 .writeAll();
  99     }
 100 
 101     @Test
 102     public void withModuleSourcePath(Path base) throws Exception {
 103         final Path module = base.resolve("modules");
 104         new ModuleBuilder(tb, "m1")
 105                 .exports("pkg1")
 106                 .classes("package pkg1; public class E { }")
 107                 .build(module);
 108 
 109         final Path upgradeModule = base.resolve("upgradeModule");
 110         new ModuleBuilder(tb, "m1")
 111                 .exports("pkg2")
 112                 .classes("package pkg2; public class E { }")
 113                 .build(upgradeModule);
 114 
 115         final Path s = base.resolve("source");
 116         tb.writeJavaFiles(s.resolve("m3"), "module m3 { }");
 117 
 118         final Path upgradeModule3 = base.resolve("upgradeModule");
 119         new ModuleBuilder(tb, "m3")
 120                 .exports("pkg3")
 121                 .classes("package pkg3; public class E { }")
 122                 .build(upgradeModule);
 123 
 124         Path src = base.resolve("src");
 125         tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; requires m3; }",
 126                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 127 
 128         new JavacTask(tb, Task.Mode.CMDLINE)
 129                 .options("--module-path", module.toString(),
 130                         "--module-source-path", src + File.pathSeparator + s,
 131                         "--upgrade-module-path", upgradeModule + File.pathSeparator + upgradeModule3)
 132                 .outdir(module)
 133                 .files(findJavaFiles(src))
 134                 .run()
 135                 .writeAll();
 136     }
 137 
 138     @Test
 139     public void sameUpgradeAndModulePath(Path base) throws Exception {
 140         final Path module = base.resolve("modules");
 141         new ModuleBuilder(tb, "m1")
 142                 .exports("pkg1")
 143                 .classes("package pkg1; public class E { }")
 144                 .build(module);
 145 
 146         final Path upgradeModule = base.resolve("upgradeModule");
 147         new ModuleBuilder(tb, "m1")
 148                 .exports("pkg2")
 149                 .classes("package pkg2; public class E { }")
 150                 .build(upgradeModule);
 151 
 152         Path src = base.resolve("src");
 153         tb.writeJavaFiles(src, "module m2 { requires m1; }",
 154                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 155 
 156         new JavacTask(tb, Task.Mode.CMDLINE)
 157                 .options("--module-path", upgradeModule + File.pathSeparator + module,
 158                         "--upgrade-module-path", upgradeModule.toString())
 159                 .files(findJavaFiles(src))
 160                 .run()
 161                 .writeAll();
 162     }
 163 
 164     @Test
 165     public void dummyFileInUpgradeModulePath(Path base) throws Exception {
 166         final Path module = base.resolve("modules");
 167         new ModuleBuilder(tb, "m1")
 168                 .exports("pkg1")
 169                 .classes("package pkg1; public class E { }")
 170                 .build(module);
 171 
 172         Path dummy = base.resolve("dummy.txt");
 173         tb.writeFile(dummy, "");
 174 
 175         Path src = base.resolve("src");
 176         tb.writeJavaFiles(src, "module m2 { requires m1; }",
 177                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 178 
 179         String output = new JavacTask(tb, Task.Mode.CMDLINE)
 180                 .options("-XDrawDiagnostics",
 181                         "--module-path", module.toString(),
 182                         "--upgrade-module-path", dummy.toString())
 183                 .files(findJavaFiles(src))
 184                 .run(Task.Expect.FAIL)
 185                 .writeAll()
 186                 .getOutput(Task.OutputKind.DIRECT);
 187         if (!output.contains("compiler.err.illegal.argument.for.option: --upgrade-module-path, " + dummy)) {
 188             throw new Exception("Expected output was not found");
 189         }
 190     }
 191 
 192     @Test
 193     public void severalUpgradeModules(Path base) throws Exception {
 194         final Path module = base.resolve("modules");
 195         new ModuleBuilder(tb, "m1")
 196                 .exports("pkg1")
 197                 .classes("package pkg1; public class A { }")
 198                 .build(module);
 199 
 200         new ModuleBuilder(tb, "m2")
 201                 .exports("pkg2")
 202                 .classes("package pkg2; public class B { }")
 203                 .build(module);
 204 
 205         Path upgradeModule = base.resolve("upgradeModule");
 206         new ModuleBuilder(tb, "m2")
 207                 .exports("pkg2")
 208                 .classes("package pkg2; public class BC { }")
 209                 .build(upgradeModule);
 210         new ModuleBuilder(tb, "m3")
 211                 .exports("pkg3")
 212                 .classes("package pkg3; public class DC { }")
 213                 .build(upgradeModule);
 214 
 215         Path src = base.resolve("src");
 216         tb.writeJavaFiles(src, "module m4 { requires m1; requires m2; requires m3; }",
 217                 "package p; class A { void main() { pkg1.A.class.getName(); pkg2.BC.class.getName(); pkg3.DC.class.getName(); } }");
 218 
 219         new JavacTask(tb, Task.Mode.CMDLINE)
 220                 .options("--module-path", module.toString(),
 221                         "--upgrade-module-path", upgradeModule.toString())
 222                 .files(findJavaFiles(src))
 223                 .run()
 224                 .writeAll();
 225 
 226         Path src2 = base.resolve("src2");
 227         tb.writeJavaFiles(src2, "module m4 { requires m1; }",
 228                 "package p; class A { void main() { pkg2.B.class.getName(); } }");
 229 
 230         String log = new JavacTask(tb, Task.Mode.CMDLINE)
 231                 .options("-XDrawDiagnostics",
 232                         "--module-path", module.toString(),
 233                         "--upgrade-module-path", upgradeModule.toString())
 234                 .files(findJavaFiles(src2))
 235                 .run(Task.Expect.FAIL)
 236                 .writeAll()
 237                 .getOutput(Task.OutputKind.DIRECT);
 238         if (!log.contains("compiler.err.doesnt.exist: pkg2")) {
 239             throw new Exception("Expected output was not found");
 240         }
 241     }
 242 
 243     @Test
 244     public void severalUpgradeModulePathsLastWin(Path base) throws Exception {
 245         final Path module = base.resolve("modules");
 246         new ModuleBuilder(tb, "m1")
 247                 .exports("pkg1")
 248                 .classes("package pkg1; public class E { }")
 249                 .build(module);
 250 
 251         final Path upgradeModule1 = base.resolve("upgradeModule1");
 252         new ModuleBuilder(tb, "m1")
 253                 .exports("pkg2")
 254                 .classes("package pkg2; public class EC1 { }")
 255                 .build(upgradeModule1);
 256 
 257         final Path upgradeModule2 = base.resolve("upgradeModule2");
 258         new ModuleBuilder(tb, "m1")
 259                 .exports("pkg2")
 260                 .classes("package pkg2; public class EC2 { }")
 261                 .build(upgradeModule2);
 262 
 263         Path src = base.resolve("src");
 264         tb.writeJavaFiles(src, "module m2 { requires m1; }",
 265                 "package p; class A { void main() { pkg2.EC2.class.getName(); } }");
 266 
 267         new JavacTask(tb, Task.Mode.CMDLINE)
 268                 .options("--module-path", module.toString(),
 269                         "--upgrade-module-path", upgradeModule1.toString(),
 270                         "--upgrade-module-path", upgradeModule2.toString())
 271                 .files(findJavaFiles(src))
 272                 .run()
 273                 .writeAll();
 274 
 275         Path src2 = base.resolve("src2");
 276         tb.writeJavaFiles(src2, "module m2 { requires m1; }",
 277                 "package p; class A { void main() { pkg2.EC1.class.getName(); } }");
 278 
 279         final String log = new JavacTask(tb, Task.Mode.CMDLINE)
 280                 .options("-XDrawDiagnostics",
 281                         "--module-path", module.toString(),
 282                         "--upgrade-module-path", upgradeModule1.toString(),
 283                         "--upgrade-module-path", upgradeModule2.toString())
 284                 .files(findJavaFiles(src2))
 285                 .run(Task.Expect.FAIL)
 286                 .writeAll()
 287                 .getOutput(Task.OutputKind.DIRECT);
 288 
 289         if (!log.contains("compiler.err.cant.resolve.location: kindname.class, EC1, , , (compiler.misc.location: kindname.package, pkg2, null)")) {
 290             throw new Exception("Expected output was not found");
 291         }
 292     }
 293 }


  21  * questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @summary tests for --upgrade-module-path
  27  * @library /tools/lib
  28  * @modules
  29  *      jdk.compiler/com.sun.tools.javac.api
  30  *      jdk.compiler/com.sun.tools.javac.main
  31  * @build toolbox.ToolBox toolbox.JavacTask toolbox.ModuleBuilder ModuleTestBase
  32  * @run main UpgradeModulePathTest
  33  */
  34 
  35 import java.io.File;
  36 import java.nio.file.Path;
  37 
  38 import toolbox.JavacTask;
  39 import toolbox.ModuleBuilder;
  40 import toolbox.Task;

  41 
  42 public class UpgradeModulePathTest extends ModuleTestBase {
  43 
  44     public static void main(String... args) throws Exception {
  45         UpgradeModulePathTest t = new UpgradeModulePathTest();
  46         t.runTests();
  47     }
  48 
  49     @Test
  50     public void simpleUsage(Path base) throws Exception {
  51         Path modules = base.resolve("modules");
  52         new ModuleBuilder(tb, "m1x")
  53                 .exports("pkg1")
  54                 .classes("package pkg1; public class E { }")
  55                 .build(modules);
  56 
  57         final Path upgradeModules = base.resolve("upgradeModules");
  58         new ModuleBuilder(tb, "m1x")
  59                 .exports("pkg2")
  60                 .classes("package pkg2; public class E { }")
  61                 .build(upgradeModules);
  62 
  63         Path src = base.resolve("src");
  64         tb.writeJavaFiles(src, "module m2x { requires m1x; }",
  65                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
  66 
  67         new JavacTask(tb, Task.Mode.CMDLINE)
  68                 .options("--module-path", modules.toString(),
  69                         "--upgrade-module-path", upgradeModules.toString())
  70                 .files(findJavaFiles(src))
  71                 .run()
  72                 .writeAll();
  73     }
  74 
  75     @Test
  76     public void onlyUpgradeModulePath(Path base) throws Exception {
  77         final Path module = base.resolve("modules");
  78         new ModuleBuilder(tb, "m1x")
  79                 .exports("pkg1")
  80                 .classes("package pkg1; public class E { }")
  81                 .build(module);
  82 
  83         final Path upgradeModule = base.resolve("upgradeModule");
  84         new ModuleBuilder(tb, "m1x")
  85                 .exports("pkg2")
  86                 .classes("package pkg2; public class E { }")
  87                 .build(upgradeModule);
  88 
  89         Path src = base.resolve("src");
  90         tb.writeJavaFiles(src, "module m2x { requires m1x; }",
  91                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
  92 
  93         new JavacTask(tb, Task.Mode.CMDLINE)
  94                 .options("--upgrade-module-path", upgradeModule + File.pathSeparator + module)
  95                 .files(findJavaFiles(src))
  96                 .run()
  97                 .writeAll();
  98     }
  99 
 100     @Test
 101     public void withModuleSourcePath(Path base) throws Exception {
 102         final Path module = base.resolve("modules");
 103         new ModuleBuilder(tb, "m1x")
 104                 .exports("pkg1")
 105                 .classes("package pkg1; public class E { }")
 106                 .build(module);
 107 
 108         final Path upgradeModule = base.resolve("upgradeModule");
 109         new ModuleBuilder(tb, "m1x")
 110                 .exports("pkg2")
 111                 .classes("package pkg2; public class E { }")
 112                 .build(upgradeModule);
 113 
 114         final Path s = base.resolve("source");
 115         tb.writeJavaFiles(s.resolve("m3x"), "module m3x { }");
 116 
 117         final Path upgradeModule3 = base.resolve("upgradeModule");
 118         new ModuleBuilder(tb, "m3x")
 119                 .exports("pkg3")
 120                 .classes("package pkg3; public class E { }")
 121                 .build(upgradeModule);
 122 
 123         Path src = base.resolve("src");
 124         tb.writeJavaFiles(src.resolve("m2x"), "module m2x { requires m1x; requires m3x; }",
 125                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 126 
 127         new JavacTask(tb, Task.Mode.CMDLINE)
 128                 .options("--module-path", module.toString(),
 129                         "--module-source-path", src + File.pathSeparator + s,
 130                         "--upgrade-module-path", upgradeModule + File.pathSeparator + upgradeModule3)
 131                 .outdir(module)
 132                 .files(findJavaFiles(src))
 133                 .run()
 134                 .writeAll();
 135     }
 136 
 137     @Test
 138     public void sameUpgradeAndModulePath(Path base) throws Exception {
 139         final Path module = base.resolve("modules");
 140         new ModuleBuilder(tb, "m1x")
 141                 .exports("pkg1")
 142                 .classes("package pkg1; public class E { }")
 143                 .build(module);
 144 
 145         final Path upgradeModule = base.resolve("upgradeModule");
 146         new ModuleBuilder(tb, "m1x")
 147                 .exports("pkg2")
 148                 .classes("package pkg2; public class E { }")
 149                 .build(upgradeModule);
 150 
 151         Path src = base.resolve("src");
 152         tb.writeJavaFiles(src, "module m2x { requires m1x; }",
 153                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 154 
 155         new JavacTask(tb, Task.Mode.CMDLINE)
 156                 .options("--module-path", upgradeModule + File.pathSeparator + module,
 157                         "--upgrade-module-path", upgradeModule.toString())
 158                 .files(findJavaFiles(src))
 159                 .run()
 160                 .writeAll();
 161     }
 162 
 163     @Test
 164     public void dummyFileInUpgradeModulePath(Path base) throws Exception {
 165         final Path module = base.resolve("modules");
 166         new ModuleBuilder(tb, "m1x")
 167                 .exports("pkg1")
 168                 .classes("package pkg1; public class E { }")
 169                 .build(module);
 170 
 171         Path dummy = base.resolve("dummy.txt");
 172         tb.writeFile(dummy, "");
 173 
 174         Path src = base.resolve("src");
 175         tb.writeJavaFiles(src, "module m2x { requires m1x; }",
 176                 "package p; class A { void main() { pkg2.E.class.getName(); } }");
 177 
 178         String output = new JavacTask(tb, Task.Mode.CMDLINE)
 179                 .options("-XDrawDiagnostics",
 180                         "--module-path", module.toString(),
 181                         "--upgrade-module-path", dummy.toString())
 182                 .files(findJavaFiles(src))
 183                 .run(Task.Expect.FAIL)
 184                 .writeAll()
 185                 .getOutput(Task.OutputKind.DIRECT);
 186         if (!output.contains("compiler.err.illegal.argument.for.option: --upgrade-module-path, " + dummy)) {
 187             throw new Exception("Expected output was not found");
 188         }
 189     }
 190 
 191     @Test
 192     public void severalUpgradeModules(Path base) throws Exception {
 193         final Path module = base.resolve("modules");
 194         new ModuleBuilder(tb, "m1x")
 195                 .exports("pkg1")
 196                 .classes("package pkg1; public class A { }")
 197                 .build(module);
 198 
 199         new ModuleBuilder(tb, "m2x")
 200                 .exports("pkg2")
 201                 .classes("package pkg2; public class B { }")
 202                 .build(module);
 203 
 204         Path upgradeModule = base.resolve("upgradeModule");
 205         new ModuleBuilder(tb, "m2x")
 206                 .exports("pkg2")
 207                 .classes("package pkg2; public class BC { }")
 208                 .build(upgradeModule);
 209         new ModuleBuilder(tb, "m3x")
 210                 .exports("pkg3")
 211                 .classes("package pkg3; public class DC { }")
 212                 .build(upgradeModule);
 213 
 214         Path src = base.resolve("src");
 215         tb.writeJavaFiles(src, "module m4x { requires m1x; requires m2x; requires m3x; }",
 216                 "package p; class A { void main() { pkg1.A.class.getName(); pkg2.BC.class.getName(); pkg3.DC.class.getName(); } }");
 217 
 218         new JavacTask(tb, Task.Mode.CMDLINE)
 219                 .options("--module-path", module.toString(),
 220                         "--upgrade-module-path", upgradeModule.toString())
 221                 .files(findJavaFiles(src))
 222                 .run()
 223                 .writeAll();
 224 
 225         Path src2 = base.resolve("src2");
 226         tb.writeJavaFiles(src2, "module m4x { requires m1x; }",
 227                 "package p; class A { void main() { pkg2.B.class.getName(); } }");
 228 
 229         String log = new JavacTask(tb, Task.Mode.CMDLINE)
 230                 .options("-XDrawDiagnostics",
 231                         "--module-path", module.toString(),
 232                         "--upgrade-module-path", upgradeModule.toString())
 233                 .files(findJavaFiles(src2))
 234                 .run(Task.Expect.FAIL)
 235                 .writeAll()
 236                 .getOutput(Task.OutputKind.DIRECT);
 237         if (!log.contains("compiler.err.doesnt.exist: pkg2")) {
 238             throw new Exception("Expected output was not found");
 239         }
 240     }
 241 
 242     @Test
 243     public void severalUpgradeModulePathsLastWin(Path base) throws Exception {
 244         final Path module = base.resolve("modules");
 245         new ModuleBuilder(tb, "m1x")
 246                 .exports("pkg1")
 247                 .classes("package pkg1; public class E { }")
 248                 .build(module);
 249 
 250         final Path upgradeModule1 = base.resolve("upgradeModule1");
 251         new ModuleBuilder(tb, "m1x")
 252                 .exports("pkg2")
 253                 .classes("package pkg2; public class EC1 { }")
 254                 .build(upgradeModule1);
 255 
 256         final Path upgradeModule2 = base.resolve("upgradeModule2");
 257         new ModuleBuilder(tb, "m1x")
 258                 .exports("pkg2")
 259                 .classes("package pkg2; public class EC2 { }")
 260                 .build(upgradeModule2);
 261 
 262         Path src = base.resolve("src");
 263         tb.writeJavaFiles(src, "module m2x { requires m1x; }",
 264                 "package p; class A { void main() { pkg2.EC2.class.getName(); } }");
 265 
 266         new JavacTask(tb, Task.Mode.CMDLINE)
 267                 .options("--module-path", module.toString(),
 268                         "--upgrade-module-path", upgradeModule1.toString(),
 269                         "--upgrade-module-path", upgradeModule2.toString())
 270                 .files(findJavaFiles(src))
 271                 .run()
 272                 .writeAll();
 273 
 274         Path src2 = base.resolve("src2");
 275         tb.writeJavaFiles(src2, "module m2x { requires m1x; }",
 276                 "package p; class A { void main() { pkg2.EC1.class.getName(); } }");
 277 
 278         final String log = new JavacTask(tb, Task.Mode.CMDLINE)
 279                 .options("-XDrawDiagnostics",
 280                         "--module-path", module.toString(),
 281                         "--upgrade-module-path", upgradeModule1.toString(),
 282                         "--upgrade-module-path", upgradeModule2.toString())
 283                 .files(findJavaFiles(src2))
 284                 .run(Task.Expect.FAIL)
 285                 .writeAll()
 286                 .getOutput(Task.OutputKind.DIRECT);
 287 
 288         if (!log.contains("compiler.err.cant.resolve.location: kindname.class, EC1, , , (compiler.misc.location: kindname.package, pkg2, null)")) {
 289             throw new Exception("Expected output was not found");
 290         }
 291     }
 292 }
< prev index next >