510 .files(findJavaFiles(src)) |
511 .files(findJavaFiles(src)) |
511 .run() |
512 .run() |
512 .writeAll(); |
513 .writeAll(); |
513 } |
514 } |
514 |
515 |
|
516 @Test |
|
517 public void testUnresolvableInImport(Path base) throws Exception { |
|
518 Path src = base.resolve("src"); |
|
519 Path src_m1 = src.resolve("m1x"); |
|
520 tb.writeJavaFiles(src_m1, |
|
521 "module m1x { }", |
|
522 "package api; import can.not.resolve; public class Api { }"); |
|
523 Path classes = base.resolve("classes"); |
|
524 tb.createDirectories(classes); |
|
525 |
|
526 List<String> log = new JavacTask(tb) |
|
527 .options("-XDrawDiagnostics", |
|
528 "--module-source-path", src.toString()) |
|
529 .outdir(classes) |
|
530 .files(findJavaFiles(src)) |
|
531 .run(Task.Expect.FAIL) |
|
532 .writeAll() |
|
533 .getOutputLines(Task.OutputKind.DIRECT); |
|
534 |
|
535 List<String> expected = Arrays.asList( |
|
536 "Api.java:1:28: compiler.err.doesnt.exist: can.not", |
|
537 "1 error"); |
|
538 |
|
539 if (!expected.equals(log)) |
|
540 throw new Exception("expected output not found; actual: " + log); |
|
541 } |
|
542 |
|
543 @Test |
|
544 public void testMissingKnownClass(Path base) throws Exception { |
|
545 Path src = base.resolve("src"); |
|
546 Path src_m1 = src.resolve("m1x"); |
|
547 tb.writeJavaFiles(src_m1, |
|
548 "module m1x { exports api; }", |
|
549 "package api; public class Base { }", |
|
550 "package api; public class Sub extends Base { }"); |
|
551 Path classes = base.resolve("classes"); |
|
552 tb.createDirectories(classes); |
|
553 Path m1xClasses = classes.resolve("m1x"); |
|
554 tb.createDirectories(m1xClasses); |
|
555 |
|
556 new JavacTask(tb) |
|
557 .options("-XDrawDiagnostics") |
|
558 .outdir(m1xClasses) |
|
559 .files(findJavaFiles(src_m1)) |
|
560 .run(Task.Expect.SUCCESS) |
|
561 .writeAll(); |
|
562 |
|
563 Files.delete(m1xClasses.resolve("api").resolve("Base.class")); |
|
564 |
|
565 Path src_m2 = src.resolve("m2x"); |
|
566 tb.writeJavaFiles(src_m2, |
|
567 "module m2x { requires m1x; }", |
|
568 "package test;\n" + |
|
569 "import api.Sub;\n" + |
|
570 "import api.Base;\n" + |
|
571 "public class Test {\n" + |
|
572 " Sub a2;\n" + |
|
573 " Base a;\n" + |
|
574 "}\n"); |
|
575 Path m2xClasses = classes.resolve("m2x"); |
|
576 tb.createDirectories(m2xClasses); |
|
577 List<String> log = new JavacTask(tb) |
|
578 .options("-XDrawDiagnostics", |
|
579 "--module-path", classes.toString(), |
|
580 "-XDdev") |
|
581 .outdir(m2xClasses) |
|
582 .files(findJavaFiles(src_m2)) |
|
583 .run(Task.Expect.FAIL) |
|
584 .writeAll() |
|
585 .getOutputLines(Task.OutputKind.DIRECT); |
|
586 |
|
587 List<String> expected = Arrays.asList( |
|
588 "Test.java:3:11: compiler.err.cant.resolve.location: kindname.class, Base, , , (compiler.misc.location: kindname.package, api, null)", |
|
589 "Test.java:6:5: compiler.err.cant.resolve.location: kindname.class, Base, , , (compiler.misc.location: kindname.class, test.Test, null)", |
|
590 "2 errors"); |
|
591 |
|
592 if (!expected.equals(log)) |
|
593 throw new Exception("expected output not found; actual: " + log); |
|
594 } |
|
595 |
515 } |
596 } |