langtools/test/tools/javadoc/8025693/Test.java
author jjg
Mon, 14 Oct 2013 22:34:37 -0700
changeset 21020 591de6ab30f4
child 30730 d3ce7619db2c
permissions -rw-r--r--
8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail Reviewed-by: darcy
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21020
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     1
/*
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     2
 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     4
 *
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     7
 * published by the Free Software Foundation.
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     8
 *
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    13
 * accompanied this code).
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    14
 *
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    18
 *
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    21
 * questions.
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    22
 */
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    23
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    24
/*
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    25
 * @test
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    26
 * @bug 8025693
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    27
 * @summary javadoc should ignore <clinit> methods found in classes on classpath
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    28
 */
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    29
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    30
import java.io.*;
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    31
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    32
public class Test {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    33
    public static void main(String[] args) throws Exception {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    34
        new Test().run();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    35
    }
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    36
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    37
    final File baseFile = new File("src/Base.java");
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    38
    final String baseText =
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    39
        "package p;\n" +
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    40
        "public class Base { static { } }\n";
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    41
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    42
    final File srcFile = new File("src/C.java");
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    43
    final String srcText =
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    44
        "package p;\n" +
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    45
        "/** comment */\n" +
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    46
        "public abstract class C extends Base { }\n";
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    47
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    48
    void run() throws Exception {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    49
        File classesDir = new File("classes");
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    50
        classesDir.mkdirs();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    51
        writeFile(baseFile, baseText);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    52
        String[] javacArgs = {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    53
            "-d", classesDir.getPath(),
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    54
            baseFile.getPath()
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    55
        };
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    56
        com.sun.tools.javac.Main.compile(javacArgs);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    57
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    58
        writeFile(srcFile, srcText);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    59
        String[] args = {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    60
            "-d", "api",
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    61
            "-classpath", classesDir.getPath(),
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    62
            "-package", "p",
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    63
            srcFile.getPath()
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    64
        };
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    65
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    66
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    67
        PrintStream ps = new PrintStream(baos);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    68
        PrintStream prev = System.err;
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    69
        System.setErr(ps);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    70
        try {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    71
            int rc = com.sun.tools.javadoc.Main.execute(args);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    72
        } finally {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    73
            System.err.flush();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    74
            System.setErr(prev);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    75
        }
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    76
        String out = baos.toString();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    77
        System.out.println(out);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    78
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    79
        String errorMessage = "java.lang.IllegalArgumentException: <clinit>";
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    80
        if (out.contains(errorMessage))
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    81
            throw new Exception("error message found: " + errorMessage);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    82
    }
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    83
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    84
    void writeFile(File file, String body) throws IOException {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    85
        file.getParentFile().mkdirs();
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    86
        try (FileWriter out = new FileWriter(file)) {
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    87
            out.write(body);
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    88
        }
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    89
    }
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    90
}
591de6ab30f4 8025693: recent javadoc changes cause com/sun/javadoc/testLinkOption/TestLinkOption.java to fail
jjg
parents:
diff changeset
    91