langtools/test/tools/javadoc/doclint/DocLintTest.java
changeset 31752 a4ea4c9bce2f
parent 30730 d3ce7619db2c
--- a/langtools/test/tools/javadoc/doclint/DocLintTest.java	Mon Jul 13 16:57:52 2015 +0400
+++ b/langtools/test/tools/javadoc/doclint/DocLintTest.java	Mon Jul 13 16:33:42 2015 +0200
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8004834 8007610
+ * @bug 8004834 8007610 8129909
  * @summary Add doclint support into javadoc
  * @modules jdk.compiler/com.sun.tools.javac.main
  */
@@ -59,7 +59,7 @@
 
     DocumentationTool javadoc;
     StandardJavaFileManager fm;
-    JavaFileObject file;
+    Iterable<? extends JavaFileObject> files;
 
     final String code =
         /* 01 */    "/** Class comment. */\n" +
@@ -77,6 +77,20 @@
         /* 13 */    "    public int emptyReturn() { return 0; }\n" +
         /* 14 */    "}\n";
 
+    final String p1Code =
+        /* 01 */    "package p1;\n" +
+        /* 02 */    "public class P1Test {\n" +
+        /* 03 */    "    /** Syntax < error. */\n" +
+        /* 04 */    "    public void method() { }\n" +
+        /* 05 */    "}\n";
+
+    final String p2Code =
+        /* 01 */    "package p2;\n" +
+        /* 02 */    "public class P2Test {\n" +
+        /* 03 */    "    /** Syntax < error. */\n" +
+        /* 04 */    "    public void method() { }\n" +
+        /* 05 */    "}\n";
+
     private final String rawDiags = "-XDrawDiagnostics";
 
     private enum Message {
@@ -85,6 +99,9 @@
         DL_ERR9(ERROR, "Test.java:9:14: compiler.err.proc.messager: reference not found"),
         DL_WRN12(WARNING, "Test.java:12:9: compiler.warn.proc.messager: no description for @return"),
 
+        DL_ERR_P1TEST(ERROR, "P1Test.java:3:16: compiler.err.proc.messager: malformed HTML"),
+        DL_ERR_P2TEST(ERROR, "P2Test.java:3:16: compiler.err.proc.messager: malformed HTML"),
+
         // doclint messages when -XDrawDiagnostics is not in effect
         DL_ERR9A(ERROR, "Test.java:9: error: reference not found"),
         DL_WRN12A(WARNING, "Test.java:12: warning: no description for @return"),
@@ -95,7 +112,8 @@
 
         // javadoc messages for bad options
         OPT_BADARG(ERROR, "javadoc: error - Invalid argument for -Xdoclint option"),
-        OPT_BADQUAL(ERROR, "javadoc: error - Access qualifiers not permitted for -Xdoclint arguments");
+        OPT_BADQUAL(ERROR, "javadoc: error - Access qualifiers not permitted for -Xdoclint arguments"),
+        OPT_BADPACKAGEARG(ERROR, "javadoc: error - Invalid argument for -Xdoclint/package option");
 
         final Diagnostic.Kind kind;
         final String text;
@@ -124,12 +142,7 @@
         fm = javadoc.getStandardFileManager(null, null, null);
         try {
             fm.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(new File(".")));
-            file = new SimpleJavaFileObject(URI.create("Test.java"), JavaFileObject.Kind.SOURCE) {
-                @Override
-                public CharSequence getCharContent(boolean ignoreEncoding) {
-                    return code;
-                }
-            };
+            files = Arrays.asList(new TestJFO("Test.java", code));
 
             test(Collections.<String>emptyList(),
                     Main.Result.ERROR,
@@ -175,6 +188,21 @@
                     Main.Result.ERROR,
                     EnumSet.of(Message.OPT_BADARG));
 
+            files = Arrays.asList(new TestJFO("p1/P1Test.java", p1Code),
+                                  new TestJFO("p2/P2Test.java", p2Code));
+
+            test(Arrays.asList(rawDiags),
+                    Main.Result.ERROR,
+                    EnumSet.of(Message.DL_ERR_P1TEST, Message.DL_ERR_P2TEST));
+
+            test(Arrays.asList(rawDiags, "-Xdoclint/package:p1"),
+                    Main.Result.ERROR,
+                    EnumSet.of(Message.DL_ERR_P1TEST));
+
+            test(Arrays.asList(rawDiags, "-Xdoclint/package:*p"),
+                    Main.Result.ERROR,
+                    EnumSet.of(Message.OPT_BADPACKAGEARG));
+
             if (errors > 0)
                 throw new Exception(errors + " errors occurred");
         } finally {
@@ -186,7 +214,6 @@
         System.err.println("test: " + opts);
         StringWriter sw = new StringWriter();
         PrintWriter pw = new PrintWriter(sw);
-        List<JavaFileObject> files = Arrays.asList(file);
         try {
             DocumentationTask t = javadoc.getTask(pw, fm, null, null, opts, files);
             boolean ok = t.call();
@@ -257,4 +284,19 @@
     }
 
     int errors;
+
+    class TestJFO extends SimpleJavaFileObject {
+
+        private final String content;
+
+        public TestJFO(String fileName, String content) {
+            super(URI.create(fileName), JavaFileObject.Kind.SOURCE);
+            this.content = content;
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncoding) {
+            return content;
+        }
+    };
 }