test/jdk/javadoc/tool/6227454/Test.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 27,54 ****
* @summary package.html and overview.html may not be read fully
* @modules jdk.javadoc
*/
import java.io.*;
! import com.sun.javadoc.Doclet;
! import com.sun.javadoc.RootDoc;
! public class Test extends Doclet {
public static void main(String... args) throws Exception {
new Test().run();
}
void run() throws Exception {
test("<body>ABC XYZ</body>");
test("<body>ABC XYZ</BODY>");
test("<BODY>ABC XYZ</body>");
test("<BODY>ABC XYZ</BODY>");
test("<BoDy>ABC XYZ</bOdY>");
- test(" ABC XYZ</bOdY>", "Body tag missing from HTML");
- test("<body>ABC XYZ ", "Close body tag missing from HTML");
- test(" ABC XYZ ", "Body tag missing from HTML");
test("<body>ABC" + bigText(8192, 40) + "XYZ</body>");
if (errors > 0)
throw new Exception(errors + " errors occurred");
}
--- 27,66 ----
* @summary package.html and overview.html may not be read fully
* @modules jdk.javadoc
*/
import java.io.*;
+ import java.util.Arrays;
! import java.util.HashSet;
! import java.util.ListIterator;
! import java.util.Locale;
! import java.util.Set;
! import javax.lang.model.SourceVersion;
! import javax.lang.model.element.Element;
!
! import com.sun.source.doctree.DocCommentTree;
! import com.sun.source.util.DocTrees;
! import jdk.javadoc.doclet.Doclet;
! import jdk.javadoc.doclet.Reporter;
! import jdk.javadoc.doclet.DocletEnvironment;
!
!
! public class Test implements Doclet {
public static void main(String... args) throws Exception {
new Test().run();
}
+ File referenceFile = new File("Foo.java");
+
void run() throws Exception {
test("<body>ABC XYZ</body>");
test("<body>ABC XYZ</BODY>");
test("<BODY>ABC XYZ</body>");
test("<BODY>ABC XYZ</BODY>");
test("<BoDy>ABC XYZ</bOdY>");
test("<body>ABC" + bigText(8192, 40) + "XYZ</body>");
if (errors > 0)
throw new Exception(errors + " errors occurred");
}
*** 56,92 ****
void test(String body) throws IOException {
test(body, null);
}
void test(String body, String expectError) throws IOException {
String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+ "\"http://www.w3.org/TR/html4/loose.dtd\">";
String headTag = "<head><title>Title </title></head>";
String text = docType + "<html>" + headTag + body + "</html>";
testNum++;
System.err.println("test " + testNum);
File file = writeFile("overview" + testNum + ".html", text);
String thisClassName = Test.class.getName();
- File testSrc = new File(System.getProperty("test.src"));
String[] args = {
"-bootclasspath",
System.getProperty("java.class.path")
+ File.pathSeparator
+ System.getProperty("sun.boot.class.path"),
"-classpath", ".",
"-package",
"-overview", file.getPath(),
! new File(testSrc, thisClassName + ".java").getPath()
};
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
! int rc = com.sun.tools.javadoc.Main.execute(
! "javadoc",
! pw, pw, pw,
! thisClassName,
! args);
pw.close();
String out = sw.toString();
if (!out.isEmpty())
System.err.println(out);
System.err.println("javadoc exit: rc=" + rc);
--- 68,105 ----
void test(String body) throws IOException {
test(body, null);
}
void test(String body, String expectError) throws IOException {
+ if (!referenceFile.exists()) {
+ writeFile(referenceFile.getName(), "public class Foo {}");
+ }
String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+ "\"http://www.w3.org/TR/html4/loose.dtd\">";
String headTag = "<head><title>Title </title></head>";
String text = docType + "<html>" + headTag + body + "</html>";
testNum++;
System.err.println("test " + testNum);
File file = writeFile("overview" + testNum + ".html", text);
String thisClassName = Test.class.getName();
String[] args = {
"-bootclasspath",
System.getProperty("java.class.path")
+ File.pathSeparator
+ System.getProperty("sun.boot.class.path"),
"-classpath", ".",
+ "-docletpath", System.getProperty("test.classes"),
+ "-doclet", thisClassName,
"-package",
"-overview", file.getPath(),
! "-sourcepath", ".",
! referenceFile.getPath()
};
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
! int rc = jdk.javadoc.internal.tool.Main.execute(args, pw);
pw.close();
String out = sw.toString();
if (!out.isEmpty())
System.err.println(out);
System.err.println("javadoc exit: rc=" + rc);
*** 129,140 ****
}
int testNum;
int errors;
! public static boolean start(RootDoc root) {
! String text = root.commentText();
if (text.length() < 64)
System.err.println("text: '" + text + "'");
else
System.err.println("text: '"
+ text.substring(0, 20)
--- 142,164 ----
}
int testNum;
int errors;
! public boolean run(DocletEnvironment root) {
! DocTrees docTrees = root.getDocTrees();
! System.out.println("classes:" + root.getIncludedClasses());
!
! Element klass = root.getIncludedClasses().iterator().next();
! String text = "";
! try {
! DocCommentTree dcTree = docTrees.getDocCommentTree(klass, overviewpath);
! text = dcTree.getFullBody().toString();
! } catch (IOException ioe) {
! throw new Error(ioe);
! }
!
if (text.length() < 64)
System.err.println("text: '" + text + "'");
else
System.err.println("text: '"
+ text.substring(0, 20)
*** 141,146 ****
--- 165,234 ----
+ "..."
+ text.substring(text.length() - 20)
+ "'");
return text.startsWith("ABC") && text.endsWith("XYZ");
}
+
+ @Override
+ public String getName() {
+ return "Test";
+ }
+
+ private String overviewpath;
+
+ @Override
+ public Set<Option> getSupportedOptions() {
+ Option[] options = {
+ new Option() {
+
+ @Override
+ public int getArgumentCount() {
+ return 1;
+ }
+
+ @Override
+ public String getDescription() {
+ return "overview";
+ }
+
+ @Override
+ public Option.Kind getKind() {
+ return Option.Kind.STANDARD;
+ }
+
+ @Override
+ public String getName() {
+ return "overview";
+ }
+
+ @Override
+ public String getParameters() {
+ return "url";
+ }
+
+ @Override
+ public boolean matches(String option) {
+ String opt = option.startsWith("-") ? option.substring(1) : option;
+ return getName().equals(opt);
+ }
+
+ @Override
+ public boolean process(String option, ListIterator<String> arguments) {
+ if (matches(option)) {
+ overviewpath = arguments.next();
+ }
+ return true;
+ }
+ }
+ };
+ return new HashSet<Option>(Arrays.asList(options));
+ }
+
+ @Override
+ public SourceVersion getSupportedSourceVersion() {
+ return SourceVersion.latest();
+ }
+
+ public void init(Locale locale, Reporter reporter) {
+ return;
+ }
}