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; + } }