From c30bc22a0e4290139be446e5d962147dc1d65d5b Mon Sep 17 00:00:00 2001 From: Kumar Srinivasan Date: Thu, 7 Dec 2017 21:07:12 -0800 Subject: [PATCH] 8034254: Don't use binary testing files broken.jar Reviewed-by: jjg --- .../TestBadPackageFileInJar.java | 39 ++++++++-- .../badPackageFileInJar.jar | Bin 488 -> 0 bytes .../javac/T5090006/AssertionFailureTest.java | 73 ------------------ .../langtools/tools/javac/T5090006/broken.jar | Bin 24053 -> 0 bytes 4 files changed, 32 insertions(+), 80 deletions(-) delete mode 100644 test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar delete mode 100644 test/langtools/tools/javac/T5090006/AssertionFailureTest.java delete mode 100644 test/langtools/tools/javac/T5090006/broken.jar diff --git a/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java b/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java index 38dc0e7ab0c..ac9ad3b995e 100644 --- a/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java +++ b/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2017, 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 @@ -24,27 +24,52 @@ /* * @test * @bug 4691095 6306394 - * @summary Test to make sure that Javadoc emits a useful warning - * when a bad package.html file is in the JAR. + * @summary Make sure that Javadoc emits a useful warning + * when a bad package.html exists in a JAR archive. * @author jamieh - * @library ../lib + * @library /tools/lib ../lib * @modules jdk.javadoc/jdk.javadoc.internal.tool - * @build JavadocTester + * @build JavadocTester toolbox.ToolBox toolbox.JarTask * @run main TestBadPackageFileInJar */ +import toolbox.JarTask; +import toolbox.Task.Result; +import toolbox.ToolBox; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; + public class TestBadPackageFileInJar extends JavadocTester { + final ToolBox tb = new ToolBox(); + public static void main(String... args) throws Exception { TestBadPackageFileInJar tester = new TestBadPackageFileInJar(); tester.runTests(); } @Test - void test() { + void test() throws IOException { + // create the file + Path pkgDir = Paths.get("pkg"); + tb.createDirectories(pkgDir); + Path pkgfilePath = pkgDir.resolve("package.html"); + tb.writeFile(pkgfilePath, "\n\n"); + + // create the jar file + Path jarFile = Paths.get("badPackageFileInJar.jar"); + JarTask jar = new JarTask(tb, "badPackageFileInJar.jar"); + jar.files(pkgDir.toString()).run(); + + // clean up to prevent accidental pick up + tb.cleanDirectory(pkgDir); + tb.deleteFiles(pkgDir.toString()); + javadoc("-d", "out", "-sourcepath", testSrc, - "-classpath", testSrc("badPackageFileInJar.jar"), + "-classpath", jarFile.toString(), "pkg"); checkExit(Exit.OK); diff --git a/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar b/test/langtools/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar deleted file mode 100644 index 5e71b3b33709e910b3561706c89bf7661e26445c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmWIWW@Zs#-~d9Ug{Ha;NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+Id% zlCRR9O#D) diff --git a/test/langtools/tools/javac/T5090006/AssertionFailureTest.java b/test/langtools/tools/javac/T5090006/AssertionFailureTest.java deleted file mode 100644 index 334754cdb01..00000000000 --- a/test/langtools/tools/javac/T5090006/AssertionFailureTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test - * @bug 5090006 - * @summary javac fails with assertion error - * @library /tools/lib - * @modules jdk.compiler/com.sun.tools.javac.api - * jdk.compiler/com.sun.tools.javac.main - * jdk.jdeps/com.sun.tools.javap - * @build toolbox.ToolBox toolbox.JavacTask - * @run main AssertionFailureTest - */ - -import java.io.File; -import java.nio.file.Paths; - -import toolbox.JavacTask; -import toolbox.ToolBox; - -// Original test: test/tools/javac/T5090006/compiler.sh -public class AssertionFailureTest { - - private static final String testSrc = - "import stub_tie_gen.wsdl_hello_lit.client.*;\n" + - "import junit.framework.*;\n" + - "import testutil.ClientServerTestUtil;\n" + - "\n" + - "public class Test {\n" + - "\n" + - " void getStub() throws Exception {\n" + - " Hello_PortType_Stub x = null;\n" + - " new ClientServerTestUtil().setTransport(x, null, null, null);\n" + - " }\n" + - "\n" + - " public static void main(String[] args) {\n" + - " System.out.println(\"FISK\");\n" + - " }\n" + - "}"; - - public static void main(String args[]) throws Exception { - ToolBox tb = new ToolBox(); - String classpath = Paths.get(tb.testSrc, "broken.jar") - + File.pathSeparator - + "."; - new JavacTask(tb) - .classpath(classpath) - .sources(testSrc) - .run(); - } - -} diff --git a/test/langtools/tools/javac/T5090006/broken.jar b/test/langtools/tools/javac/T5090006/broken.jar deleted file mode 100644 index 8127ec4b203b19a0deca26d353301884eb339b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24053 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