< prev index next >

test/tools/javac/modules/XModuleTest.java

Print this page
rev 3947 : imported patch xmodule-to-patch-module

*** 21,30 **** --- 21,31 ---- * questions. */ /* * @test + * @bug 8173777 * @summary tests for multi-module mode compilation * @library /tools/lib * @modules * jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.code
*** 32,41 **** --- 33,43 ---- * jdk.compiler/com.sun.tools.javac.processing * @build toolbox.ToolBox toolbox.JavacTask toolbox.ModuleBuilder ModuleTestBase * @run main XModuleTest */ + import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.List; import java.util.Set;
*** 67,77 **** tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) .run() .writeAll() .getOutput(Task.OutputKind.DIRECT); --- 69,79 ---- tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("--patch-module", "java.compiler=" + src.toString()) .outdir(classes) .files(findJavaFiles(src)) .run() .writeAll() .getOutput(Task.OutputKind.DIRECT);
*** 79,105 **** if (!log.isEmpty()) throw new Exception("expected output not found: " + log); } @Test ! public void testSourcePath(Path base) throws Exception { //note: avoiding use of java.base, as that gets special handling on some places: Path src = base.resolve("src"); ! tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element, Other { }", "package javax.lang.model.element; interface Other { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("-Xmodule:java.compiler", "-sourcepath", src.toString()) .outdir(classes) ! .files(src.resolve("javax/lang/model/element/Extra.java")) .run() .writeAll() .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); } @Test public void testClassPath(Path base) throws Exception { Path cpSrc = base.resolve("cpSrc"); --- 81,224 ---- if (!log.isEmpty()) throw new Exception("expected output not found: " + log); } @Test ! public void testCorrectXModuleMultiModule(Path base) throws Exception { //note: avoiding use of java.base, as that gets special handling on some places: Path src = base.resolve("src"); ! Path m1 = src.resolve("m1"); ! tb.writeJavaFiles(m1, "package javax.lang.model.element; public interface Extra extends Element { }"); ! Path m2 = src.resolve("m2"); ! tb.writeJavaFiles(m2, "package com.sun.source.tree; public interface Extra extends Tree { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("--patch-module", "java.compiler=" + m1.toString(), ! "--patch-module", "jdk.compiler=" + m2.toString(), ! "--module-source-path", "dummy") .outdir(classes) ! .files(findJavaFiles(src)) .run() .writeAll() .getOutput(Task.OutputKind.DIRECT); if (!log.isEmpty()) throw new Exception("expected output not found: " + log); + + checkFileExists(classes, "java.compiler/javax/lang/model/element/Extra.class"); + checkFileExists(classes, "jdk.compiler/com/sun/source/tree/Extra.class"); + } + + @Test + public void testCorrectXModuleMultiModule2(Path base) throws Exception { + //note: avoiding use of java.base, as that gets special handling on some places: + Path src = base.resolve("src"); + Path m1 = src.resolve("m1"); + tb.writeJavaFiles(m1, + "package javax.lang.model.element; public interface Extra extends Element { }"); + Path m2 = src.resolve("m2"); + tb.writeJavaFiles(m2, + "package com.sun.source.tree; public interface Extra extends Tree { }"); + Path msp = base.resolve("msp"); + Path m3 = msp.resolve("m3x"); + tb.writeJavaFiles(m3, + "module m3x { }", + "package m3; public class Test { }"); + Path m4 = msp.resolve("m4x"); + tb.writeJavaFiles(m4, + "module m4x { }", + "package m4; public class Test { }"); + Path classes = base.resolve("classes"); + tb.createDirectories(classes); + + String log = new JavacTask(tb) + .options("--patch-module", "java.compiler=" + m1.toString(), + "--patch-module", "jdk.compiler=" + m2.toString(), + "--module-source-path", msp.toString()) + .outdir(classes) + .files(findJavaFiles(src, msp)) + .run() + .writeAll() + .getOutput(Task.OutputKind.DIRECT); + + if (!log.isEmpty()) + throw new Exception("expected output not found: " + log); + + checkFileExists(classes, "java.compiler/javax/lang/model/element/Extra.class"); + checkFileExists(classes, "jdk.compiler/com/sun/source/tree/Extra.class"); + checkFileExists(classes, "m3x/m3/Test.class"); + checkFileExists(classes, "m4x/m4/Test.class"); + } + + @Test + public void testPatchModuleModuleSourcePathConflict(Path base) throws Exception { + //note: avoiding use of java.base, as that gets special handling on some places: + Path src = base.resolve("src"); + Path m1 = src.resolve("m1x"); + tb.writeJavaFiles(m1, + "module m1x { }", + "package m1; public class Test { }"); + Path m2 = src.resolve("m2x"); + tb.writeJavaFiles(m2, + "module m2x { }", + "package m2; public class Test { }"); + Path classes = base.resolve("classes"); + tb.createDirectories(classes); + + List<String> log = new JavacTask(tb) + .options("--patch-module", "m1x=" + m1.toString(), + "--patch-module", "m2x=" + m2.toString(), + "--module-source-path", src.toString(), + "-XDrawDiagnostics") + .outdir(classes) + .files(findJavaFiles(src.resolve("m1x").resolve("m1"), + src.resolve("m2x").resolve("m2"))) + .run(Expect.FAIL) + .writeAll() + .getOutputLines(Task.OutputKind.DIRECT); + + List<String> expectedOut = Arrays.asList( + "Test.java:1:1: compiler.err.file.patched.and.msp", + "Test.java:1:1: compiler.err.file.patched.and.msp", + "module-info.java:1:1: compiler.err.file.patched.and.msp", + "- compiler.err.cant.access: m2x.module-info, (compiler.misc.cant.resolve.modules)", + "4 errors" + ); + + if (!expectedOut.equals(log)) + throw new Exception("expected output not found: " + log); + } + + @Test + public void testSourcePath(Path base) throws Exception { + //note: avoiding use of java.base, as that gets special handling on some places: + Path src = base.resolve("src"); + tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element, Other { }"); + Path srcPath = base.resolve("src-path"); + tb.writeJavaFiles(srcPath, "package javax.lang.model.element; interface Other { }"); + Path classes = base.resolve("classes"); + tb.createDirectories(classes); + + List<String> log = new JavacTask(tb) + .options("--patch-module", "java.compiler=" + src.toString(), + "-sourcepath", srcPath.toString(), + "-XDrawDiagnostics") + .outdir(classes) + .files(src.resolve("javax/lang/model/element/Extra.java")) + .run(Expect.FAIL) + .writeAll() + .getOutputLines(Task.OutputKind.DIRECT); + + List<String> expectedOut = Arrays.asList( + "Extra.java:1:75: compiler.err.cant.resolve: kindname.class, Other, , ", + "1 error" + ); + + if (!expectedOut.equals(log)) + throw new Exception("expected output not found: " + log); } @Test public void testClassPath(Path base) throws Exception { Path cpSrc = base.resolve("cpSrc");
*** 122,132 **** tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element, p.Other { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("-Xmodule:java.compiler", "--class-path", cpClasses.toString(), "-XDrawDiagnostics") .outdir(classes) .files(src.resolve("javax/lang/model/element/Extra.java")) .run(Expect.FAIL) --- 241,251 ---- tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element, p.Other { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("--patch-module", "java.compiler=" + src.toString(), "--class-path", cpClasses.toString(), "-XDrawDiagnostics") .outdir(classes) .files(src.resolve("javax/lang/model/element/Extra.java")) .run(Expect.FAIL)
*** 145,168 **** @Test public void testNoModuleInfoOnSourcePath(Path base) throws Exception { //note: avoiding use of java.base, as that gets special handling on some places: Path src = base.resolve("src"); tb.writeJavaFiles(src, - "module java.compiler {}", "package javax.lang.model.element; public interface Extra { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("-XDrawDiagnostics", "-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); ! List<String> expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.xmodule.sourcepath", "1 error"); if (!expected.equals(log)) throw new Exception("expected output not found: " + log); } --- 264,290 ---- @Test public void testNoModuleInfoOnSourcePath(Path base) throws Exception { //note: avoiding use of java.base, as that gets special handling on some places: Path src = base.resolve("src"); tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra { }"); + Path srcPath = base.resolve("src-path"); + tb.writeJavaFiles(src, + "module java.compiler {}"); Path classes = base.resolve("classes"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("-XDrawDiagnostics", ! "--patch-module", "java.compiler=" + src.toString()) .outdir(classes) .files(findJavaFiles(src)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); ! List<String> expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.patched.module.sourcepath", "1 error"); if (!expected.equals(log)) throw new Exception("expected output not found: " + log); }
*** 191,261 **** tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra { }"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("-XDrawDiagnostics", "-Xmodule:java.compiler") .outdir(classes) .files(findJavaFiles(src)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); ! List<String> expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.xmodule.classpath", "1 error"); if (!expected.equals(log)) throw new Exception("expected output not found: " + log); } @Test - public void testModuleSourcePathXModule(Path base) throws Exception { - //note: avoiding use of java.base, as that gets special handling on some places: - Path src = base.resolve("src"); - tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element { }"); - Path classes = base.resolve("classes"); - tb.createDirectories(classes); - - List<String> log = new JavacTask(tb) - .options("-XDrawDiagnostics", "-Xmodule:java.compiler", "--module-source-path", src.toString()) - .outdir(classes) - .files(findJavaFiles(src)) - .run(Task.Expect.FAIL) - .writeAll() - .getOutputLines(Task.OutputKind.DIRECT); - - List<String> expected = Arrays.asList("- compiler.err.xmodule.no.module.sourcepath"); - - if (!expected.equals(log)) - throw new Exception("expected output not found: " + log); - } - - @Test - public void testXModuleTooMany(Path base) throws Exception { - //note: avoiding use of java.base, as that gets special handling on some places: - Path src = base.resolve("src"); - tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra extends Element { }"); - Path classes = base.resolve("classes"); - tb.createDirectories(classes); - - List<String> log = new JavacTask(tb, Task.Mode.CMDLINE) - .options("-XDrawDiagnostics", "-Xmodule:java.compiler", "-Xmodule:java.compiler") - .outdir(classes) - .files(findJavaFiles(src)) - .run(Task.Expect.FAIL) - .writeAll() - .getOutputLines(Task.OutputKind.DIRECT); - - List<String> expected = Arrays.asList("javac: option -Xmodule: can only be specified once", - "Usage: javac <options> <source files>", - "use --help for a list of possible options"); - - if (!expected.equals(log)) - throw new Exception("expected output not found: " + log); - } - - @Test public void testWithModulePath(Path base) throws Exception { Path modSrc = base.resolve("modSrc"); Path modules = base.resolve("modules"); new ModuleBuilder(tb, "m1") .classes("package pkg1; public interface E { }") --- 313,338 ---- tb.writeJavaFiles(src, "package javax.lang.model.element; public interface Extra { }"); tb.createDirectories(classes); List<String> log = new JavacTask(tb) ! .options("-XDrawDiagnostics", ! "--patch-module", "java.compiler=" + src.toString()) .outdir(classes) .files(findJavaFiles(src)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); ! List<String> expected = Arrays.asList("Extra.java:1:1: compiler.err.module-info.with.patched.module.classpath", "1 error"); if (!expected.equals(log)) throw new Exception("expected output not found: " + log); } @Test public void testWithModulePath(Path base) throws Exception { Path modSrc = base.resolve("modSrc"); Path modules = base.resolve("modules"); new ModuleBuilder(tb, "m1") .classes("package pkg1; public interface E { }")
*** 264,274 **** Path src = base.resolve("src"); tb.writeJavaFiles(src, "package p; interface A extends pkg1.E { }"); new JavacTask(tb, Task.Mode.CMDLINE) .options("--module-path", modules.toString(), ! "-Xmodule:m1") .files(findJavaFiles(src)) .run() .writeAll(); //checks module bounds still exist --- 341,351 ---- Path src = base.resolve("src"); tb.writeJavaFiles(src, "package p; interface A extends pkg1.E { }"); new JavacTask(tb, Task.Mode.CMDLINE) .options("--module-path", modules.toString(), ! "--patch-module", "m1=" + src.toString()) .files(findJavaFiles(src)) .run() .writeAll(); //checks module bounds still exist
*** 280,290 **** tb.writeJavaFiles(src2, "package p; interface A extends pkg2.D { }"); List<String> log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "--module-path", modules.toString(), ! "-Xmodule:m1") .files(findJavaFiles(src2)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT); --- 357,367 ---- tb.writeJavaFiles(src2, "package p; interface A extends pkg2.D { }"); List<String> log = new JavacTask(tb, Task.Mode.CMDLINE) .options("-XDrawDiagnostics", "--module-path", modules.toString(), ! "--patch-module", "m1=" + src2.toString()) .files(findJavaFiles(src2)) .run(Task.Expect.FAIL) .writeAll() .getOutputLines(Task.OutputKind.DIRECT);
*** 313,323 **** tb.writeJavaFiles(src, "package p; interface A extends pkg1.D { }"); new JavacTask(tb, Task.Mode.CMDLINE) .options("--module-path", modules.toString(), "--upgrade-module-path", upgrade.toString(), ! "-Xmodule:m1") .files(findJavaFiles(src)) .run() .writeAll(); } --- 390,400 ---- tb.writeJavaFiles(src, "package p; interface A extends pkg1.D { }"); new JavacTask(tb, Task.Mode.CMDLINE) .options("--module-path", modules.toString(), "--upgrade-module-path", upgrade.toString(), ! "--patch-module", "m1=" + src.toString()) .files(findJavaFiles(src)) .run() .writeAll(); }
*** 363,373 **** tb.writeJavaFiles(src, "package m; public class Extra { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("-Xmodule:m", "--class-path", classPath.toString(), "--source-path", sourcePath.toString(), "--module-path", modulePath.toString(), "--processor-path", System.getProperty("test.classes"), "-XDaccessInternalAPI=true", --- 440,450 ---- tb.writeJavaFiles(src, "package m; public class Extra { }"); Path classes = base.resolve("classes"); tb.createDirectories(classes); String log = new JavacTask(tb) ! .options("--patch-module", "m=" + sourcePath.toString(), "--class-path", classPath.toString(), "--source-path", sourcePath.toString(), "--module-path", modulePath.toString(), "--processor-path", System.getProperty("test.classes"), "-XDaccessInternalAPI=true",
*** 417,422 **** --- 494,506 ---- throw new AssertionError(msg); } } } + private void checkFileExists(Path dir, String path) { + Path toCheck = dir.resolve(path.replace("/", dir.getFileSystem().getSeparator())); + + if (!Files.exists(toCheck)) { + throw new AssertionError(toCheck.toString() + " does not exist!"); + } + } }
< prev index next >