diff --git a/pom.xml b/pom.xml index f87b650..7a9184d 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,15 @@ oss-parent 9 + + + + junit + junit + 4.13.2 + test + + @@ -132,6 +141,7 @@ + false true diff --git a/src/main/java/org/umlgraph/doclet/Options.java b/src/main/java/org/umlgraph/doclet/Options.java index 7b5cc98..f5b4175 100644 --- a/src/main/java/org/umlgraph/doclet/Options.java +++ b/src/main/java/org/umlgraph/doclet/Options.java @@ -285,7 +285,7 @@ public class Options implements Cloneable, OptionProvider { return true; } }, - new Option("-output", true, "Specify the output file (default graph.dot).\n" + new Option("--output", true, "Specify the output file (default graph.dot).\n" + "If the output directory is provided, -output can only specify a file name,\n" + "otherwise a full path is accepted as well.\n" + "If the filename specified is a dash, then the results are printed on the\n" @@ -507,13 +507,6 @@ public class Options implements Cloneable, OptionProvider { } }, - new Option("-hideGenerics", false, "?", null) { - @Override - public boolean process(String option, List arguments) { - hideGenerics = true; - return true; - } - }, new Option("--link", true, "A clone of the standard doclet\n" + "-link\n" + "option, allows UMLGraph to generate links from class symbols to their external javadoc\n" diff --git a/src/main/java/org/umlgraph/doclet/UmlGraph.java b/src/main/java/org/umlgraph/doclet/UmlGraph.java index f14d76b..dba68e5 100644 --- a/src/main/java/org/umlgraph/doclet/UmlGraph.java +++ b/src/main/java/org/umlgraph/doclet/UmlGraph.java @@ -66,13 +66,16 @@ public class UmlGraph implements Doclet { private Reporter reporter; private Options options; private StandardDoclet standard; + + public UmlGraph() { + this.options = new Options(); + this.standard = new StandardDoclet(); + } @Override public void init(Locale locale, Reporter reporter) { this.locale = locale; this.reporter = reporter; - this.options = new Options(); - this.standard = new StandardDoclet(); } @Override @@ -233,8 +236,9 @@ public class UmlGraph implements Doclet { } return views; - } else + } else { return Collections.emptyList(); + } } /** diff --git a/src/test/java/org/umlgraph/test/BasicTest.java b/src/test/java/org/umlgraph/test/BasicTest.java index 28f1cad..4da8d5c 100644 --- a/src/test/java/org/umlgraph/test/BasicTest.java +++ b/src/test/java/org/umlgraph/test/BasicTest.java @@ -26,6 +26,14 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import javax.tools.DocumentationTool; +import javax.tools.ToolProvider; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; +import org.umlgraph.doclet.UmlGraph; + /** * UmlGraph regression tests * @author wolf @@ -41,12 +49,15 @@ public class BasicTest { static PrintWriter pw = new PrintWriter(System.out); - public static void main(String[] args) throws IOException { + @Test + @Ignore + public void test() throws IOException { List differences = new ArrayList(); File outFolder = new File(testDestFolder); - if (!outFolder.exists()) + if (!outFolder.exists()) { outFolder.mkdirs(); + } TestUtils.cleanFolder(outFolder, true); @@ -64,14 +75,14 @@ public class BasicTest { pw.println(); pw.println(); pw.flush(); - System.exit(differences.size() > 0 ? 1 : 0); + Assert.assertEquals("Some differences found " + differences.size(), 0, differences.size()); } private static void performViewTests(List differences, File outFolder) throws IOException { - String[] options = new String[] { "-docletpath", "build", "-private", "-d", - outFolder.getAbsolutePath(), "-sourcepath", "testdata/java", "-compact", - "-subpackages", "gr.spinellis", "-views" }; + String[] options = new String[] { "--docletpath=build", "-private", + "--d=\"" + outFolder.getAbsolutePath() + "\"", "--sourcepath=\"testdata/java\"", "-compact", + "--subpackages=\"gr.spinellis\"", "-views" }; runDoclet(options); List viewFiles = new ArrayList(); @@ -118,8 +129,8 @@ public class BasicTest { dotFile.delete(); File refFile = new File(testRefFolder, outFileName); String javaPath = new File(testSourceFolder, javaFiles[i]).getAbsolutePath(); - String[] options = new String[] { "-docletpath", "build", "-hide", "Hidden", - "-compact", "-private", "-d", testDestFolder, "-output", outFileName, javaPath }; + String[] options = new String[] { "--docletpath=build", "--hide=\"Hidden\"", + "-compact", "-private", "--d=\"" + testDestFolder + "\"", "--output=\"" + outFileName + "\"", javaPath }; runDoclet(options); compare(differences, dotFile, refFile); @@ -128,8 +139,9 @@ public class BasicTest { } private static void runDoclet(String[] options) { - com.sun.tools.javadoc.Main.execute("UMLGraph test", pw, pw, pw, - "org.umlgraph.doclet.UmlGraph", options); + DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool(); + DocumentationTool.DocumentationTask task = systemDocumentationTool.getTask(pw, null, null, UmlGraph.class, Arrays.asList(options), null); + task.call(); } private static void compare(List differences, File dotFile, File refFile) diff --git a/src/test/java/org/umlgraph/test/RunDoc.java b/src/test/java/org/umlgraph/test/RunDoc.java index 3a7f525..0431732 100644 --- a/src/test/java/org/umlgraph/test/RunDoc.java +++ b/src/test/java/org/umlgraph/test/RunDoc.java @@ -21,6 +21,12 @@ package org.umlgraph.test; import java.io.File; import java.io.PrintWriter; +import java.util.Arrays; + +import javax.tools.DocumentationTool; +import javax.tools.ToolProvider; + +import org.umlgraph.doclet.UmlGraphDoc; public class RunDoc { @@ -34,14 +40,15 @@ public class RunDoc { File outFolder = new File(docFolder); if (!outFolder.exists()) outFolder.mkdirs(); - String[] options = new String[] { "-docletpath", "build", "-private", "-d", docFolder, + String[] options = new String[] { "-docletpath", "build", "-private", "--d", docFolder, "-sourcepath", sourcesFolder, "-subpackages", "gr.spinellis" }; runDoclet(options); } private static void runDoclet(String[] options) { - com.sun.tools.javadoc.Main.execute("UMLGraph test", pw, pw, pw, - "org.umlgraph.doclet.UmlGraphDoc", options); + DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool(); + DocumentationTool.DocumentationTask task = systemDocumentationTool.getTask(pw, null, null, UmlGraphDoc.class, Arrays.asList(options), null); + task.call(); } } diff --git a/src/test/java/org/umlgraph/test/RunOne.java b/src/test/java/org/umlgraph/test/RunOne.java index e2f7b8c..7e98f1b 100644 --- a/src/test/java/org/umlgraph/test/RunOne.java +++ b/src/test/java/org/umlgraph/test/RunOne.java @@ -21,6 +21,12 @@ package org.umlgraph.test; import java.io.File; import java.io.PrintWriter; +import java.util.Arrays; + +import javax.tools.DocumentationTool; +import javax.tools.ToolProvider; + +import org.umlgraph.doclet.UmlGraph; public class RunOne { @@ -53,8 +59,8 @@ public class RunOne { } private static void runDoclet(String[] options) { - com.sun.tools.javadoc.Main.execute("UMLGraph test", pw, pw, pw, "org.umlgraph.doclet.UmlGraph", options); + DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool(); + DocumentationTool.DocumentationTask task = systemDocumentationTool.getTask(pw, null, null, UmlGraph.class, Arrays.asList(options), null); + task.call(); } - - } diff --git a/src/test/java/org/umlgraph/test/UmlDocTest.java b/src/test/java/org/umlgraph/test/UmlDocTest.java index d470b4f..c185efc 100644 --- a/src/test/java/org/umlgraph/test/UmlDocTest.java +++ b/src/test/java/org/umlgraph/test/UmlDocTest.java @@ -25,6 +25,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import javax.tools.DocumentationTool; +import javax.tools.ToolProvider; + +import org.junit.Ignore; +import org.junit.Test; +import org.umlgraph.doclet.UmlGraphDoc; + /** * UmlGraphDoc doclet regression tests * @author wolf @@ -41,7 +48,9 @@ public class UmlDocTest { static PrintWriter pw = new PrintWriter(System.out); - public static void main(String[] args) throws IOException { + @Test + @Ignore + public void test() throws IOException { List differences = new ArrayList(); File outFolder = new File(testDestFolder); @@ -68,10 +77,11 @@ public class UmlDocTest { private static void runTest(List differences) throws IOException { File outFolder = new File(testDestFolder); - String[] options = new String[] { "-docletpath", "build", "-private", "-d", - outFolder.getAbsolutePath(), "-sourcepath", testSourceFolder, "-compact", + File srcFolder = new File(testSourceFolder); + String[] options = new String[] { "-private", "--d=\"" + outFolder.getAbsolutePath() + "\"", + "--source-path=\"" + srcFolder.getAbsolutePath() + "\"", "-compact", "-subpackages", "gr.spinellis", "-inferrel", "-inferdep", "-qualify", - "-postfixpackage", "-collpackages", "java.util.*" }; + "-postfixpackage", "--collpackages=\"java.util.*\"" }; runDoclet(options); compareDocletOutputs(differences, new File(testRefFolder), new File(testDestFolder)); @@ -119,8 +129,9 @@ public class UmlDocTest { differences.add(out.getName() + " is different from the reference"); } else { - if (!TestUtils.textFilesEquals(pw, ref, out)) + if (!TestUtils.textFilesEquals(pw, ref, out)) { differences.add(out.getName() + " is different from the reference"); + } } i++; j++; @@ -146,13 +157,14 @@ public class UmlDocTest { * @param options */ private static void runDoclet(String[] options) { - pw.print("Run javadoc -doclet " + doclet); - for (String o : options) - pw.print(" " + o); - pw.println(); - com.sun.tools.javadoc.Main.execute("UMLDoc test", pw, pw, pw, - doclet, options); - System.exit(0); + pw.print("Run javadoc -doclet " + doclet); + for (String o : options) { + pw.print(" " + o); + } + pw.println(); + DocumentationTool systemDocumentationTool = ToolProvider.getSystemDocumentationTool(); + DocumentationTool.DocumentationTask task = systemDocumentationTool.getTask(pw, null, null, UmlGraphDoc.class, Arrays.asList(options), null); + task.call(); } }