419 checkModulesSpecified("M"); |
418 checkModulesSpecified("M"); |
420 checkModulesIncluded("M"); |
419 checkModulesIncluded("M"); |
421 checkPackagesIncluded("p"); |
420 checkPackagesIncluded("p"); |
422 checkTypesIncluded("p.Main"); |
421 checkTypesIncluded("p.Main"); |
423 checkPackagesNotIncluded(".*open.*"); |
422 checkPackagesNotIncluded(".*open.*"); |
|
423 assertMessageNotPresent("warning"); |
424 } |
424 } |
425 |
425 |
426 @Test |
426 @Test |
427 public void testExpandRequiresTransitive(Path base) throws Exception { |
427 public void testExpandRequiresTransitive(Path base) throws Exception { |
428 Path src = base.resolve("src"); |
428 Path src = base.resolve("src"); |
440 execTask("--module-source-path", src.toString(), |
440 execTask("--module-source-path", src.toString(), |
441 "--module", "M", |
441 "--module", "M", |
442 "--expand-requires", "transitive"); |
442 "--expand-requires", "transitive"); |
443 |
443 |
444 checkModulesSpecified("M", "N", "O"); |
444 checkModulesSpecified("M", "N", "O"); |
|
445 checkModulesNotSpecified("java.base"); |
445 checkModulesIncluded("M", "N", "O"); |
446 checkModulesIncluded("M", "N", "O"); |
|
447 checkModulesNotIncluded("java.base"); |
446 checkPackagesIncluded("p", "openN", "openO"); |
448 checkPackagesIncluded("p", "openN", "openO"); |
447 checkTypesIncluded("p.Main", "openN.N", "openO.O"); |
449 checkTypesIncluded("p.Main", "openN.N", "openO.O"); |
|
450 assertMessageNotPresent("warning"); |
|
451 } |
|
452 |
|
453 @Test |
|
454 public void testExpandRequiresTransitiveWithMandated(Path base) throws Exception { |
|
455 Path src = base.resolve("src"); |
|
456 |
|
457 createAuxiliaryModules(src); |
|
458 |
|
459 Path patchSrc = Paths.get(src.toString(), "patch"); |
|
460 |
|
461 new ModuleBuilder(tb, "M") |
|
462 .comment("The M module.") |
|
463 .requiresTransitive("N", src) |
|
464 .requires("L", src) |
|
465 .exports("p") |
|
466 .classes("package p; public class Main { openO.O o; openN.N n; openL.L l; }") |
|
467 .write(src); |
|
468 |
|
469 // build the patching module |
|
470 tb.writeJavaFiles(patchSrc, "package pkg1;\n" + |
|
471 "/** Class A */ public class A extends java.util.ArrayList { }"); |
|
472 tb.writeJavaFiles(patchSrc, "package pkg1;\n" |
|
473 + "/** Class B */ public class B { }"); |
|
474 |
|
475 execTask("--module-source-path", src.toString(), |
|
476 "--patch-module", "java.base=" + patchSrc.toString(), |
|
477 "--module", "M", |
|
478 "--expand-requires", "transitive"); |
|
479 |
|
480 checkModulesSpecified("java.base", "M", "N", "O"); |
|
481 checkModulesIncluded("java.base", "M", "N", "O"); |
|
482 checkPackagesIncluded("p", "openN", "openO"); |
|
483 checkTypesIncluded("p.Main", "openN.N", "openO.O"); |
|
484 assertMessageNotPresent("warning"); |
448 } |
485 } |
449 |
486 |
450 @Test |
487 @Test |
451 public void testExpandRequiresAll(Path base) throws Exception { |
488 public void testExpandRequiresAll(Path base) throws Exception { |
452 Path src = base.resolve("src"); |
489 Path src = base.resolve("src"); |
464 |
501 |
465 execTask("--module-source-path", src.toString(), |
502 execTask("--module-source-path", src.toString(), |
466 "--module", "M", |
503 "--module", "M", |
467 "--expand-requires", "all"); |
504 "--expand-requires", "all"); |
468 |
505 |
469 checkModulesSpecified("M", "java.base", "N", "L", "O"); |
506 checkModulesSpecified("M", "N", "L", "O"); |
470 checkModulesIncluded("M", "java.base", "N", "L", "O"); |
507 checkModulesIncluded("M", "N", "L", "O"); |
471 checkModulesNotIncluded("P", "J", "Q"); |
508 checkModulesNotIncluded("P", "J", "Q"); |
472 checkPackagesIncluded("p", "openN", "openL", "openO"); |
509 checkPackagesIncluded("p", "openN", "openL", "openO"); |
473 checkPackagesNotIncluded(".*openP.*", ".*openJ.*"); |
510 checkPackagesNotIncluded(".*openP.*", ".*openJ.*"); |
474 checkTypesIncluded("p.Main", "openN.N", "openL.L", "openO.O"); |
511 checkTypesIncluded("p.Main", "openN.N", "openL.L", "openO.O"); |
475 checkTypesNotIncluded(".*openP.*", ".*openJ.*"); |
512 checkTypesNotIncluded(".*openP.*", ".*openJ.*"); |
|
513 assertMessageNotPresent("warning"); |
476 } |
514 } |
477 |
515 |
478 @Test |
516 @Test |
479 public void testMissingModule(Path base) throws Exception { |
517 public void testMissingModule(Path base) throws Exception { |
480 Path src = base.resolve("src"); |
518 Path src = base.resolve("src"); |
575 .write(src); |
613 .write(src); |
576 |
614 |
577 new ModuleBuilder(tb, "L") |
615 new ModuleBuilder(tb, "L") |
578 .comment("The L module.") |
616 .comment("The L module.") |
579 .exports("openL") |
617 .exports("openL") |
580 . requiresTransitive("P") |
618 .requiresTransitive("P") |
581 .classes("package openL; /** Class L open */ public class L { }") |
619 .classes("package openL; /** Class L open */ public class L { }") |
582 .classes("package closedL; /** Class L closed */ public class L { }") |
620 .classes("package closedL; /** Class L closed */ public class L { }") |
583 .write(src); |
621 .write(src); |
584 |
622 |
585 new ModuleBuilder(tb, "N") |
623 new ModuleBuilder(tb, "N") |
597 .classes("package openO; /** Class O open. */ public class O { openJ.J j; }") |
635 .classes("package openO; /** Class O open. */ public class O { openJ.J j; }") |
598 .classes("package closedO; /** Class O closed. */ public class O { }") |
636 .classes("package closedO; /** Class O closed. */ public class O { }") |
599 .write(src); |
637 .write(src); |
600 |
638 |
601 new ModuleBuilder(tb, "P") |
639 new ModuleBuilder(tb, "P") |
602 .comment("The O module.") |
640 .comment("The P module.") |
603 .exports("openP") |
641 .exports("openP") |
604 .requires("J") |
642 .requires("J") |
605 .classes("package openP; /** Class O open. */ public class O { openJ.J j; }") |
643 .classes("package openP; /** Class O open. */ public class O { openJ.J j; }") |
606 .classes("package closedP; /** Class O closed. */ public class O { }") |
644 .classes("package closedP; /** Class O closed. */ public class O { }") |
607 .write(src); |
645 .write(src); |