test/langtools/jdk/javadoc/doclet/testModules/TestModulePackages.java
author jjg
Wed, 07 Feb 2018 11:28:23 -0800
changeset 48759 ffa68af7da87
parent 48340 959f2f7cbaa6
child 50167 cc705c956798
permissions -rw-r--r--
8195795: Organize output files by module/package, not just package Reviewed-by: ksrini, mchung, erikj
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     1
/*
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
     2
 * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     4
 *
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     7
 * published by the Free Software Foundation.
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     8
 *
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    13
 * accompanied this code).
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    14
 *
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    18
 *
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    21
 * questions.
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    22
 */
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    23
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    24
/*
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    25
 * @test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    26
 * @bug 8178070
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    27
 * @summary Test packages table in module summary pages
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    28
 * @library /tools/lib ../lib
48340
959f2f7cbaa6 8193525: Intermittent failures of TestModulePackages.java
jjg
parents: 48325
diff changeset
    29
 * @modules jdk.compiler/com.sun.tools.javac.api
959f2f7cbaa6 8193525: Intermittent failures of TestModulePackages.java
jjg
parents: 48325
diff changeset
    30
 *          jdk.compiler/com.sun.tools.javac.main
959f2f7cbaa6 8193525: Intermittent failures of TestModulePackages.java
jjg
parents: 48325
diff changeset
    31
 *          jdk.javadoc/jdk.javadoc.internal.tool
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    32
 * @build toolbox.ModuleBuilder toolbox.ToolBox JavadocTester
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    33
 * @run main TestModulePackages
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    34
 */
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    35
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    36
import java.io.IOException;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    37
import java.nio.file.Path;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    38
import java.nio.file.Paths;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    39
import java.util.Set;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    40
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    41
import toolbox.ModuleBuilder;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    42
import toolbox.ToolBox;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    43
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    44
public class TestModulePackages extends JavadocTester {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    45
    enum TabKind { EXPORTS, OPENS, CONCEALED };
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    46
    enum ColKind { EXPORTED_TO, OPENED_TO };
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    47
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    48
    public static void main(String... args) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    49
        TestModulePackages tester = new TestModulePackages();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    50
        tester.runTests(m -> new Object[] { Paths.get(m.getName()) });
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    51
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    52
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    53
    private final ToolBox tb;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    54
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    55
    public TestModulePackages() {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    56
        tb = new ToolBox();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    57
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    58
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    59
    // @Test: See: https://bugs.openjdk.java.net/browse/JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    60
    public void empty(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    61
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    62
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    63
                .comment("empty module")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    64
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    65
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    66
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    67
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    68
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    69
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    70
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    71
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    72
        checkExit(Exit.OK);
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
    73
        checkOutput("m/module-summary.html", false,
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    74
                "<h3>Packages</h3>\n"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    75
                + "<table class=\"packagesSummary\" summary=\"Packages table, "
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    76
                + "listing packages, and an explanation\">");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    77
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    78
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    79
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    80
    public void exportSingle(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    81
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    82
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    83
                .comment("exports single package to all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    84
                .exports("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    85
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    86
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    87
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    88
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    89
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    90
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    91
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    92
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    93
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    94
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    95
        checkCaption("m", TabKind.EXPORTS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    96
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    97
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    98
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
    99
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   100
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   101
    public void exportMultiple(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   102
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   103
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   104
                .comment("exports multiple packages to all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   105
                .exports("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   106
                .exports("q")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   107
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   108
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   109
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   110
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   111
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   112
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   113
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   114
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   115
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   116
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   117
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   118
        checkCaption("m", TabKind.EXPORTS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   119
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   120
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   121
        checkPackageRow("m", "q", "i1", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   122
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   123
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   124
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   125
    public void exportSomeQualified(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   126
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   127
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   128
                .comment("exports multiple packages, some qualified")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   129
                .exports("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   130
                .exportsTo("q", "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   131
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   132
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   133
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   134
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   135
        new ModuleBuilder(tb, "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   136
                .comment("dummy module for target of export")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   137
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   138
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   139
        javadoc("-d", base.resolve("out-api").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   140
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   141
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   142
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   143
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   144
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   145
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   146
        checkCaption("m", TabKind.EXPORTS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   147
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   148
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   149
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   150
        javadoc("-d", base.resolve("out-all").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   151
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   152
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   153
                "--show-module-contents", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   154
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   155
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   156
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   157
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   158
        checkCaption("m", TabKind.EXPORTS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   159
        checkTableHead("m", ColKind.EXPORTED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   160
        checkPackageRow("m", "p", "i0", "All Modules", null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   161
        checkPackageRow("m", "q", "i1",
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   162
                "<a href=\"../other/module-summary.html\">other</a>", null, "&nbsp;");
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   163
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   164
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   165
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   166
    public void exportWithConcealed(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   167
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   168
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   169
                .comment("exports package, has concealed package")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   170
                .exports("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   171
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   172
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   173
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   174
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   175
        javadoc("-d", base.resolve("out-api").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   176
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   177
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   178
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   179
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   180
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   181
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   182
        checkCaption("m", TabKind.EXPORTS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   183
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   184
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   185
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   186
        javadoc("-d", base.resolve("out-all").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   187
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   188
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   189
                "--show-module-contents", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   190
                "--show-packages", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   191
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   192
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   193
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   194
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   195
        checkCaption("m", TabKind.EXPORTS, TabKind.CONCEALED);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   196
        checkTableHead("m", ColKind.EXPORTED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   197
        checkPackageRow("m", "p", "i0", "All Modules", null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   198
        checkPackageRow("m", "q", "i1", "None", null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   199
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   200
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   201
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   202
    public void exportOpenWithConcealed(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   203
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   204
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   205
                .comment("exports and opens qual and unqual, with concealed")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   206
                .exports("e.all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   207
                .exportsTo("e.other", "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   208
                .opens("o.all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   209
                .opensTo("o.other", "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   210
                .exports("eo")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   211
                .opens("eo")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   212
                .classes("package e.all; public class CEAll { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   213
                .classes("package e.other; public class CEOther { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   214
                .classes("package o.all; public class COAll { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   215
                .classes("package o.other; public class COOther { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   216
                .classes("package eo; public class CEO { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   217
                .classes("package c; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   218
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   219
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   220
        new ModuleBuilder(tb, "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   221
                .comment("dummy module for target of export and open")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   222
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   223
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   224
        javadoc("-d", base.resolve("out-api").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   225
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   226
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   227
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   228
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   229
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   230
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   231
        checkCaption("m", TabKind.EXPORTS, TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   232
        checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   233
        checkPackageRow("m", "e.all", "i0", "All Modules", "None", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   234
        checkPackageRow("m", "eo", "i1", "All Modules", "All Modules", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   235
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   236
        javadoc("-d", base.resolve("out-all").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   237
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   238
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   239
                "--show-module-contents", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   240
                "--show-packages", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   241
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   242
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   243
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   244
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   245
        checkCaption("m", TabKind.EXPORTS, TabKind.OPENS, TabKind.CONCEALED);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   246
        checkTableHead("m", ColKind.EXPORTED_TO, ColKind.OPENED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   247
        checkPackageRow("m", "c", "i0", "None", "None", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   248
        checkPackageRow("m", "e.all", "i1", "All Modules", "None", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   249
        checkPackageRow("m", "e.other", "i2",
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   250
                "<a href=\"../other/module-summary.html\">other</a>", "None", "&nbsp;");
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   251
        checkPackageRow("m", "eo", "i3", "All Modules", "All Modules", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   252
        checkPackageRow("m", "o.all", "i4", "None", "All Modules", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   253
        checkPackageRow("m", "o.other", "i5", "None",
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   254
                "<a href=\"../other/module-summary.html\">other</a>", "&nbsp;");
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   255
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   256
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   257
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   258
    public void openModule(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   259
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   260
        new ModuleBuilder(tb, true, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   261
                .comment("open module")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   262
                .classes("/** implicitly open package */ package p;")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   263
                .classes("package p; public class C { } ")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   264
                .classes("/** implicitly open package */ package q;")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   265
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   266
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   267
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   268
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   269
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   270
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   271
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   272
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   273
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   274
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   275
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   276
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   277
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   278
        checkPackageRow("m", "p", "i0", null, null,
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   279
                "\n<div class=\"block\">implicitly open package</div>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   280
        checkPackageRow("m", "q", "i1", null, null,
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   281
                "\n<div class=\"block\">implicitly open package</div>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   282
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   283
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   284
    public void openSingle(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   285
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   286
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   287
                .comment("opens single package to all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   288
                .opens("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   289
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   290
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   291
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   292
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   293
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   294
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   295
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   296
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   297
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   298
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   299
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   300
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   301
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   302
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   303
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   304
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   305
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   306
    public void openMultiple(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   307
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   308
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   309
                .comment("opens multiple packages to all")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   310
                .opens("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   311
                .opens("q")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   312
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   313
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   314
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   315
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   316
        javadoc("-d", base.resolve("out").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   317
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   318
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   319
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   320
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   321
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   322
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   323
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   324
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   325
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   326
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   327
        checkPackageRow("m", "q", "i1", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   328
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   329
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   330
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   331
    public void openSomeQualified(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   332
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   333
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   334
                .comment("opens multiple packages, some qualified")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   335
                .opens("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   336
                .opensTo("q", "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   337
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   338
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   339
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   340
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   341
        new ModuleBuilder(tb, "other")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   342
                .comment("dummy module for target of export")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   343
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   344
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   345
        javadoc("-d", base.resolve("out-api").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   346
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   347
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   348
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   349
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   350
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   351
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   352
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   353
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   354
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   355
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   356
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   357
        javadoc("-d", base.resolve("out-all").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   358
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   359
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   360
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   361
                "--show-module-contents", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   362
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   363
                "--module", "m,other");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   364
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   365
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   366
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   367
        checkTableHead("m", ColKind.OPENED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   368
        checkPackageRow("m", "p", "i0", null, "All Modules", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   369
        checkPackageRow("m", "q", "i1", null,
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   370
                "<a href=\"../other/module-summary.html\">other</a>", "&nbsp;");
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   371
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   372
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   373
    @Test
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   374
    public void openWithConcealed(Path base) throws Exception {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   375
        Path src = base.resolve("src");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   376
        new ModuleBuilder(tb, "m")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   377
                .comment("opens package, has concealed package")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   378
                .opens("p")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   379
                .classes("package p; public class C { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   380
                .classes("package q; public class D { }")
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   381
                .write(src);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   382
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   383
        javadoc("-d", base.resolve("out-api").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   384
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   385
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   386
                "--show-packages", "all",  // required, to show open packages; see JDK-8193107
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   387
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   388
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   389
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   390
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   391
        checkCaption("m", TabKind.OPENS);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   392
        checkTableHead("m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   393
        checkPackageRow("m", "p", "i0", null, null, "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   394
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   395
        javadoc("-d", base.resolve("out-all").toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   396
                "-quiet",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   397
                "-noindex",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   398
                "--show-module-contents", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   399
                "--show-packages", "all",
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   400
                "--module-source-path", src.toString(),
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   401
                "--module", "m");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   402
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   403
        checkExit(Exit.OK);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   404
        checkCaption("m", TabKind.OPENS, TabKind.CONCEALED);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   405
        checkTableHead("m", ColKind.OPENED_TO);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   406
        checkPackageRow("m", "p", "i0", null, "All Modules", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   407
        checkPackageRow("m", "q", "i1", null, "None", "&nbsp;");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   408
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   409
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   410
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   411
    private void checkCaption(String moduleName, TabKind... kinds) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   412
        String expect;
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   413
        if (kinds.length > 1) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   414
            Set<TabKind> kindSet = Set.of(kinds);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   415
            StringBuilder sb = new StringBuilder();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   416
            sb.append("<caption>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   417
                        + "<span id=\"t0\" class=\"activeTableTab\">"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   418
                        + "<span>All Packages</span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   419
                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   420
            if (kindSet.contains(TabKind.EXPORTS)) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   421
                sb.append("<span id=\"t1\" class=\"tableTab\">"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   422
                        + "<span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   423
                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   424
            }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   425
            if (kindSet.contains(TabKind.OPENS)) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   426
                sb.append("<span id=\"t2\" class=\"tableTab\">"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   427
                        + "<span><a href=\"javascript:showPkgs(2);\">Opens</a></span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   428
                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   429
            }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   430
            if (kindSet.contains(TabKind.CONCEALED)) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   431
                sb.append("<span id=\"t3\" class=\"tableTab\"><span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   432
                        + "<a href=\"javascript:showPkgs(4);\">Concealed</a></span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   433
                        + "<span class=\"tabEnd\">&nbsp;</span></span>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   434
            }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   435
            sb.append("</caption>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   436
            expect = sb.toString();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   437
        } else {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   438
            TabKind k = kinds[0];
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   439
            String name = k.toString().charAt(0) + k.toString().substring(1).toLowerCase();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   440
            expect = "<caption>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   441
                        + "<span>" + name + "</span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   442
                        + "<span class=\"tabEnd\">&nbsp;</span>"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   443
                        + "</caption>";
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   444
        }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   445
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   446
        checkOutput(moduleName + "/module-summary.html", true, expect);
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   447
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   448
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   449
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   450
    private void checkTableHead(String moduleName, ColKind... kinds) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   451
        Set<ColKind> kindSet = Set.of(kinds);
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   452
        StringBuilder sb = new StringBuilder();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   453
        sb.append("<tr>\n"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   454
            + "<th class=\"colFirst\" scope=\"col\">Package</th>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   455
        if (kindSet.contains(ColKind.EXPORTED_TO)) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   456
            sb.append("<th class=\"colSecond\" scope=\"col\">Exported To Modules</th>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   457
        }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   458
        if (kindSet.contains(ColKind.OPENED_TO)) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   459
            sb.append("<th class=\"colSecond\" scope=\"col\">Opened To Modules</th>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   460
        }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   461
        sb.append("<th class=\"colLast\" scope=\"col\">Description</th>\n"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   462
            + "</tr>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   463
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   464
        checkOutput(moduleName + "/module-summary.html", true, sb.toString());
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   465
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   466
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   467
    private void checkPackageRow(String moduleName, String packageName,
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   468
            String id, String exportedTo, String openedTo, String desc) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   469
        StringBuilder sb = new StringBuilder();
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   470
        int idNum = Integer.parseInt(id.substring(1));
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   471
        String color = (idNum % 2 == 1 ? "rowColor" : "altColor");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   472
        sb.append("<tr class=\"" + color + "\" id=\"" + id + "\">\n"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   473
                + "<th class=\"colFirst\" scope=\"row\">"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   474
                + "<a href=\"" + packageName.replace('.', '/') + "/package-summary.html\">"
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   475
                + packageName + "</a></th>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   476
        if (exportedTo != null) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   477
            sb.append("<td class=\"colSecond\">" + exportedTo + "</td>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   478
        }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   479
        if (openedTo != null) {
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   480
            sb.append("<td class=\"colSecond\">" + openedTo + "</td>\n");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   481
        }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   482
        sb.append("<td class=\"colLast\">" + desc + "</td>");
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   483
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 48340
diff changeset
   484
        checkOutput(moduleName + "/module-summary.html", true, sb.toString());
48325
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   485
    }
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   486
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   487
}
e5cdedd37b78 8178070: duplicate entries in package table
jjg
parents:
diff changeset
   488