/* * Copyright (c) 2002, 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. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @bug 4720957 5020118 8026567 8038976 * @summary Test to make sure that -link and -linkoffline link to * right files, and URLs with and without trailing slash are accepted. * @author jamieh * @library ../lib * @modules jdk.javadoc * @build JavadocTester * @run main TestLinkOption */ import java.io.File; public class TestLinkOption extends JavadocTester { /** * The entry point of the test. * @param args the array of command line arguments. */ public static void main(String... args) throws Exception { TestLinkOption tester = new TestLinkOption(); tester.runTests(); } // The following test runs javadoc multiple times; it is important that the // first one is run first, since the subsequent runs refer to the output // it generates. Therefore we run everything serially in a single @Test // method and not in independent @Test methods. @Test void test() { // Generate the documentation using -linkoffline and a URL as the first parameter. String out1 = "out1"; String url = "http://java.sun.com/j2se/1.4/docs/api/"; javadoc("-d", out1, "-sourcepath", testSrc, "-linkoffline", url, testSrc, "-package", "pkg", "java.lang"); checkExit(Exit.OK); checkOutput("pkg/C.html", true, "Link to String Class", //Make sure the parameters are indented properly when the -link option is used. "(int p1,\n" + " int p2,\n" + " int p3)", "(int p1,\n" + " int p2,\n" + " " + "Object p3)"); checkOutput("pkg/B.html", true, "
A method with html tag the method " + "getSystemClassLoader()" + " as the parent class loader.
", "
is equivalent to invoking " + "" + "createTempFile(prefix, suffix, null).
", "Link-Plain to String Class", "getSystemClassLoader()", "createTempFile(prefix, suffix, null)", "
RFC 2279: UTF-8, a\n" + " transformation format of ISO 10646,
RFC 2373: IPv6 Addressing\n" + " Architecture,
" + "RFC 2396: Uniform\n" + " Resource Identifiers (URI): Generic Syntax, " + "
RFC 2732: Format for\n" + " Literal IPv6 Addresses in URLs,
" + "URISyntaxException
\n" + ""); checkOutput("java/lang/StringBuilderChild.html", true, "
public abstract class StringBuilderChild\n"
                + "extends Object
" ); // Generate the documentation using -linkoffline and a relative path as the first parameter. // We will try linking to the docs generated in test 1 with a relative path. String out2 = "out2"; javadoc("-d", out2, "-sourcepath", testSrc, "-linkoffline", "../" + out1, out1, "-package", "pkg2"); checkExit(Exit.OK); checkOutput("pkg2/C2.html", true, "This is a link to Class C." ); String out3 = "out3"; javadoc(createArguments(out3, out1, true)); // with trailing slash checkExit(Exit.OK); String out4 = "out4"; javadoc(createArguments(out4, out1, false)); // without trailing slash checkExit(Exit.OK); // Note: the following test is very weak, and will fail if ever the test // of the message is changed. We should have a separate test to verify // this is the text that is given when there is a problem with a URL checkOutput(Output.OUT, false, "warning - Error fetching URL"); } /* * Create the documentation using the -link option, vary the behavior with * both trailing and no trailing slash. We are only interested in ensuring * that the command executes with no errors or related warnings. */ static String[] createArguments(String outDir, String packageDir, boolean withTrailingSlash) { String packagePath = new File(packageDir).getAbsolutePath(); if (withTrailingSlash) { // add the trailing slash, if it is not present! if (!packagePath.endsWith(FS)) { packagePath = packagePath + FS; } } else { // remove the trailing slash, if it is present! if (packagePath.endsWith(FS)) { packagePath = packagePath.substring(0, packagePath.length() - 1); } } String args[] = { "-d", outDir, "-sourcepath", testSrc, "-link", "file:///" + packagePath, "-package", "pkg2" }; System.out.println("packagePath: " + packagePath); return args; } }