langtools/test/tools/javac/modules/ModuleSourcePathTest.java
changeset 37758 3ecf9b414e05
parent 36778 e04318f39f92
child 40308 274367a99f98
equal deleted inserted replaced
37757:f38cc75b6fa0 37758:3ecf9b414e05
    54         ModuleSourcePathTest t = new ModuleSourcePathTest();
    54         ModuleSourcePathTest t = new ModuleSourcePathTest();
    55         t.runTests();
    55         t.runTests();
    56     }
    56     }
    57 
    57 
    58     @Test
    58     @Test
    59     void testSourcePathConflict(Path base) throws Exception {
    59     public void testSourcePathConflict(Path base) throws Exception {
    60         Path sp = base.resolve("src");
    60         Path sp = base.resolve("src");
    61         Path msp = base.resolve("srcmodules");
    61         Path msp = base.resolve("srcmodules");
    62 
    62 
    63         String log = new JavacTask(tb, Task.Mode.CMDLINE)
    63         String log = new JavacTask(tb, Task.Mode.CMDLINE)
    64                 .options("-XDrawDiagnostics",
    64                 .options("-XDrawDiagnostics",
    72         if (!log.contains("cannot specify both -sourcepath and -modulesourcepath"))
    72         if (!log.contains("cannot specify both -sourcepath and -modulesourcepath"))
    73             throw new Exception("expected diagnostic not found");
    73             throw new Exception("expected diagnostic not found");
    74     }
    74     }
    75 
    75 
    76     @Test
    76     @Test
    77     void testUnnormalizedPath1(Path base) throws Exception {
    77     public void testUnnormalizedPath1(Path base) throws Exception {
    78         Path src = base.resolve("src");
    78         Path src = base.resolve("src");
    79         Path src_m1 = src.resolve("m1");
    79         Path src_m1 = src.resolve("m1");
    80         tb.writeJavaFiles(src_m1, "module m1 { }");
    80         tb.writeJavaFiles(src_m1, "module m1 { }");
    81         Path modules = base.resolve("modules");
    81         Path modules = base.resolve("modules");
    82         Files.createDirectories(modules);
    82         Files.createDirectories(modules);
    89                 .run()
    89                 .run()
    90                 .writeAll();
    90                 .writeAll();
    91     }
    91     }
    92 
    92 
    93     @Test
    93     @Test
    94     void testUnnormalizedPath2(Path base) throws Exception {
    94     public void testUnnormalizedPath2(Path base) throws Exception {
    95         Path src = base.resolve("src");
    95         Path src = base.resolve("src");
    96         Path src_m1 = src.resolve("m1");
    96         Path src_m1 = src.resolve("m1");
    97         tb.writeJavaFiles(src_m1, "module m1 { }");
    97         tb.writeJavaFiles(src_m1, "module m1 { }");
    98         Path modules = base.resolve("modules");
    98         Path modules = base.resolve("modules");
    99         Files.createDirectories(modules);
    99         Files.createDirectories(modules);
   113                 .collect(Collectors.toList())
   113                 .collect(Collectors.toList())
   114                 .toArray(new Path[paths.length]);
   114                 .toArray(new Path[paths.length]);
   115     }
   115     }
   116 
   116 
   117     @Test
   117     @Test
   118     void regularBraces(Path base) throws Exception {
   118     public void regularBraces(Path base) throws Exception {
   119         generateModules(base, "src1", "src2/inner_dir");
   119         generateModules(base, "src1", "src2/inner_dir");
   120 
   120 
   121         final Path modules = base.resolve("modules");
   121         final Path modules = base.resolve("modules");
   122         tb.createDirectories(modules);
   122         tb.createDirectories(modules);
   123 
   123 
   134                 modules.resolve("m0/module-info.class"),
   134                 modules.resolve("m0/module-info.class"),
   135                 modules.resolve("m1/module-info.class"));
   135                 modules.resolve("m1/module-info.class"));
   136     }
   136     }
   137 
   137 
   138     @Test
   138     @Test
   139     void mismatchedBraces(Path base) throws Exception {
   139     public void mismatchedBraces(Path base) throws Exception {
   140         final List<String> sourcePaths = Arrays.asList(
   140         final List<String> sourcePaths = Arrays.asList(
   141                 "{",
   141                 "{",
   142                 "}",
   142                 "}",
   143                 "}{",
   143                 "}{",
   144                 "./}",
   144                 "./}",
   163                 throw new Exception("expected output for path [" + sourcepath + "] not found");
   163                 throw new Exception("expected output for path [" + sourcepath + "] not found");
   164         }
   164         }
   165     }
   165     }
   166 
   166 
   167     @Test
   167     @Test
   168     void deepBraces(Path base) throws Exception {
   168     public void deepBraces(Path base) throws Exception {
   169         String[] modulePaths = {"src/src1",
   169         String[] modulePaths = {"src/src1",
   170                 "src/src2",
   170                 "src/src2",
   171                 "src/src3",
   171                 "src/src3",
   172                 "src/srcB/src1",
   172                 "src/srcB/src1",
   173                 "src/srcB/src2/srcXX",
   173                 "src/srcB/src2/srcXX",
   195         }
   195         }
   196         checkFiles(modules.resolve("m8/pkg8/A.class"));
   196         checkFiles(modules.resolve("m8/pkg8/A.class"));
   197     }
   197     }
   198 
   198 
   199     @Test
   199     @Test
   200     void fileInPath(Path base) throws Exception {
   200     public void fileInPath(Path base) throws Exception {
   201         Path src = base.resolve("src");
   201         Path src = base.resolve("src");
   202         tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   202         tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   203         tb.writeFile(base.resolve("dummy.txt"), "");
   203         tb.writeFile(base.resolve("dummy.txt"), "");
   204 
   204 
   205         final Path modules = base.resolve("modules");
   205         final Path modules = base.resolve("modules");
   216         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   216         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   217         checkFiles(modules.resolve("kettle$/module-info.class"));
   217         checkFiles(modules.resolve("kettle$/module-info.class"));
   218     }
   218     }
   219 
   219 
   220     @Test
   220     @Test
   221     void noAlternative(Path base) throws Exception {
   221     public void noAlternative(Path base) throws Exception {
   222         Path src = base.resolve("src");
   222         Path src = base.resolve("src");
   223         tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   223         tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   224 
   224 
   225         final Path modules = base.resolve("modules");
   225         final Path modules = base.resolve("modules");
   226         tb.createDirectories(modules);
   226         tb.createDirectories(modules);
   236         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   236         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   237         checkFiles(modules.resolve("kettle$/module-info.class"));
   237         checkFiles(modules.resolve("kettle$/module-info.class"));
   238     }
   238     }
   239 
   239 
   240     @Test
   240     @Test
   241     void noChoice(Path base) throws Exception {
   241     public void noChoice(Path base) throws Exception {
   242         tb.writeJavaFiles(base.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   242         tb.writeJavaFiles(base.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }");
   243 
   243 
   244         final Path modules = base.resolve("modules");
   244         final Path modules = base.resolve("modules");
   245         tb.createDirectories(modules);
   245         tb.createDirectories(modules);
   246 
   246 
   255         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   255         checkFiles(modules.resolve("kettle$/electric/Heater.class"));
   256         checkFiles(modules.resolve("kettle$/module-info.class"));
   256         checkFiles(modules.resolve("kettle$/module-info.class"));
   257     }
   257     }
   258 
   258 
   259     @Test
   259     @Test
   260     void nestedModules(Path src) throws Exception {
   260     public void nestedModules(Path src) throws Exception {
   261         Path carModule = src.resolve("car");
   261         Path carModule = src.resolve("car");
   262         tb.writeJavaFiles(carModule, "module car { }", "package light; class Headlight { }");
   262         tb.writeJavaFiles(carModule, "module car { }", "package light; class Headlight { }");
   263         tb.writeJavaFiles(carModule.resolve("engine"), "module engine { }", "package flat; class Piston { }");
   263         tb.writeJavaFiles(carModule.resolve("engine"), "module engine { }", "package flat; class Piston { }");
   264 
   264 
   265         final Path modules = src.resolve("modules");
   265         final Path modules = src.resolve("modules");
   275         checkFiles(modules.resolve("car/light/Headlight.class"));
   275         checkFiles(modules.resolve("car/light/Headlight.class"));
   276         checkFiles(modules.resolve("engine/flat/Piston.class"));
   276         checkFiles(modules.resolve("engine/flat/Piston.class"));
   277     }
   277     }
   278 
   278 
   279     @Test
   279     @Test
   280     void relativePaths(Path base) throws Exception {
   280     public void relativePaths(Path base) throws Exception {
   281         Path src = base.resolve("src");
   281         Path src = base.resolve("src");
   282         tb.writeJavaFiles(src.resolve("kettle"), "module kettle { }", "package electric; class Heater { }");
   282         tb.writeJavaFiles(src.resolve("kettle"), "module kettle { }", "package electric; class Heater { }");
   283 
   283 
   284         final Path modules = base.resolve("modules");
   284         final Path modules = base.resolve("modules");
   285         tb.createDirectories(modules);
   285         tb.createDirectories(modules);
   294         checkFiles(modules.resolve("kettle/electric/Heater.class"));
   294         checkFiles(modules.resolve("kettle/electric/Heater.class"));
   295         checkFiles(modules.resolve("kettle/module-info.class"));
   295         checkFiles(modules.resolve("kettle/module-info.class"));
   296     }
   296     }
   297 
   297 
   298     @Test
   298     @Test
   299     void duplicatePaths(Path base) throws Exception {
   299     public void duplicatePaths(Path base) throws Exception {
   300         Path src = base.resolve("src");
   300         Path src = base.resolve("src");
   301         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }");
   301         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }");
   302 
   302 
   303         final Path modules = base.resolve("modules");
   303         final Path modules = base.resolve("modules");
   304         tb.createDirectories(modules);
   304         tb.createDirectories(modules);
   313 
   313 
   314         checkFiles(modules.resolve("m1/module-info.class"));
   314         checkFiles(modules.resolve("m1/module-info.class"));
   315     }
   315     }
   316 
   316 
   317     @Test
   317     @Test
   318     void notExistentPaths(Path base) throws Exception {
   318     public void notExistentPaths(Path base) throws Exception {
   319         tb.writeJavaFiles(base.resolve("m1"), "module m1 { requires m0; }", "package a; class A { }");
   319         tb.writeJavaFiles(base.resolve("m1"), "module m1 { requires m0; }", "package a; class A { }");
   320 
   320 
   321         final Path modules = base.resolve("modules");
   321         final Path modules = base.resolve("modules");
   322         tb.createDirectories(modules);
   322         tb.createDirectories(modules);
   323 
   323 
   332         if (!log.contains("compiler.err.module.not.found: m0"))
   332         if (!log.contains("compiler.err.module.not.found: m0"))
   333             throw new Exception("expected output for not existent module source path not found");
   333             throw new Exception("expected output for not existent module source path not found");
   334     }
   334     }
   335 
   335 
   336     @Test
   336     @Test
   337     void notExistentPathShouldBeSkipped(Path base) throws Exception {
   337     public void notExistentPathShouldBeSkipped(Path base) throws Exception {
   338         tb.writeJavaFiles(base.resolve("m1"), "module m1 { }", "package a; class A { }");
   338         tb.writeJavaFiles(base.resolve("m1"), "module m1 { }", "package a; class A { }");
   339 
   339 
   340         final Path modules = base.resolve("modules");
   340         final Path modules = base.resolve("modules");
   341         tb.createDirectories(modules);
   341         tb.createDirectories(modules);
   342 
   342 
   350 
   350 
   351         checkFiles(modules.resolve("m1/module-info.class"));
   351         checkFiles(modules.resolve("m1/module-info.class"));
   352     }
   352     }
   353 
   353 
   354     @Test
   354     @Test
   355     void commas(Path base) throws Exception {
   355     public void commas(Path base) throws Exception {
   356         Path src = base.resolve("src");
   356         Path src = base.resolve("src");
   357         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }");
   357         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }");
   358 
   358 
   359         final Path modules = base.resolve("modules");
   359         final Path modules = base.resolve("modules");
   360         tb.createDirectories(modules);
   360         tb.createDirectories(modules);
   369 
   369 
   370         checkFiles(modules.resolve("m1/module-info.class"));
   370         checkFiles(modules.resolve("m1/module-info.class"));
   371     }
   371     }
   372 
   372 
   373     @Test
   373     @Test
   374     void asterisk(Path base) throws Exception {
   374     public void asterisk(Path base) throws Exception {
   375         tb.writeJavaFiles(base.resolve("kettle").resolve("classes"), "module kettle { }",
   375         tb.writeJavaFiles(base.resolve("kettle").resolve("classes"), "module kettle { }",
   376                 "package electric; class Heater { }");
   376                 "package electric; class Heater { }");
   377 
   377 
   378         final Path modules = base.resolve("modules");
   378         final Path modules = base.resolve("modules");
   379         tb.createDirectories(modules);
   379         tb.createDirectories(modules);
   389         checkFiles(modules.resolve("kettle/electric/Heater.class"));
   389         checkFiles(modules.resolve("kettle/electric/Heater.class"));
   390         checkFiles(modules.resolve("kettle/module-info.class"));
   390         checkFiles(modules.resolve("kettle/module-info.class"));
   391     }
   391     }
   392 
   392 
   393     @Test
   393     @Test
   394     void asteriskInDifferentSets(Path base) throws Exception {
   394     public void asteriskInDifferentSets(Path base) throws Exception {
   395         Path src = base.resolve("src");
   395         Path src = base.resolve("src");
   396         final Path module = src.resolve("kettle");
   396         final Path module = src.resolve("kettle");
   397         tb.writeJavaFiles(module.resolve("classes"), "module kettle { }", "package electric; class Heater { }");
   397         tb.writeJavaFiles(module.resolve("classes"), "module kettle { }", "package electric; class Heater { }");
   398         tb.writeJavaFiles(module.resolve("gensrc"), "package model; class Java { }");
   398         tb.writeJavaFiles(module.resolve("gensrc"), "package model; class Java { }");
   399         tb.writeJavaFiles(module.resolve("special/classes"), "package gas; class Heater { }");
   399         tb.writeJavaFiles(module.resolve("special/classes"), "package gas; class Heater { }");
   415         checkFiles(modules.resolve("kettle/model/Java.class"));
   415         checkFiles(modules.resolve("kettle/model/Java.class"));
   416         checkFiles(modules.resolve("kettle/module-info.class"));
   416         checkFiles(modules.resolve("kettle/module-info.class"));
   417     }
   417     }
   418 
   418 
   419     @Test
   419     @Test
   420     void asteriskIllegalUse(Path base) throws Exception {
   420     public void asteriskIllegalUse(Path base) throws Exception {
   421         final List<String> sourcePaths = Arrays.asList(
   421         final List<String> sourcePaths = Arrays.asList(
   422                 "*",
   422                 "*",
   423                 "**",
   423                 "**",
   424                 "***",
   424                 "***",
   425                 "*.*",
   425                 "*.*",