langtools/test/tools/javac/modules/UpgradeModulePathTest.java
changeset 42822 a84956e7ee4d
parent 40763 209113892b0d
equal deleted inserted replaced
42812:084017ef9300 42822:a84956e7ee4d
    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(),