mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 02:24:40 +02:00
8006263: Supplementary test cases needed for doclint
Reviewed-by: mcimadamore
This commit is contained in:
parent
00ae27b2cf
commit
7967c92db0
16 changed files with 954 additions and 16 deletions
|
@ -92,7 +92,7 @@ public class Checker extends DocTreeScanner<Void, Void> {
|
||||||
boolean foundInheritDoc = false;
|
boolean foundInheritDoc = false;
|
||||||
boolean foundReturn = false;
|
boolean foundReturn = false;
|
||||||
|
|
||||||
enum Flag {
|
public enum Flag {
|
||||||
TABLE_HAS_CAPTION,
|
TABLE_HAS_CAPTION,
|
||||||
HAS_ELEMENT,
|
HAS_ELEMENT,
|
||||||
HAS_TEXT
|
HAS_TEXT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -122,7 +122,7 @@ public class DocLint implements Plugin {
|
||||||
|
|
||||||
if (javacFiles.isEmpty()) {
|
if (javacFiles.isEmpty()) {
|
||||||
if (!needHelp)
|
if (!needHelp)
|
||||||
System.out.println("no files given");
|
out.println("no files given");
|
||||||
}
|
}
|
||||||
|
|
||||||
JavacTool tool = JavacTool.create();
|
JavacTool tool = JavacTool.create();
|
||||||
|
@ -179,11 +179,11 @@ public class DocLint implements Plugin {
|
||||||
}
|
}
|
||||||
} else if (arg.equals(STATS)) {
|
} else if (arg.equals(STATS)) {
|
||||||
env.messages.setStatsEnabled(true);
|
env.messages.setStatsEnabled(true);
|
||||||
} else if (arg.matches("-bootclasspath") && i + 1 < args.length) {
|
} else if (arg.equals("-bootclasspath") && i + 1 < args.length) {
|
||||||
javacBootClassPath = splitPath(args[++i]);
|
javacBootClassPath = splitPath(args[++i]);
|
||||||
} else if (arg.matches("-classpath") && i + 1 < args.length) {
|
} else if (arg.equals("-classpath") && i + 1 < args.length) {
|
||||||
javacClassPath = splitPath(args[++i]);
|
javacClassPath = splitPath(args[++i]);
|
||||||
} else if (arg.matches("-sourcepath") && i + 1 < args.length) {
|
} else if (arg.equals("-sourcepath") && i + 1 < args.length) {
|
||||||
javacSourcePath = splitPath(args[++i]);
|
javacSourcePath = splitPath(args[++i]);
|
||||||
} else if (arg.equals(XMSGS_OPTION)) {
|
} else if (arg.equals(XMSGS_OPTION)) {
|
||||||
env.messages.setOptions(null);
|
env.messages.setOptions(null);
|
||||||
|
@ -234,6 +234,8 @@ public class DocLint implements Plugin {
|
||||||
out.println(" equivalent to -Xmsgs:all/protected, meaning that");
|
out.println(" equivalent to -Xmsgs:all/protected, meaning that");
|
||||||
out.println(" all messages are reported for protected and public");
|
out.println(" all messages are reported for protected and public");
|
||||||
out.println(" declarations only. ");
|
out.println(" declarations only. ");
|
||||||
|
out.println(" -stats");
|
||||||
|
out.println(" Report statistics on the reported issues.");
|
||||||
out.println(" -h -help --help -usage -?");
|
out.println(" -h -help --help -usage -?");
|
||||||
out.println(" Show this message.");
|
out.println(" Show this message.");
|
||||||
out.println("");
|
out.println("");
|
||||||
|
@ -247,7 +249,7 @@ public class DocLint implements Plugin {
|
||||||
|
|
||||||
List<File> splitPath(String path) {
|
List<File> splitPath(String path) {
|
||||||
List<File> files = new ArrayList<File>();
|
List<File> files = new ArrayList<File>();
|
||||||
for (String f: path.split(File.separator)) {
|
for (String f: path.split(File.pathSeparator)) {
|
||||||
if (f.length() > 0)
|
if (f.length() > 0)
|
||||||
files.add(new File(f));
|
files.add(new File(f));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -43,7 +43,7 @@ import java.util.Map;
|
||||||
* risk. This code and its internal interfaces are subject to change
|
* risk. This code and its internal interfaces are subject to change
|
||||||
* or deletion without notice.</b></p>
|
* or deletion without notice.</b></p>
|
||||||
*/
|
*/
|
||||||
enum Entity {
|
public enum Entity {
|
||||||
nbsp(160),
|
nbsp(160),
|
||||||
iexcl(161),
|
iexcl(161),
|
||||||
cent(162),
|
cent(162),
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -273,7 +273,7 @@ public enum HtmlTag {
|
||||||
static final Map<String,Attr> index = new HashMap<String,Attr>();
|
static final Map<String,Attr> index = new HashMap<String,Attr>();
|
||||||
static {
|
static {
|
||||||
for (Attr t: values()) {
|
for (Attr t: values()) {
|
||||||
index.put(t.name().toLowerCase(), t);
|
index.put(t.getText(), t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ public enum HtmlTag {
|
||||||
private static final Map<String,HtmlTag> index = new HashMap<String,HtmlTag>();
|
private static final Map<String,HtmlTag> index = new HashMap<String,HtmlTag>();
|
||||||
static {
|
static {
|
||||||
for (HtmlTag t: values()) {
|
for (HtmlTag t: values()) {
|
||||||
index.put(t.name().toLowerCase(), t);
|
index.put(t.getText(), t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
71
langtools/test/tools/doclint/CoverageExtras.java
Normal file
71
langtools/test/tools/doclint/CoverageExtras.java
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, 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 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sun.tools.doclint.Checker;
|
||||||
|
import com.sun.tools.doclint.Entity;
|
||||||
|
import com.sun.tools.doclint.HtmlTag;
|
||||||
|
import com.sun.tools.doclint.Messages;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class CoverageExtras {
|
||||||
|
public static void main(String... args) {
|
||||||
|
new CoverageExtras().run();
|
||||||
|
}
|
||||||
|
|
||||||
|
void run() {
|
||||||
|
check(HtmlTag.A, HtmlTag.valueOf("A"), HtmlTag.values());
|
||||||
|
check(HtmlTag.Attr.ABBR, HtmlTag.Attr.valueOf("ABBR"), HtmlTag.Attr.values());
|
||||||
|
check(HtmlTag.AttrKind.INVALID, HtmlTag.AttrKind.valueOf("INVALID"), HtmlTag.AttrKind.values());
|
||||||
|
check(HtmlTag.BlockType.BLOCK, HtmlTag.BlockType.valueOf("BLOCK"), HtmlTag.BlockType.values());
|
||||||
|
check(HtmlTag.EndKind.NONE, HtmlTag.EndKind.valueOf("NONE"), HtmlTag.EndKind.values());
|
||||||
|
check(HtmlTag.Flag.EXPECT_CONTENT, HtmlTag.Flag.valueOf("EXPECT_CONTENT"), HtmlTag.Flag.values());
|
||||||
|
|
||||||
|
check(Checker.Flag.TABLE_HAS_CAPTION, Checker.Flag.valueOf("TABLE_HAS_CAPTION"), Checker.Flag.values());
|
||||||
|
|
||||||
|
check(Entity.nbsp, Entity.valueOf("nbsp"), Entity.values());
|
||||||
|
|
||||||
|
check(Messages.Group.ACCESSIBILITY, Messages.Group.valueOf("ACCESSIBILITY"), Messages.Group.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
<T extends Enum<T>> void check(T expect, T value, T[] values) {
|
||||||
|
if (!Objects.equals(expect, value)) {
|
||||||
|
error("Mismatch: '" + expect + "', '" + value + "'");
|
||||||
|
}
|
||||||
|
if (!Objects.equals(expect, values[0])) {
|
||||||
|
error("Mismatch: '" + expect + "', '" + values[0] + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void error(String msg) {
|
||||||
|
System.err.println("Error: " + msg);
|
||||||
|
errors++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int errors;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -26,6 +26,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.sun.tools.doclint.DocLint;
|
import com.sun.tools.doclint.DocLint;
|
||||||
|
import com.sun.tools.doclint.DocLint.BadArgs;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -45,6 +46,7 @@ public class DocLintTester {
|
||||||
public void run(String... args) throws Exception {
|
public void run(String... args) throws Exception {
|
||||||
String testSrc = System.getProperty("test.src");
|
String testSrc = System.getProperty("test.src");
|
||||||
|
|
||||||
|
boolean badArgs = false;
|
||||||
File refFile = null;
|
File refFile = null;
|
||||||
List<String> opts = new ArrayList<String>();
|
List<String> opts = new ArrayList<String>();
|
||||||
List<File> files = new ArrayList<File>();
|
List<File> files = new ArrayList<File>();
|
||||||
|
@ -52,19 +54,25 @@ public class DocLintTester {
|
||||||
String arg = args[i];
|
String arg = args[i];
|
||||||
if (arg.equals("-ref")) {
|
if (arg.equals("-ref")) {
|
||||||
refFile = new File(testSrc, args[++i]);
|
refFile = new File(testSrc, args[++i]);
|
||||||
|
} else if (arg.equals("-badargs")) {
|
||||||
|
badArgs = true;
|
||||||
} else if (arg.startsWith("-Xmsgs")) {
|
} else if (arg.startsWith("-Xmsgs")) {
|
||||||
opts.add(arg);
|
opts.add(arg);
|
||||||
|
} else if (arg.startsWith("-")) {
|
||||||
|
opts.add(arg);
|
||||||
|
if (i < args.length - 1 && !args[i+1].startsWith("-"))
|
||||||
|
opts.add(args[++i]);
|
||||||
} else
|
} else
|
||||||
files.add(new File(testSrc, arg));
|
files.add(new File(testSrc, arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
check(opts, files, refFile);
|
check(opts, files, badArgs, refFile);
|
||||||
|
|
||||||
if (errors > 0)
|
if (errors > 0)
|
||||||
throw new Exception(errors + " errors occurred");
|
throw new Exception(errors + " errors occurred");
|
||||||
}
|
}
|
||||||
|
|
||||||
void check(List<String> opts, List<File> files, File refFile) throws Exception {
|
void check(List<String> opts, List<File> files, boolean expectBadArgs, File refFile) throws Exception {
|
||||||
List<String> args = new ArrayList<String>();
|
List<String> args = new ArrayList<String>();
|
||||||
args.addAll(opts);
|
args.addAll(opts);
|
||||||
for (File file: files)
|
for (File file: files)
|
||||||
|
@ -72,7 +80,14 @@ public class DocLintTester {
|
||||||
|
|
||||||
StringWriter sw = new StringWriter();
|
StringWriter sw = new StringWriter();
|
||||||
PrintWriter pw = new PrintWriter(sw);
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
try {
|
||||||
new DocLint().run(pw, args.toArray(new String[args.size()]));
|
new DocLint().run(pw, args.toArray(new String[args.size()]));
|
||||||
|
if (expectBadArgs)
|
||||||
|
error("expected exception not thrown");
|
||||||
|
} catch (BadArgs e) {
|
||||||
|
if (!expectBadArgs)
|
||||||
|
error("unexpected exception caught: " + e);
|
||||||
|
}
|
||||||
pw.flush();
|
pw.flush();
|
||||||
String out = normalizeNewlines(removeFileNames(sw.toString())).trim();
|
String out = normalizeNewlines(removeFileNames(sw.toString())).trim();
|
||||||
if (out != null)
|
if (out != null)
|
||||||
|
|
317
langtools/test/tools/doclint/html/EntitiesTest.java
Normal file
317
langtools/test/tools/doclint/html/EntitiesTest.java
Normal file
|
@ -0,0 +1,317 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, 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 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
* @library ..
|
||||||
|
* @build DocLintTester
|
||||||
|
* @run main DocLintTester -Xmsgs:-html EntitiesTest.java
|
||||||
|
* @run main DocLintTester -Xmsgs:html -ref EntitiesTest.out EntitiesTest.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** */
|
||||||
|
class EntitiesTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*    
|
||||||
|
* ࡎ ࡎ ࡎ
|
||||||
|
*/
|
||||||
|
void range_test() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
*  
|
||||||
|
* ¡ ¡
|
||||||
|
* ¢ ¢
|
||||||
|
* £ £
|
||||||
|
* ¤ ¤
|
||||||
|
* ¥ ¥
|
||||||
|
* ¦ ¦
|
||||||
|
* § §
|
||||||
|
* ¨ ¨
|
||||||
|
* © ©
|
||||||
|
* ª ª
|
||||||
|
* « «
|
||||||
|
* ¬ ¬
|
||||||
|
* ­ ­
|
||||||
|
* ® ®
|
||||||
|
* ¯ ¯
|
||||||
|
* ° °
|
||||||
|
* ± ±
|
||||||
|
* ² ²
|
||||||
|
* ³ ³
|
||||||
|
* ´ ´
|
||||||
|
* µ µ
|
||||||
|
* ¶ ¶
|
||||||
|
* · ·
|
||||||
|
* ¸ ¸
|
||||||
|
* ¹ ¹
|
||||||
|
* º º
|
||||||
|
* » »
|
||||||
|
* ¼ ¼
|
||||||
|
* ½ ½
|
||||||
|
* ¾ ¾
|
||||||
|
* ¿ ¿
|
||||||
|
* À À
|
||||||
|
* Á Á
|
||||||
|
* Â Â
|
||||||
|
* Ã Ã
|
||||||
|
* Ä Ä
|
||||||
|
* Å Å
|
||||||
|
* Æ Æ
|
||||||
|
* Ç Ç
|
||||||
|
* È È
|
||||||
|
* É É
|
||||||
|
* Ê Ê
|
||||||
|
* Ë Ë
|
||||||
|
* Ì Ì
|
||||||
|
* Í Í
|
||||||
|
* Î Î
|
||||||
|
* Ï Ï
|
||||||
|
* Ð Ð
|
||||||
|
* Ñ Ñ
|
||||||
|
* Ò Ò
|
||||||
|
* Ó Ó
|
||||||
|
* Ô Ô
|
||||||
|
* Õ Õ
|
||||||
|
* Ö Ö
|
||||||
|
* × ×
|
||||||
|
* Ø Ø
|
||||||
|
* Ù Ù
|
||||||
|
* Ú Ú
|
||||||
|
* Û Û
|
||||||
|
* Ü Ü
|
||||||
|
* Ý Ý
|
||||||
|
* Þ Þ
|
||||||
|
* ß ß
|
||||||
|
* à à
|
||||||
|
* á á
|
||||||
|
* â â
|
||||||
|
* ã ã
|
||||||
|
* ä ä
|
||||||
|
* å å
|
||||||
|
* æ æ
|
||||||
|
* ç ç
|
||||||
|
* è è
|
||||||
|
* é é
|
||||||
|
* ê ê
|
||||||
|
* ë ë
|
||||||
|
* ì ì
|
||||||
|
* í í
|
||||||
|
* î î
|
||||||
|
* ï ï
|
||||||
|
* ð ð
|
||||||
|
* ñ ñ
|
||||||
|
* ò ò
|
||||||
|
* ó ó
|
||||||
|
* ô ô
|
||||||
|
* õ õ
|
||||||
|
* ö ö
|
||||||
|
* ÷ ÷
|
||||||
|
* ø ø
|
||||||
|
* ù ù
|
||||||
|
* ú ú
|
||||||
|
* û û
|
||||||
|
* ü ü
|
||||||
|
* ý ý
|
||||||
|
* þ þ
|
||||||
|
* ÿ ÿ
|
||||||
|
* ƒ ƒ
|
||||||
|
* Α Α
|
||||||
|
* Β Β
|
||||||
|
* Γ Γ
|
||||||
|
* Δ Δ
|
||||||
|
* Ε Ε
|
||||||
|
* Ζ Ζ
|
||||||
|
* Η Η
|
||||||
|
* Θ Θ
|
||||||
|
* Ι Ι
|
||||||
|
* Κ Κ
|
||||||
|
* Λ Λ
|
||||||
|
* Μ Μ
|
||||||
|
* Ν Ν
|
||||||
|
* Ξ Ξ
|
||||||
|
* Ο Ο
|
||||||
|
* Π Π
|
||||||
|
* Ρ Ρ
|
||||||
|
* Σ Σ
|
||||||
|
* Τ Τ
|
||||||
|
* Υ Υ
|
||||||
|
* Φ Φ
|
||||||
|
* Χ Χ
|
||||||
|
* Ψ Ψ
|
||||||
|
* Ω Ω
|
||||||
|
* α α
|
||||||
|
* β β
|
||||||
|
* γ γ
|
||||||
|
* δ δ
|
||||||
|
* ε ε
|
||||||
|
* ζ ζ
|
||||||
|
* η η
|
||||||
|
* θ θ
|
||||||
|
* ι ι
|
||||||
|
* κ κ
|
||||||
|
* λ λ
|
||||||
|
* μ μ
|
||||||
|
* ν ν
|
||||||
|
* ξ ξ
|
||||||
|
* ο ο
|
||||||
|
* π π
|
||||||
|
* ρ ρ
|
||||||
|
* ς ς
|
||||||
|
* σ σ
|
||||||
|
* τ τ
|
||||||
|
* υ υ
|
||||||
|
* φ φ
|
||||||
|
* χ χ
|
||||||
|
* ψ ψ
|
||||||
|
* ω ω
|
||||||
|
* ϑ ϑ
|
||||||
|
* ϒ ϒ
|
||||||
|
* ϖ ϖ
|
||||||
|
* • •
|
||||||
|
* … …
|
||||||
|
* ′ ′
|
||||||
|
* ″ ″
|
||||||
|
* ‾ ‾
|
||||||
|
* ⁄ ⁄
|
||||||
|
* ℘ ℘
|
||||||
|
* ℑ ℑ
|
||||||
|
* ℜ ℜ
|
||||||
|
* ™ ™
|
||||||
|
* ℵ ℵ
|
||||||
|
* ← ←
|
||||||
|
* ↑ ↑
|
||||||
|
* → →
|
||||||
|
* ↓ ↓
|
||||||
|
* ↔ ↔
|
||||||
|
* ↵ ↵
|
||||||
|
* ⇐ ⇐
|
||||||
|
* ⇑ ⇑
|
||||||
|
* ⇒ ⇒
|
||||||
|
* ⇓ ⇓
|
||||||
|
* ⇔ ⇔
|
||||||
|
* ∀ ∀
|
||||||
|
* ∂ ∂
|
||||||
|
* ∃ ∃
|
||||||
|
* ∅ ∅
|
||||||
|
* ∇ ∇
|
||||||
|
* ∈ ∈
|
||||||
|
* ∉ ∉
|
||||||
|
* ∋ ∋
|
||||||
|
* ∏ ∏
|
||||||
|
* ∑ ∑
|
||||||
|
* − −
|
||||||
|
* ∗ ∗
|
||||||
|
* √ √
|
||||||
|
* ∝ ∝
|
||||||
|
* ∞ ∞
|
||||||
|
* ∠ ∠
|
||||||
|
* ∧ ∧
|
||||||
|
* ∨ ∨
|
||||||
|
* ∩ ∩
|
||||||
|
* ∪ ∪
|
||||||
|
* &_int; ∫
|
||||||
|
* ∴ ∴
|
||||||
|
* ∼ ∼
|
||||||
|
* ≅ ≅
|
||||||
|
* ≈ ≈
|
||||||
|
* ≠ ≠
|
||||||
|
* ≡ ≡
|
||||||
|
* ≤ ≤
|
||||||
|
* ≥ ≥
|
||||||
|
* ⊂ ⊂
|
||||||
|
* ⊃ ⊃
|
||||||
|
* ⊄ ⊄
|
||||||
|
* ⊆ ⊆
|
||||||
|
* ⊇ ⊇
|
||||||
|
* ⊕ ⊕
|
||||||
|
* ⊗ ⊗
|
||||||
|
* ⊥ ⊥
|
||||||
|
* ⋅ ⋅
|
||||||
|
* ⌈ ⌈
|
||||||
|
* ⌉ ⌉
|
||||||
|
* ⌊ ⌊
|
||||||
|
* ⌋ ⌋
|
||||||
|
* ⟨ 〈
|
||||||
|
* ⟩ 〉
|
||||||
|
* ◊ ◊
|
||||||
|
* ♠ ♠
|
||||||
|
* ♣ ♣
|
||||||
|
* ♥ ♥
|
||||||
|
* ♦ ♦
|
||||||
|
* " "
|
||||||
|
* & &
|
||||||
|
* < <
|
||||||
|
* > >
|
||||||
|
* Œ Œ
|
||||||
|
* œ œ
|
||||||
|
* Š Š
|
||||||
|
* š š
|
||||||
|
* Ÿ Ÿ
|
||||||
|
* ˆ ˆ
|
||||||
|
* ˜ ˜
|
||||||
|
*    
|
||||||
|
*    
|
||||||
|
*    
|
||||||
|
* ‌ ‌
|
||||||
|
* ‍ ‍
|
||||||
|
* ‎ ‎
|
||||||
|
* ‏ ‏
|
||||||
|
* – –
|
||||||
|
* — —
|
||||||
|
* ‘ ‘
|
||||||
|
* ’ ’
|
||||||
|
* ‚ ‚
|
||||||
|
* “ “
|
||||||
|
* ” ”
|
||||||
|
* „ „
|
||||||
|
* † †
|
||||||
|
* ‡ ‡
|
||||||
|
* ‰ ‰
|
||||||
|
* ‹ ‹
|
||||||
|
* › ›
|
||||||
|
* € €
|
||||||
|
*/
|
||||||
|
void symbolic_entities() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* &bad;
|
||||||
|
*/
|
||||||
|
void bad_name() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 
|
||||||
|
* ࡏ
|
||||||
|
*/
|
||||||
|
void out_of_range() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ―
|
||||||
|
* ⌫
|
||||||
|
* 
|
||||||
|
*/
|
||||||
|
void sparse_negative() { }
|
||||||
|
}
|
||||||
|
|
19
langtools/test/tools/doclint/html/EntitiesTest.out
Normal file
19
langtools/test/tools/doclint/html/EntitiesTest.out
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
EntitiesTest.java:300: error: invalid entity &bad;
|
||||||
|
* &bad;
|
||||||
|
^
|
||||||
|
EntitiesTest.java:305: error: invalid entity 
|
||||||
|
* 
|
||||||
|
^
|
||||||
|
EntitiesTest.java:306: error: invalid entity ࡏ
|
||||||
|
* ࡏ
|
||||||
|
^
|
||||||
|
EntitiesTest.java:311: error: invalid entity ―
|
||||||
|
* ―
|
||||||
|
^
|
||||||
|
EntitiesTest.java:312: error: invalid entity ⌫
|
||||||
|
* ⌫
|
||||||
|
^
|
||||||
|
EntitiesTest.java:313: error: invalid entity 
|
||||||
|
* 
|
||||||
|
^
|
||||||
|
6 errors
|
38
langtools/test/tools/doclint/tool/HelpTest.java
Normal file
38
langtools/test/tools/doclint/tool/HelpTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, 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 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
* @library ..
|
||||||
|
* @build DocLintTester
|
||||||
|
* @run main DocLintTester -ref HelpTest.out
|
||||||
|
* @run main DocLintTester -ref HelpTest.out -h
|
||||||
|
* @run main DocLintTester -ref HelpTest.out -help
|
||||||
|
* @run main DocLintTester -ref HelpTest.out --help
|
||||||
|
* @run main DocLintTester -ref HelpTest.out -usage
|
||||||
|
* @run main DocLintTester -ref HelpTest.out -?
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
43
langtools/test/tools/doclint/tool/HelpTest.out
Normal file
43
langtools/test/tools/doclint/tool/HelpTest.out
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
Usage:
|
||||||
|
doclint [options] source-files...
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-Xmsgs
|
||||||
|
Same as -Xmsgs:all
|
||||||
|
-Xmsgs:values
|
||||||
|
Specify categories of issues to be checked, where 'values'
|
||||||
|
is a comma-separated list of any of the following:
|
||||||
|
reference show places where comments contain incorrect
|
||||||
|
references to Java source code elements
|
||||||
|
syntax show basic syntax errors within comments
|
||||||
|
html show issues with HTML tags and attributes
|
||||||
|
accessibility show issues for accessibility
|
||||||
|
missing show issues with missing documentation
|
||||||
|
all all of the above
|
||||||
|
Precede a value with '-' to negate it
|
||||||
|
Categories may be qualified by one of:
|
||||||
|
/public /protected /package /private
|
||||||
|
For positive categories (not beginning with '-')
|
||||||
|
the qualifier applies to that access level and above.
|
||||||
|
For negative categories (beginning with '-')
|
||||||
|
the qualifier applies to that access level and below.
|
||||||
|
If a qualifier is missing, the category applies to
|
||||||
|
all access levels.
|
||||||
|
For example, -Xmsgs:all,-syntax/private
|
||||||
|
This will enable all messages, except syntax errors
|
||||||
|
in the doc comments of private methods.
|
||||||
|
If no -Xmsgs options are provided, the default is
|
||||||
|
equivalent to -Xmsgs:all/protected, meaning that
|
||||||
|
all messages are reported for protected and public
|
||||||
|
declarations only.
|
||||||
|
-stats
|
||||||
|
Report statistics on the reported issues.
|
||||||
|
-h -help --help -usage -?
|
||||||
|
Show this message.
|
||||||
|
|
||||||
|
The following javac options are also supported
|
||||||
|
-bootclasspath, -classpath, -sourcepath, -Xmaxerrs, -Xmaxwarns
|
||||||
|
|
||||||
|
To run doclint on part of a project, put the compiled classes for your
|
||||||
|
project on the classpath (or bootclasspath), then specify the source files
|
||||||
|
to be checked on the command line.
|
21
langtools/test/tools/doclint/tool/MaxDiagsTest.java
Normal file
21
langtools/test/tools/doclint/tool/MaxDiagsTest.java
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
* @library ..
|
||||||
|
* @build DocLintTester
|
||||||
|
* @run main DocLintTester -ref MaxDiagsTest.out -Xmaxerrs 2 -Xmaxwarns 2 MaxDiagsTest.java
|
||||||
|
* @run main DocLintTester -badargs -Xmaxerrs
|
||||||
|
* @run main DocLintTester -badargs -Xmaxwarns
|
||||||
|
* @run main DocLintTester -badargs -Xmaxerrs two -Xmaxwarns two MaxDiagsTest.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class MaxDiagsTest {
|
||||||
|
/**
|
||||||
|
* � � � �
|
||||||
|
*/
|
||||||
|
public void errors() { }
|
||||||
|
|
||||||
|
/** 4 undocumented signature items */
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
}
|
14
langtools/test/tools/doclint/tool/MaxDiagsTest.out
Normal file
14
langtools/test/tools/doclint/tool/MaxDiagsTest.out
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
MaxDiagsTest.java:13: warning: no comment
|
||||||
|
public class MaxDiagsTest {
|
||||||
|
^
|
||||||
|
MaxDiagsTest.java:15: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
MaxDiagsTest.java:15: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
MaxDiagsTest.java:20: warning: no @param for a1
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
^
|
||||||
|
2 errors
|
||||||
|
2 warnings
|
136
langtools/test/tools/doclint/tool/PathsTest.java
Normal file
136
langtools/test/tools/doclint/tool/PathsTest.java
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, 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 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sun.tools.doclint.DocLint;
|
||||||
|
import com.sun.tools.doclint.DocLint.BadArgs;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class PathsTest {
|
||||||
|
public static void main(String... args) throws Exception {
|
||||||
|
new PathsTest().run();
|
||||||
|
}
|
||||||
|
|
||||||
|
void run() throws Exception {
|
||||||
|
String PS = File.pathSeparator;
|
||||||
|
writeFile("src1/p/A.java",
|
||||||
|
"package p; public class A { }");
|
||||||
|
compile("-d", "classes1", "src1/p/A.java");
|
||||||
|
|
||||||
|
writeFile("src2/q/B.java",
|
||||||
|
"package q; public class B extends p.A { }");
|
||||||
|
compile("-d", "classes2", "-classpath", "classes1", "src2/q/B.java");
|
||||||
|
|
||||||
|
writeFile("src/Test.java",
|
||||||
|
"/** &0; */ class Test extends q.B { }");
|
||||||
|
|
||||||
|
test("src/Test.java", "-sourcepath", "src1" + PS + "src2");
|
||||||
|
test("src/Test.java", "-classpath", "classes1" + PS + "classes2");
|
||||||
|
String sysBootClassPath = System.getProperty("sun.boot.class.path");
|
||||||
|
test("src/Test.java", "-bootclasspath",
|
||||||
|
sysBootClassPath + PS + "classes1" + PS + "classes2");
|
||||||
|
|
||||||
|
if (errors > 0)
|
||||||
|
throw new Exception(errors + " errors found");
|
||||||
|
}
|
||||||
|
|
||||||
|
Pattern pkgNotFound = Pattern.compile("package [a-z]+ does not exist");
|
||||||
|
Pattern badHtmlEntity = Pattern.compile("bad HTML entity");
|
||||||
|
|
||||||
|
void test(String file, String pathOpt, String path) throws BadArgs, IOException {
|
||||||
|
System.err.println("test " + pathOpt);
|
||||||
|
String out1 = doclint("-Xmsgs", file);
|
||||||
|
if (!pkgNotFound.matcher(out1).find())
|
||||||
|
error("message not found: " + pkgNotFound);
|
||||||
|
|
||||||
|
String out2 = doclint("-Xmsgs", pathOpt, path, file);
|
||||||
|
if (pkgNotFound.matcher(out2).find())
|
||||||
|
error("unexpected message found: " + pkgNotFound);
|
||||||
|
if (!badHtmlEntity.matcher(out1).find())
|
||||||
|
error("message not found: " + badHtmlEntity);
|
||||||
|
|
||||||
|
try {
|
||||||
|
doclint("-Xmsgs", pathOpt);
|
||||||
|
error("expected exception not thrown");
|
||||||
|
} catch (BadArgs e) {
|
||||||
|
System.err.println(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void compile(String... args) {
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
if (args[i].equals("-d")) {
|
||||||
|
new File(args[++i]).mkdirs();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
int rc = com.sun.tools.javac.Main.compile(args, pw);
|
||||||
|
pw.close();
|
||||||
|
String out = sw.toString();
|
||||||
|
if (!out.isEmpty())
|
||||||
|
System.err.println(out);
|
||||||
|
if (rc != 0)
|
||||||
|
error("compilation failed: rc=" + rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
String doclint(String... args) throws BadArgs, IOException {
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
DocLint dl = new DocLint();
|
||||||
|
dl.run(pw, args);
|
||||||
|
pw.close();
|
||||||
|
String out = sw.toString();
|
||||||
|
if (!out.isEmpty())
|
||||||
|
System.err.println(out);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
File writeFile(String path, String body) throws IOException {
|
||||||
|
File f = new File(path);
|
||||||
|
f.getParentFile().mkdirs();
|
||||||
|
try (FileWriter fw = new FileWriter(path)) {
|
||||||
|
fw.write(body);
|
||||||
|
}
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void error(String msg) {
|
||||||
|
System.err.println("Error: " + msg);
|
||||||
|
errors++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int errors;
|
||||||
|
}
|
200
langtools/test/tools/doclint/tool/RunTest.java
Normal file
200
langtools/test/tools/doclint/tool/RunTest.java
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013, 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 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sun.source.util.JavacTask;
|
||||||
|
import com.sun.tools.doclint.DocLint;
|
||||||
|
import com.sun.tools.doclint.DocLint.BadArgs;
|
||||||
|
import com.sun.tools.javac.api.JavacTool;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.security.Permission;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import javax.tools.JavaFileObject;
|
||||||
|
import javax.tools.SimpleJavaFileObject;
|
||||||
|
|
||||||
|
public class RunTest {
|
||||||
|
static class SimpleSecurityManager extends SecurityManager {
|
||||||
|
boolean allowExit = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void checkExit(int status) {
|
||||||
|
if (!allowExit)
|
||||||
|
throw new SecurityException("System.exit(" + status + ")");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void checkPermission(Permission perm) { }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String... args) throws Exception {
|
||||||
|
// if no security manager already installed, install one to
|
||||||
|
// prevent System.exit
|
||||||
|
SimpleSecurityManager secmgr = null;
|
||||||
|
if (System.getSecurityManager() == null) {
|
||||||
|
System.setSecurityManager(secmgr = new SimpleSecurityManager() { });
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
new RunTest().run();
|
||||||
|
} finally {
|
||||||
|
if (secmgr != null)
|
||||||
|
secmgr.allowExit = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void run() throws Exception {
|
||||||
|
testMain();
|
||||||
|
testRun();
|
||||||
|
testInit();
|
||||||
|
testArgsNoFiles();
|
||||||
|
|
||||||
|
if (errors > 0)
|
||||||
|
throw new Exception(errors + " errors found");
|
||||||
|
}
|
||||||
|
|
||||||
|
void testMain() {
|
||||||
|
System.err.println("test main(String[])");
|
||||||
|
testMain(true, "-help");
|
||||||
|
testMain(false, "-unknownOption");
|
||||||
|
}
|
||||||
|
|
||||||
|
void testMain(boolean expectOK, String... args) {
|
||||||
|
try {
|
||||||
|
DocLint.main(args);
|
||||||
|
if (!expectOK)
|
||||||
|
error("expected SecurityException (from System.exit) not thrown");
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
if (expectOK)
|
||||||
|
error("unexpected SecurityException caught");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void testRun() throws BadArgs, IOException {
|
||||||
|
System.err.println("test run(String[])");
|
||||||
|
DocLint dl = new DocLint();
|
||||||
|
String[] args = { "-help" };
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
PrintStream ps = new PrintStream(baos);
|
||||||
|
PrintStream prev = System.out;
|
||||||
|
try {
|
||||||
|
System.setOut(ps);
|
||||||
|
dl.run(args);
|
||||||
|
} finally {
|
||||||
|
System.setOut(prev);
|
||||||
|
}
|
||||||
|
ps.close();
|
||||||
|
String stdout = baos.toString();
|
||||||
|
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
dl.run(pw, args);
|
||||||
|
pw.close();
|
||||||
|
String direct = sw.toString();
|
||||||
|
|
||||||
|
if (!stdout.equals(direct)) {
|
||||||
|
error("unexpected output");
|
||||||
|
System.err.println("EXPECT>>" + direct + "<<");
|
||||||
|
System.err.println("FOUND>>" + stdout + "<<");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void testInit() {
|
||||||
|
System.err.println("test init");
|
||||||
|
DocLint dl = new DocLint();
|
||||||
|
String name = dl.getName();
|
||||||
|
if (!Objects.equals(name, "doclint"))
|
||||||
|
error("unexpected result for DocLint.getName()");
|
||||||
|
|
||||||
|
List<? extends JavaFileObject> files =
|
||||||
|
Arrays.asList(createFile("Test.java", "/** &0; */ class Test{ }"));
|
||||||
|
String[] goodArgs = { "-Xmsgs" };
|
||||||
|
testInit(true, goodArgs, files);
|
||||||
|
|
||||||
|
String[] badArgs = { "-unknown" };
|
||||||
|
testInit(false, badArgs, files);
|
||||||
|
}
|
||||||
|
|
||||||
|
void testInit(boolean expectOK, String[] args, List<? extends JavaFileObject> files) {
|
||||||
|
JavacTool javac = JavacTool.create();
|
||||||
|
JavacTask task = javac.getTask(null, null, null, null, null, files);
|
||||||
|
try {
|
||||||
|
DocLint dl = new DocLint();
|
||||||
|
dl.init(task, args, true);
|
||||||
|
if (!expectOK)
|
||||||
|
error("expected IllegalArgumentException not thrown");
|
||||||
|
task.call();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
if (expectOK)
|
||||||
|
error("unexpected IllegalArgumentException caught");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void testArgsNoFiles() throws BadArgs, IOException {
|
||||||
|
System.err.println("test args, no files");
|
||||||
|
DocLint dl = new DocLint();
|
||||||
|
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
dl.run(pw, "-Xmsgs");
|
||||||
|
pw.close();
|
||||||
|
String out = sw.toString();
|
||||||
|
|
||||||
|
String expect = "no files given";
|
||||||
|
if (!Objects.equals(out.trim(), expect)) {
|
||||||
|
error("unexpected output");
|
||||||
|
System.err.println("EXPECT>>" + expect + "<<");
|
||||||
|
System.err.println("FOUND>>" + out + "<<");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
JavaFileObject createFile(String name, final String body) {
|
||||||
|
return new SimpleJavaFileObject(URI.create(name), JavaFileObject.Kind.SOURCE) {
|
||||||
|
@Override
|
||||||
|
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void error(String msg) {
|
||||||
|
System.err.println("Error: " + msg);
|
||||||
|
errors++;
|
||||||
|
}
|
||||||
|
|
||||||
|
int errors;
|
||||||
|
}
|
19
langtools/test/tools/doclint/tool/StatsTest.java
Normal file
19
langtools/test/tools/doclint/tool/StatsTest.java
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* @test /nodynamiccopyright/
|
||||||
|
* @bug 8006263
|
||||||
|
* @summary Supplementary test cases needed for doclint
|
||||||
|
* @library ..
|
||||||
|
* @build DocLintTester
|
||||||
|
* @run main DocLintTester -ref StatsTest.out -stats -Xmsgs:all StatsTest.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
// warning: missing comment
|
||||||
|
public class StatsTest {
|
||||||
|
/**
|
||||||
|
* � � � �
|
||||||
|
*/
|
||||||
|
public void errors() { }
|
||||||
|
|
||||||
|
/** 4 undocumented signature items */
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
}
|
43
langtools/test/tools/doclint/tool/StatsTest.out
Normal file
43
langtools/test/tools/doclint/tool/StatsTest.out
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
StatsTest.java:11: warning: no comment
|
||||||
|
public class StatsTest {
|
||||||
|
^
|
||||||
|
StatsTest.java:13: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
StatsTest.java:13: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
StatsTest.java:13: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
StatsTest.java:13: error: invalid entity �
|
||||||
|
* � � � �
|
||||||
|
^
|
||||||
|
StatsTest.java:18: warning: no @param for a1
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
^
|
||||||
|
StatsTest.java:18: warning: no @param for a2
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
^
|
||||||
|
StatsTest.java:18: warning: no @return
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
^
|
||||||
|
StatsTest.java:18: warning: no @throws for java.lang.Exception
|
||||||
|
public int warnings(int a1, int a2) throws Exception { return 0; }
|
||||||
|
^
|
||||||
|
By group...
|
||||||
|
5: missing
|
||||||
|
4: html
|
||||||
|
|
||||||
|
By diagnostic kind...
|
||||||
|
5: warning
|
||||||
|
4: error
|
||||||
|
|
||||||
|
By message kind...
|
||||||
|
4: invalid entity &{0};
|
||||||
|
2: no @param for {0}
|
||||||
|
1: no @return
|
||||||
|
1: no @throws for {0}
|
||||||
|
1: no comment
|
||||||
|
4 errors
|
||||||
|
5 warnings
|
Loading…
Add table
Add a link
Reference in a new issue