001ebb3a72
Initial integration of JEP 200, JEP 260, JEP 261, and JEP 282 Co-authored-by: Alex Buckley <alex.buckley@oracle.com> Co-authored-by: Jonathan Gibbons <jonathan.gibbons@oracle.com> Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com> Co-authored-by: Mandy Chung <mandy.chung@oracle.com> Co-authored-by: Mark Reinhold <mark.reinhold@oracle.com> Co-authored-by: Jan Lahoda <jan.lahoda@oracle.com> Co-authored-by: Vicente Romero <vicente.romero@oracle.com> Co-authored-by: Andreas Lundblad <andreas.lundblad@oracle.com> Co-authored-by: Andrey Nazarov <andrey.x.nazarov@oracle.com> Co-authored-by: Chris Hegarty <chris.hegarty@oracle.com> Co-authored-by: Erik Joelsson <erik.joelsson@oracle.com> Co-authored-by: Kumar Srinivasan <kumar.x.srinivasan@oracle.com> Co-authored-by: Sundararajan Athijegannathan <sundararajan.athijegannathan@oracle.com> Reviewed-by: jjg, jlahoda, vromero, mcimadamore, bpatel, ksrini, darcy, anazarov, dfuchs
146 lines
5.9 KiB
Java
146 lines
5.9 KiB
Java
/*
|
|
* Copyright (c) 2002, 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.
|
|
*
|
|
* 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() {
|
|
String mylib = "mylib";
|
|
String[] javacArgs = {
|
|
"-d", mylib, testSrc + "/extra/StringBuilder.java"
|
|
};
|
|
com.sun.tools.javac.Main.compile(javacArgs);
|
|
|
|
// Generate the documentation using -linkoffline and a URL as the first parameter.
|
|
String out1 = "out1";
|
|
String url = "http://acme.com/jdk/";
|
|
javadoc("-d", out1,
|
|
"-classpath", mylib,
|
|
"-sourcepath", testSrc,
|
|
"-linkoffline", url, testSrc + "/jdk",
|
|
"-package",
|
|
"pkg", "mylib.lang");
|
|
checkExit(Exit.OK);
|
|
|
|
checkOutput("pkg/C.html", true,
|
|
"<a href=\"" + url + "java/lang/String.html?is-external=true\" "
|
|
+ "title=\"class or interface in java.lang\"><code>Link to String Class</code></a>",
|
|
//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"
|
|
+ " <a href=\"" + url + "java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">"
|
|
+ "Object</a> p3)");
|
|
|
|
checkOutput("mylib/lang/StringBuilderChild.html", true,
|
|
"<pre>public abstract class <span class=\"typeNameLabel\">StringBuilderChild</span>\n"
|
|
+ "extends <a href=\"" + url + "java/lang/Object.html?is-external=true\" "
|
|
+ "title=\"class or interface in java.lang\">Object</a></pre>"
|
|
);
|
|
|
|
// 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 <a href=\"../../" + out1 + "/pkg/C.html?is-external=true\" " +
|
|
"title=\"class or interface in pkg\"><code>Class C</code></a>."
|
|
);
|
|
|
|
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 text
|
|
// 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.WARNING, 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;
|
|
}
|
|
}
|