changeset 1580:dc8b7aa7cef3

8006212: javac, convert jtreg tests from shell script to java Reviewed-by: jjg
author vromero
date Tue, 19 Feb 2013 17:53:16 +0000
parents 011cf7e0a148
children 9345394ac8fe
files src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java src/share/classes/com/sun/tools/javac/util/ArrayUtils.java test/tools/apt/Basics/CheckAptIsRemovedTest.java test/tools/apt/Basics/NullAPF.java test/tools/apt/Basics/apt.sh test/tools/apt/verifyVariables.sh test/tools/javac/4846262/CheckEBCDICLocaleTest.java test/tools/javac/4846262/Test.java test/tools/javac/4846262/Test.out test/tools/javac/4846262/Test.sh test/tools/javac/6302184/HiddenOptionsShouldUseGivenEncodingTest.java test/tools/javac/6302184/T6302184.sh test/tools/javac/ClassPathTest/ClassPathTest.java test/tools/javac/ClassPathTest/ClassPathTest.sh test/tools/javac/ClassPathTest/ClassPathTest1.java test/tools/javac/ClassPathTest/ClassPathTest2.java test/tools/javac/ClassPathTest/ClassPathTest3.java test/tools/javac/ClassPathTest/bar/pkg/ClassPathTestAux2.java test/tools/javac/ClassPathTest/foo/pkg/ClassPathTestAux1.java test/tools/javac/ClassPathTest/pkg/ClassPathTestAux3.java test/tools/javac/ExtDirs/ExtDirTest.java test/tools/javac/ExtDirs/ExtDirTest_1.java test/tools/javac/ExtDirs/ExtDirTest_2.java test/tools/javac/ExtDirs/ExtDirTest_3.java test/tools/javac/ExtDirs/ExtDirs.sh test/tools/javac/MissingInclude.java test/tools/javac/MissingInclude.sh test/tools/javac/MissingInclude/MissingIncludeTest.java test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java test/tools/javac/ProtectedInnerClass/p1/ProtectedInnerClass1.java test/tools/javac/ProtectedInnerClass/p2/ProtectedInnerClass2.java test/tools/javac/ProtectedInnerClass/p2/ProtectedInnerClass3.java test/tools/javac/T5090006/AssertionFailureTest.java test/tools/javac/T5090006/T5090006.java test/tools/javac/T5090006/compiler.sh test/tools/javac/constDebug/ConstDebug.java test/tools/javac/constDebug/ConstDebug.sh test/tools/javac/constDebug/ConstDebugTest.java test/tools/javac/fatalErrors/NoJavaLang.java test/tools/javac/fatalErrors/NoJavaLang.out test/tools/javac/fatalErrors/NoJavaLang.sh test/tools/javac/fatalErrors/NoJavaLangTest.java test/tools/javac/innerClassFile/Driver.sh test/tools/javac/innerClassFile/InnerClassFileTest.java test/tools/javac/innerClassFile/x/B.java test/tools/javac/innerClassFile/x/C.java test/tools/javac/innerClassFile/y/Main.java test/tools/javac/innerClassFile/y/R1.java test/tools/javac/innerClassFile/y/R2.java test/tools/javac/innerClassFile/y/R3.java test/tools/javac/javazip/A.java test/tools/javac/javazip/JavaZipTest.java test/tools/javac/javazip/Test.sh test/tools/javac/javazip/bad/B.java test/tools/javac/javazip/good/B.java test/tools/javac/lib/ToolBox.java test/tools/javac/links/LinksTest.java test/tools/javac/links/T.java test/tools/javac/links/b/B.java test/tools/javac/links/links.sh test/tools/javac/newlines/NewLineTest.java test/tools/javac/newlines/Newlines.sh test/tools/javac/stackmap/StackMapTest.java test/tools/javac/stackmap/T4955930.java test/tools/javac/stackmap/T4955930.sh test/tools/javac/unicode/SupplementaryJavaID6.java test/tools/javac/unicode/SupplementaryJavaID6.sh test/tools/javah/6257087/T6257087.java test/tools/javah/6257087/foo.java test/tools/javah/6257087/foo.sh test/tools/javah/6257087/foo_bar.h test/tools/javah/ConstMacroTest.sh test/tools/javah/MissingParamClassException.java test/tools/javah/MissingParamClassTest.sh test/tools/javah/ParamClassTest.java test/tools/javah/SubClassConsts.java test/tools/javah/SubClassConsts.out test/tools/javah/SubClassConsts.win test/tools/javah/SuperClassConsts.java test/tools/javah/T4942232/MissingParamClassTest.java test/tools/javah/constMacroTest/ConstMacroTest.java test/tools/javap/4798312/JavapShouldLoadClassesFromRTJarTest.java test/tools/javap/4866831/PublicInterfaceTest.java test/tools/javap/NotPackagePrivateInterface.java test/tools/javap/PublicInterfaceTest.sh test/tools/javap/pathsep.sh test/tools/javap/stackmap/StackmapTest.java test/tools/javap/stackmap/T6271292.java test/tools/javap/stackmap/T6271292.out test/tools/javap/stackmap/T6271292.sh
diffstat 92 files changed, 2790 insertions(+), 3352 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Tue Feb 19 00:31:45 2013 -0800
+++ b/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Tue Feb 19 17:53:16 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -121,19 +121,23 @@
         return result.toList();
     }
 
-    public Boolean call() {
+    public Main.Result doCall() {
         if (!used.getAndSet(true)) {
             initContext();
             notYetEntered = new HashMap<JavaFileObject, JCCompilationUnit>();
             compilerMain.setAPIMode(true);
             result = compilerMain.compile(args, classNames, context, fileObjects, processors);
             cleanup();
-            return result.isOK();
+            return result;
         } else {
             throw new IllegalStateException("multiple calls to method 'call'");
         }
     }
 
+    public Boolean call() {
+        return doCall().isOK();
+    }
+
     public void setProcessors(Iterable<? extends Processor> processors) {
         processors.getClass(); // null check
         // not mt-safe
--- a/src/share/classes/com/sun/tools/javac/util/ArrayUtils.java	Tue Feb 19 00:31:45 2013 -0800
+++ b/src/share/classes/com/sun/tools/javac/util/ArrayUtils.java	Tue Feb 19 17:53:16 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -84,4 +84,18 @@
             return result;
         }
     }
+
+    public static <T> T[] concat(T[] anArr, T[] anotherArr) {
+        int newLength = anArr.length + anotherArr.length;
+        @SuppressWarnings("unchecked")
+        T[] result = (T[]) Array.newInstance(anArr.getClass().getComponentType(), newLength);
+        System.arraycopy(anArr, 0, result, 0, anArr.length);
+        System.arraycopy(anotherArr, 0, result, anArr.length, anotherArr.length);
+        return result;
+    }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T[] concatOpen(T[] anArr, T... anotherArr) {
+        return concat(anArr, anotherArr);
+    }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/apt/Basics/CheckAptIsRemovedTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,96 @@
+/*
+ * 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 4908512 5024825 4957203 4993280 4996963 6174696 6177059 7041249
+ * @summary Make sure apt is removed and doesn't come back
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main CheckAptIsRemovedTest
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+//original test: test/tools/apt/Basics/apt.sh
+public class CheckAptIsRemovedTest {
+    //I think this class can be let with the imports only and that should be enough for as test's purpose
+    private static final String NullAPFSrc =
+        "import com.sun.mirror.apt.*;\n" +
+        "import com.sun.mirror.declaration.*;\n" +
+        "import com.sun.mirror.type.*;\n" +
+        "import com.sun.mirror.util.*;\n" +
+        "import java.util.Collection;\n" +
+        "import java.util.Set;\n\n" +
+
+        "public class NullAPF implements AnnotationProcessorFactory {\n" +
+        "    static class NullAP implements AnnotationProcessor {\n" +
+        "        NullAP(AnnotationProcessorEnvironment ape) {}\n" +
+        "        public void process() {return;}\n" +
+        "    }\n\n" +
+
+        "    static Collection<String> supportedTypes;\n\n" +
+        "    static {\n" +
+        "        String types[] = {\"*\"};\n" +
+        "        supportedTypes = java.util.Arrays.asList(types);\n" +
+        "    }\n\n" +
+
+        "    public Collection<String> supportedOptions() {\n" +
+        "        return java.util.Collections.emptySet();\n" +
+        "    }\n\n" +
+
+        "    public Collection<String> supportedAnnotationTypes() {\n" +
+        "        return supportedTypes;\n" +
+        "    }\n\n" +
+
+        "    public AnnotationProcessor getProcessorFor(" +
+        "        Set<AnnotationTypeDeclaration> atds,\n" +
+        "        AnnotationProcessorEnvironment env) {\n" +
+        "        return new NullAP(env);\n" +
+        "    }\n" +
+        "}";
+
+    public static void main(String[] args) throws Exception {
+        String testJDK = System.getProperty("test.jdk");
+        Path aptLin = Paths.get(testJDK, "bin", "apt");
+        Path aptWin = Paths.get(testJDK, "bin", "apt.exe");
+
+//        if [ -f "${TESTJAVA}/bin/apt" -o -f "${TESTJAVA}/bin/apt.exe" ];then
+        if (Files.exists(aptLin) || Files.exists(aptWin)) {
+            throw new AssertionError("apt executable should not exist");
+        }
+
+//        JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
+//        $JAVAC ${TESTSRC}/NullAPF.java
+        Path classpath = Paths.get(testJDK, "lib", "tools.jar");
+        ToolBox.JavaToolArgs javacArgs =
+                new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
+                .setOptions("-source", "1.5", "-sourcepath", ".",
+                    "-classpath", classpath.toString())
+                .setSources(NullAPFSrc);
+        ToolBox.javac(javacArgs);
+    }
+
+}
--- a/test/tools/apt/Basics/NullAPF.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2004, 2007, 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.
- */
-
-
-import com.sun.mirror.apt.*;
-import com.sun.mirror.declaration.*;
-import com.sun.mirror.type.*;
-import com.sun.mirror.util.*;
-
-import java.util.Collection;
-import java.util.Set;
-
-public class NullAPF implements AnnotationProcessorFactory {
-    static class NullAP implements AnnotationProcessor {
-        NullAP(AnnotationProcessorEnvironment ape) {
-        }
-
-        public void process() {
-            return;
-        }
-    }
-
-    static Collection<String> supportedTypes;
-
-    static {
-        String types[] = {"*"};
-        supportedTypes = java.util.Arrays.asList(types);
-    }
-
-    /*
-     * Processor doesn't examine any options.
-     */
-    public Collection<String> supportedOptions() {
-        return java.util.Collections.emptySet();
-    }
-
-    /*
-     * All annotation types are supported.
-     */
-    public Collection<String> supportedAnnotationTypes() {
-        return supportedTypes;
-    }
-
-    /*
-     * Return the same processor independent of what annotations are
-     * present, if any.
-     */
-    public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds,
-                                        AnnotationProcessorEnvironment env) {
-        return new NullAP(env);
-    }
-}
--- a/test/tools/apt/Basics/apt.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2012, 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 4908512 5024825 4957203 4993280 4996963 6174696 6177059 7041249
-# @run shell ../verifyVariables.sh
-# @run shell apt.sh
-# @summary Make sure apt is removed and doesn't come back
-# @author Joseph D. Darcy
-
-OS=`uname -s`;
-case "${OS}" in
-        CYGWIN* )
-                DIFFOPTS="--strip-trailing-cr"
-        ;;
-
-	* )
-	;;
-esac
-
-# Verify apt executable does not exist
-if [ -f "${TESTJAVA}/bin/apt" -o -f "${TESTJAVA}/bin/apt.exe" ];then
-    echo "apt executable should not exist."
-    exit 1
-fi
-
-# Construct path to javac executable
-JAVAC="${TESTJAVA}/bin/javac ${TESTTOOLVMOPTS} -source 1.5 -sourcepath ${TESTSRC} -classpath ${TESTJAVA}/lib/tools.jar -d . "
-
-$JAVAC ${TESTSRC}/NullAPF.java
-RESULT=$?
-
-case "${RESULT}" in
-        0  )
-        echo "Compilation of apt-using source passed improperly."
-        exit 1
-	;;
-
-        * )
-	;;
-esac
--- a/test/tools/apt/verifyVariables.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 1999, 2002, 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.
-#
-
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/4846262/CheckEBCDICLocaleTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,99 @@
+/*
+ * 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 4846262
+ * @summary check that javac operates correctly in EBCDIC locale
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main CheckEBCDICLocaleTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import com.sun.tools.javac.util.ArrayUtils;
+
+//original test: test/tools/javac/4846262/Test.sh
+public class CheckEBCDICLocaleTest {
+
+    private static final String TestSrc =
+        "public class Test {\n" +
+        "    public void test() {\n" +
+        "        abcdefg\n" +
+        "    }\n" +
+        "}";
+
+    private static final String TestOut =
+        "output/Test.java:3: error: not a statement\n" +
+        "        abcdefg\n" +
+        "        ^\n" +
+        "output/Test.java:3: error: ';' expected\n" +
+        "        abcdefg\n" +
+        "               ^\n" +
+        "2 errors\n";
+
+    public static void main(String[] args) throws Exception {
+        new CheckEBCDICLocaleTest().test();
+    }
+
+    public void test() throws Exception {
+        String native2asciiBinary = Paths.get(
+                System.getProperty("test.jdk"),"bin", "native2ascii").toString();
+        String testVMOpts = System.getProperty("test.tool.vm.opts");
+        String[] mainArgs = ToolBox.getJavacBin();
+
+        ToolBox.createJavaFileFromSource(TestSrc);
+        Files.createDirectory(Paths.get("output"));
+
+//"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -reverse -encoding IBM1047 ${TESTSRC}${FS}Test.java Test.java
+        ToolBox.AnyToolArgs nativeCmdParams =
+                new ToolBox.AnyToolArgs()
+                .setAllArgs(native2asciiBinary, testVMOpts,
+                    "-reverse", "-encoding", "IBM1047",
+                    "Test.java", "output/Test.java");
+        ToolBox.executeCommand(nativeCmdParams);
+
+//"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Duser.language=en -J-Duser.region=US -J-Dfile.encoding=IBM1047 Test.java 2>Test.tmp
+        ToolBox.AnyToolArgs javacParams =
+                new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL)
+                .setAllArgs(ArrayUtils.concatOpen(mainArgs, "-J-Duser.language=en",
+                "-J-Duser.region=US", "-J-Dfile.encoding=IBM1047",
+                "output/Test.java"))
+                .setErrOutput(new File("Test.tmp"));
+        ToolBox.executeCommand(javacParams);
+
+//"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -encoding IBM1047 Test.tmp Test.out
+        nativeCmdParams.setAllArgs(native2asciiBinary, "-encoding", "IBM1047",
+                    "Test.tmp", "Test.out");
+        ToolBox.executeCommand(nativeCmdParams);
+
+//diff ${DIFFOPTS} -c "${TESTSRC}${FS}Test.out" Test.out
+        ToolBox.compareLines(Paths.get("Test.out"),
+                Arrays.asList(TestOut.split("\n")), null);
+
+    }
+
+}
--- a/test/tools/javac/4846262/Test.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-/* /nodynamiccopyright/ */
-public class Test {
-    public void test() {
-        abcdefg
-    }
-}
--- a/test/tools/javac/4846262/Test.out	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-Test.java:4: error: not a statement
-        abcdefg
-        ^
-Test.java:4: error: ';' expected
-        abcdefg
-               ^
-2 errors
--- a/test/tools/javac/4846262/Test.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#!/bin/sh -f
-
-#
-# Copyright (c) 2005, 2011, 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 4846262
-# @summary check that javac operates correctly in EBCDIC locale
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    FS="/"
-    ;;
-  CYGWIN* )
-    FS="/"
-    DIFFOPTS="--strip-trailing-cr"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-rm -f Test.java Test.out
-
-"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -reverse -encoding IBM1047 ${TESTSRC}${FS}Test.java Test.java
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Duser.language=en -J-Duser.region=US -J-Dfile.encoding=IBM1047 Test.java 2>Test.tmp
-
-"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -encoding IBM1047 Test.tmp Test.out
-
-diff ${DIFFOPTS} -c "${TESTSRC}${FS}Test.out" Test.out
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/6302184/HiddenOptionsShouldUseGivenEncodingTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,49 @@
+/*
+ * 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 6302184 6350124 6357979
+ * @summary javac hidden options that generate source should use the given
+ * encoding, if available
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run compile -encoding iso-8859-1 -XD-printsource T6302184.java
+ * @run main HiddenOptionsShouldUseGivenEncodingTest
+ */
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+//original test: test/tools/javac/6302184/T6302184.sh
+public class HiddenOptionsShouldUseGivenEncodingTest {
+
+    public static void main(String[] args) throws Exception {
+//"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -cp ${TC} -encoding iso-8859-1 -XD-printsource ${TS}${FS}T6302184.java 2>&1
+//diff ${DIFFOPTS} -c ${TC}${FS}T6302184.java ${TS}${FS}T6302184.out
+        Path path1 = Paths.get(System.getProperty("test.classes"), "T6302184.java");
+        Path path2 = Paths.get(System.getProperty("test.src"), "T6302184.out");
+        ToolBox.compareLines(path1, path2, "iso-8859-1");
+    }
+
+}
--- a/test/tools/javac/6302184/T6302184.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#! /bin/sh -f
-
-#
-# Copyright (c) 2005, 2009, 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 6302184 6350124 6357979
-# @summary javac hidden options that generate source should use the given encoding, if available
-# @run shell T6302184.sh
-
-TS=${TESTSRC-.}
-TC=${TESTCLASSES-.}
-
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    FS="/"
-    ;;
-  CYGWIN* )
-    FS="/"
-    DIFFOPTS="--strip-trailing-cr"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -cp ${TC} -encoding iso-8859-1 -XD-printsource ${TS}${FS}T6302184.java 2>&1
-diff ${DIFFOPTS} -c ${TC}${FS}T6302184.java ${TS}${FS}T6302184.out
-result=$?
-
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/ClassPathTest/ClassPathTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,148 @@
+/*
+ * 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 4241229 4785453
+ * @summary Test -classpath option and classpath defaults.
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main ClassPathTest
+ */
+
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.TreeMap;
+import com.sun.tools.javac.util.ArrayUtils;
+
+//original test: test/tools/javac/ClassPathTest/ClassPathTest.sh
+public class ClassPathTest {
+
+    private static final String ClassPathTest1Src =
+        "import pkg.*;\n" +
+        "public class ClassPathTest1 {\n" +
+        "    ClassPathTestAux1 x;\n" +
+        "}";
+
+    private static final String ClassPathTest2Src =
+        "import pkg.*;\n" +
+        "public class ClassPathTest2 {\n" +
+        "    ClassPathTestAux2 x;\n" +
+        "}";
+
+    private static final String ClassPathTest3Src =
+        "import pkg.*;\n" +
+        "public class ClassPathTest3 {\n" +
+        "    ClassPathTestAux3 x;\n" +
+        "}";
+
+    private static final String fooPkgClassPathTestAux1Src =
+        "package pkg;\n" +
+        "public class ClassPathTestAux1 {}";
+
+    private static final String barPkgClassPathTestAux2Src =
+        "package pkg;\n" +
+        "public class ClassPathTestAux2 {}";
+
+    private static final String pkgClassPathTestAux3Src =
+        "package pkg;\n" +
+        "public class ClassPathTestAux3 {}";
+
+    ProcessBuilder pb = null;
+
+    public static void main(String[] args) throws Exception {
+        new ClassPathTest().test();
+    }
+
+    public void test() throws Exception {
+        createOutputDirAndSourceFiles();
+        checkCompileCommands();
+    }
+
+    void createOutputDirAndSourceFiles() throws Exception {
+        //dirs and files creation
+        ToolBox.createJavaFileFromSource(ClassPathTest1Src);
+        ToolBox.createJavaFileFromSource(ClassPathTest2Src);
+        ToolBox.createJavaFileFromSource(ClassPathTest3Src);
+        ToolBox.createJavaFileFromSource(Paths.get("foo"),
+                fooPkgClassPathTestAux1Src);
+        ToolBox.createJavaFileFromSource(Paths.get("bar"),
+                barPkgClassPathTestAux2Src);
+        ToolBox.createJavaFileFromSource(pkgClassPathTestAux3Src);
+    }
+
+    void checkCompileCommands() throws Exception {
+        String[] mainArgs = ToolBox.getJavacBin();
+
+//        Without the -cp . parameter the command will fail seems like when called
+//        from the command line, the current dir is added to the classpath
+//        automatically but this is not happening when called using ProcessBuilder
+
+//        testJavac success ClassPathTest3.java
+        String[] commonArgs = ArrayUtils.concatOpen(mainArgs, "-cp", ".");
+
+        ToolBox.AnyToolArgs successParams =
+                new ToolBox.AnyToolArgs()
+                .setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest3.java"));
+        ToolBox.executeCommand(successParams);
+
+//        testJavac failure ClassPathTest1.java
+        ToolBox.AnyToolArgs failParams =
+                new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL)
+                .setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest1.java"));
+        ToolBox.executeCommand(failParams);
+
+//        This is done inside the executeCommand method
+//        CLASSPATH=bar; export CLASSPATH
+
+        Map<String, String> extVars = new TreeMap<>();
+        extVars.put("CLASSPATH", "bar");
+
+//        testJavac success ClassPathTest2.java
+        successParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest2.java")).set(extVars);
+        ToolBox.executeCommand(successParams);
+
+//        testJavac failure ClassPathTest1.java
+        failParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest1.java")).set(extVars);
+        ToolBox.executeCommand(failParams);
+
+//        testJavac failure ClassPathTest3.java
+        failParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest3.java"));
+        ToolBox.executeCommand(failParams);
+
+//        testJavac success -classpath foo ClassPathTest1.java
+
+        commonArgs = ArrayUtils.concatOpen(mainArgs, "-cp", "foo");
+        successParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest1.java"));
+        ToolBox.executeCommand(successParams);
+
+//        testJavac failure -classpath foo ClassPathTest2.java
+        failParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest2.java"));
+        ToolBox.executeCommand(failParams);
+
+//        testJavac failure -classpath foo ClassPathTest3.java
+        failParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest3.java"));
+        ToolBox.executeCommand(failParams);
+    }
+
+}
--- a/test/tools/javac/ClassPathTest/ClassPathTest.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 1999, 2011, 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 4241229 4785453
-# @summary Test -classpath option and classpath defaults.
-# @author maddox
-#
-# @run shell/timeout=180 ClassPathTest.sh
-
-# TODO: Should test sourcepath and classpath separately.
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-javac="${TESTJAVA}${FS}bin${FS}javac"
-
-cleanup() {
-	rm -f *.class pkg${FS}*.class foo${FS}pkg${FS}*.class bar${FS}pkg${FS}*.class
-	cp -rf $TESTSRC${FS}* .
-}
-
-fail() {
-	echo "FAIL: $1"
-	failed="yes"
-}
-
-# report expectedResult $?
-report() {
-	if   test "$1" = "success" -a "$2" = 0; then
-		echo "PASS: succeeded as expected"
-	elif test "$1" = "failure" -a "$2" != 0; then
-		echo "PASS: failed as expected"
-	elif test "$1" = "success" -a "$2" != 0; then
-		fail "test failed unexpectedly"
-	elif test "$1" = "failure" -a "$2" = 0; then
-		fail "test succeeded unexpectedly"
-	else
-		fail "internal error"
-	fi
-}
-
-# testJavac expectedResult javacArgs...
-testJavac() {
-	expectedResult="$1"; shift
-	cleanup
-	echo $javac ${TESTTOOLVMOPTS} "$@"
-	"$javac" ${TESTTOOLVMOPTS} "$@"
-	report $expectedResult $?
-}
-
-unset CLASSPATH
-
-# classpath should default to current directory
-
-testJavac success ClassPathTest3.java
-testJavac failure ClassPathTest1.java
-
-# if CLASSPATH is set, it should be honored
-
-CLASSPATH=bar; export CLASSPATH
-
-testJavac success ClassPathTest2.java
-testJavac failure ClassPathTest1.java
-testJavac failure ClassPathTest3.java
-
-# -classpath option should override default
-
-testJavac success -classpath foo ClassPathTest1.java
-testJavac failure -classpath foo ClassPathTest2.java
-testJavac failure -classpath foo ClassPathTest3.java
-
-if test -n "$failed"; then
-	echo "Some tests failed"
-	exit 1
-else
-	echo PASS: all tests gave expected results
-	exit 0
-fi
--- a/test/tools/javac/ClassPathTest/ClassPathTest1.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg.*;
-
-public class ClassPathTest1 {
-    ClassPathTestAux1 x;
-
-}
--- a/test/tools/javac/ClassPathTest/ClassPathTest2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg.*;
-
-public class ClassPathTest2 {
-    ClassPathTestAux2 x;
-
-}
--- a/test/tools/javac/ClassPathTest/ClassPathTest3.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg.*;
-
-public class ClassPathTest3 {
-    ClassPathTestAux3 x;
-
-}
--- a/test/tools/javac/ClassPathTest/bar/pkg/ClassPathTestAux2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-package pkg;
-
-public class ClassPathTestAux2 {}
--- a/test/tools/javac/ClassPathTest/foo/pkg/ClassPathTestAux1.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-package pkg;
-
-public class ClassPathTestAux1 {}
--- a/test/tools/javac/ClassPathTest/pkg/ClassPathTestAux3.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-package pkg;
-
-public class ClassPathTestAux3 {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/ExtDirs/ExtDirTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,176 @@
+/*
+ * 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 4204897 4256097 4785453 4863609
+ * @summary Test that '.jar' files in -extdirs are found.
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main ExtDirTest
+ */
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+//original test: test/tools/javac/ExtDirs/ExtDirs.sh
+public class ExtDirTest {
+
+    private static final String ExtDirTestClass1Src =
+        "package pkg1;\n" +
+        "\n" +
+        "public class ExtDirTestClass1 {}";
+
+    private static final String ExtDirTestClass2Src =
+        "package pkg2;\n" +
+        "\n" +
+        "public class ExtDirTestClass2 {}";
+
+    private static final String ExtDirTest_1Src =
+        "import pkg1.*;\n" +
+        "\n" +
+        "public class ExtDirTest_1 {\n" +
+        "  ExtDirTestClass1 x;\n" +
+        "}";
+
+    private static final String ExtDirTest_2Src =
+        "import pkg1.*;\n" +
+        "import pkg2.*;\n" +
+        "\n" +
+        "public class ExtDirTest_2 {\n" +
+        "  ExtDirTestClass1 x;\n" +
+        "  ExtDirTestClass2 y;\n" +
+        "}";
+
+    private static final String ExtDirTest_3Src =
+        "import pkg1.*;\n" +
+        "import pkg2.*;\n" +
+        "\n" +
+        "public class ExtDirTest_3 {\n" +
+        "  ExtDirTestClass1 x;\n" +
+        "  ExtDirTestClass2 y;\n" +
+        "}";
+
+    private static final String jar1Manifest =
+        "Manifest-Version: 1.0\n" +
+        "\n" +
+        "Name: pkg1/ExtDirTestClass1.class\n" +
+        "Digest-Algorithms: SHA MD5 \n" +
+        "SHA-Digest: 9HEcO9LJmND3cvOlq/AbUsbD9S0=\n" +
+        "MD5-Digest: hffPBwfqcUcnEdNv4PXu1Q==\n" +
+        "\n" +
+        "Name: pkg1/ExtDirTestClass1.java\n" +
+        "Digest-Algorithms: SHA MD5 \n" +
+        "SHA-Digest: 2FQVe6w3n2Ma1ACYpe8a988EBU8=\n" +
+        "MD5-Digest: /Ivr4zVI9MSM26NmqWtZpQ==\n";
+
+    private static final String jar2Manifest =
+        "Manifest-Version: 1.0\n" +
+        "\n" +
+        "Name: pkg2/ExtDirTestClass2.class\n" +
+        "Digest-Algorithms: SHA MD5 \n" +
+        "SHA-Digest: elbPaqWf8hjj1+ZkkdW3PGTsilo=\n" +
+        "MD5-Digest: 57Nn0e2t1yEQfu/4kSw8yg==\n" +
+        "\n" +
+        "Name: pkg2/ExtDirTestClass2.java\n" +
+        "Digest-Algorithms: SHA MD5 \n" +
+        "SHA-Digest: ILJOhwHg5US+yuw1Sc1d+Avu628=\n" +
+        "MD5-Digest: j8wnz8wneEcuJ/gjXBBQNA==\n";
+
+    List<String> ouputDirParam = Arrays.asList("-d", ".");
+
+    public static void main(String args[]) throws Exception {
+        new ExtDirTest().run();
+    }
+
+    void run() throws Exception {
+        createJars();
+        compileWithExtDirs();
+    }
+
+    void createJars() throws Exception {
+
+//        for i in 1 2 3; do
+//            if test ! -d ext${i}; then mkdir ext${i}; fi
+//            cp ${TESTSRC}${FS}ext${i}${FS}*.jar ext${i}
+//        done
+        sun.tools.jar.Main jarGenerator =
+                new sun.tools.jar.Main(System.out, System.err, "jar");
+
+        ToolBox.JavaToolArgs javacParams =
+                new ToolBox.JavaToolArgs()
+                .setOptions(ouputDirParam)
+                .setSources(ExtDirTestClass1Src);
+        ToolBox.javac(javacParams);
+
+        ToolBox.writeFile(Paths.get("pkg1", "MANIFEST.MF"), jar1Manifest);
+        jarGenerator.run(new String[] {"cfm", "pkg1.jar", "pkg1/MANIFEST.MF",
+            "pkg1/ExtDirTestClass1.class"});
+
+        javacParams.setSources(ExtDirTestClass2Src);
+        ToolBox.javac(javacParams);
+
+        ToolBox.writeFile(Paths.get("pkg2", "MANIFEST.MF"), jar2Manifest);
+        jarGenerator.run(new String[] {"cfm", "pkg2.jar", "pkg2/MANIFEST.MF",
+            "pkg2/ExtDirTestClass2.class"});
+
+        ToolBox.copyFile(Paths.get("ext1", "pkg1.jar"), Paths.get("pkg1.jar"));
+        ToolBox.copyFile(Paths.get("ext2", "pkg2.jar"), Paths.get("pkg2.jar"));
+        ToolBox.copyFile(Paths.get("ext3", "pkg1.jar"), Paths.get("pkg1.jar"));
+        ToolBox.copyFile(Paths.get("ext3", "pkg2.jar"), Paths.get("pkg2.jar"));
+
+        Files.delete(Paths.get("pkg1.jar"));
+        Files.delete(Paths.get("pkg2.jar"));
+
+        Files.delete(Paths.get("pkg1", "ExtDirTestClass1.class"));
+        Files.delete(Paths.get("pkg1", "MANIFEST.MF"));
+        Files.delete(Paths.get("pkg1"));
+        Files.delete(Paths.get("pkg2", "ExtDirTestClass2.class"));
+        Files.delete(Paths.get("pkg2", "MANIFEST.MF"));
+        Files.delete(Paths.get("pkg2"));
+    }
+
+    void compileWithExtDirs() throws Exception {
+
+//"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext1 "${TESTSRC}${FS}ExtDirTest_1.java"
+        ToolBox.JavaToolArgs params =
+                new ToolBox.JavaToolArgs()
+                .setOptions("-d", ".", "-extdirs", "ext1")
+                .setSources(ExtDirTest_1Src);
+        ToolBox.javac(params);
+
+//"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext1${PS}ext2 "${TESTSRC}${FS}ExtDirTest_2.java"
+        params.setOptions("-d", ".", "-extdirs", "ext1" + File.pathSeparator + "ext2")
+                .setSources(ExtDirTest_2Src);
+        ToolBox.javac(params);
+
+//"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext3 "${TESTSRC}${FS}ExtDirTest_3.java"
+        params.setOptions("-d", ".", "-extdirs", "ext3")
+                .setSources(ExtDirTest_3Src);
+        ToolBox.javac(params);
+    }
+
+}
--- a/test/tools/javac/ExtDirs/ExtDirTest_1.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg1.*;
-
-public class ExtDirTest_1 {
-  ExtDirTestClass1 x;
-}
--- a/test/tools/javac/ExtDirs/ExtDirTest_2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg1.*;
-import pkg2.*;
-
-public class ExtDirTest_2 {
-  ExtDirTestClass1 x;
-  ExtDirTestClass2 y;
-}
--- a/test/tools/javac/ExtDirs/ExtDirTest_3.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 1999, 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.
- */
-
-import pkg1.*;
-import pkg2.*;
-
-public class ExtDirTest_3 {
-  ExtDirTestClass1 x;
-  ExtDirTestClass2 y;
-}
--- a/test/tools/javac/ExtDirs/ExtDirs.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 1999, 2011, 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 4204897 4256097 4785453 4863609
-# @summary Test that '.jar' files in -extdirs are found.
-# @author maddox
-#
-# @run shell/timeout=180 ExtDirs.sh
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    PS=":"
-    FS="/"
-    ;;
-  CYGWIN* )
-    PS=";" # native PS, not Cygwin PS
-    FS="/"
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-fail() {
-	echo 'FAIL: unexpected result encountered'
-        exit 1
-}
-
-javac="${TESTJAVA}${FS}bin${FS}javac"
-
-for i in 1 2 3; do
-    if test ! -d ext${i}; then mkdir ext${i}; fi
-    cp ${TESTSRC}${FS}ext${i}${FS}*.jar ext${i}
-done
-
-echo "Test 1"
-"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext1 "${TESTSRC}${FS}ExtDirTest_1.java"
-if [ $? -ne 0 ] ; then fail ; fi
-
-echo "Test 2"
-"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext1${PS}ext2 "${TESTSRC}${FS}ExtDirTest_2.java"
-if [ $? -ne 0 ] ; then fail ; fi
-
-echo "Test 3"
-"$javac" ${TESTTOOLVMOPTS} -d . -extdirs ext3 "${TESTSRC}${FS}ExtDirTest_3.java"
-if [ $? -ne 0 ] ; then fail ; fi
-
-echo PASS: all tests gave expected results
-exit 0
--- a/test/tools/javac/MissingInclude.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2001, 2002, 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 4509051 4785453
- * @summary javac <AT>sourcefiles should catch Exception, when sourcefiles doesn't exist.
- * @author gafter
- *
- * @run shell MissingInclude.sh
- */
-
-class MissingInclude {}
--- a/test/tools/javac/MissingInclude.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2001, 2009, 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.
-#
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-TMP1=OUTPUT.txt
-
-cp "${TESTSRC}${FS}MissingInclude.java" .
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} @/nonexistent_file MissingInclude.java 2> ${TMP1}
-result=$?
-cat ${TMP1}
-rm ${TMP1}
-
-if [ $result -eq 0 ]
-then
-  echo "Failed"
-  exit 1
-else
-  echo "Passed"
-  exit 0
-fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/MissingInclude/MissingIncludeTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,50 @@
+/*
+ * 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 4509051 4785453
+ * @summary javac <AT>sourcefiles should catch Exception, when sourcefiles
+ * doesn't exist.
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main MissingIncludeTest
+ */
+
+//original test: test/tools/javac/MissingInclude.sh
+public class MissingIncludeTest {
+
+    private static final String MissingIncludeSrc =
+        "class MissingInclude {}";
+
+    public static void main(String[] args) throws Exception {
+        ToolBox.createJavaFileFromSource(MissingIncludeSrc);
+
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} @/nonexistent_file MissingInclude.java 2> ${TMP1}
+        ToolBox.JavaToolArgs params =
+                new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
+                .setAllArgs("@/nonexistent_file", "MissingInclude.java");
+        ToolBox.javac(params);
+    }
+
+}
--- a/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-#
-# Copyright (c) 1998, 2012, 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 4087314 4800342
-# @summary Verify allowed access to protected class from another package.
-# @author William Maddox (maddox)
-#
-# @run shell ProtectedInnerClass.sh
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    PS=":"
-    FS="/"
-    ;;
-  CYGWIN* ) 
-    PS=";" # native PS, not Cygwin PS
-    FS="/"
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-rm -f ${TESTCLASSES}${FS}p1${FS}*.class ${TESTCLASSES}${FS}p2${FS}*.class
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TESTCLASSES}" "${TESTSRC}${FS}p1${FS}ProtectedInnerClass1.java" "${TESTSRC}${FS}p2${FS}ProtectedInnerClass2.java"
-"${TESTJAVA}${FS}bin${FS}java" ${TESTVMOPTS} -classpath "${CLASSPATH}${PS}${TESTCLASSES}" p2.ProtectedInnerClass2
-result=$?
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- a/test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2000, 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 4307565
- * @summary Verify that access to inaccessable protected inner class is rejected.
- * @author William Maddox (maddox)
- *
- * @run compile p1/ProtectedInnerClass1.java
- * @run compile/fail p2/ProtectedInnerClass3.java
- */
-class Dummy {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,115 @@
+/*
+ * 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 4087314 4800342 4307565
+ * @summary Verify allowed access to protected class from another package
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main ProtectedInnerClassesTest
+ */
+
+//original tests: test/tools/javac/ProtectedInnerClass/ProtectedInnerClass.sh
+//and test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java
+public class ProtectedInnerClassesTest {
+
+    private static final String protectedInnerClass1Src =
+        "package p1;\n" +
+        "\n" +
+        "public class ProtectedInnerClass1 {\n" +
+        "    protected class Foo {\n" +
+        "        public String getBar() { return \"bar\"; }\n" +
+        "    }\n" +
+        "}";
+
+    private static final String protectedInnerClass2Src =
+        "package p2;\n" +
+        "\n" +
+        "public class ProtectedInnerClass2 extends p1.ProtectedInnerClass1\n" +
+        "{\n" +
+        "    class Bug extends Foo {\n" +
+        "        String getBug() { return getBar(); }\n" +
+        "    }\n" +
+        "\n" +
+        "    public static void main(String[] args) {\n" +
+        "        ProtectedInnerClass2 x = new ProtectedInnerClass2();\n" +
+        "        Bug y = x.new Bug();\n" +
+        "        System.out.println(y.getBug());\n" +
+        "    }\n" +
+        "}";
+
+    private static final String protectedInnerClass3Src =
+        "package p2;\n" +
+        "\n" +
+        "public class ProtectedInnerClass3 {\n" +
+        "\n" +
+        "  void test() {\n" +
+        "    p1.ProtectedInnerClass1.Foo x;\n" +
+        "  }\n" +
+        "\n" +
+        "}";
+
+    public static void main(String args[]) throws Exception {
+        new ProtectedInnerClassesTest().run();
+    }
+
+    void run() throws Exception {
+        compileAndExecute();
+        compileOnly();
+    }
+
+    void compileAndExecute() throws Exception {
+//"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TESTCLASSES}" "${TESTSRC}${FS}p1${FS}ProtectedInnerClass1.java" "${TESTSRC}${FS}p2${FS}ProtectedInnerClass2.java"
+        ToolBox.JavaToolArgs javacParams =
+                new ToolBox.JavaToolArgs()
+                .setOptions("-d", ".")
+                .setSources(protectedInnerClass1Src, protectedInnerClass2Src);
+
+        ToolBox.javac(javacParams);
+
+//"${TESTJAVA}${FS}bin${FS}java" ${TESTVMOPTS} -classpath "${CLASSPATH}${PS}${TESTCLASSES}" p2.ProtectedInnerClass2
+        ToolBox.AnyToolArgs javaParams =
+                new ToolBox.AnyToolArgs()
+                .setAllArgs(ToolBox.javaBinary, "-classpath", System.getProperty("user.dir"),
+                    "p2.ProtectedInnerClass2");
+        ToolBox.executeCommand(javaParams);
+    }
+
+//from test/tools/javac/ProtectedInnerClass/ProtectedInnerClass_2.java
+    void compileOnly() throws Exception {
+//@run compile p1/ProtectedInnerClass1.java
+        ToolBox.JavaToolArgs javacParams =
+                new ToolBox.JavaToolArgs()
+                .setOptions("-d", ".")
+                .setSources(protectedInnerClass1Src);
+
+        ToolBox.javac(javacParams);
+
+//@run compile/fail p2/ProtectedInnerClass3.java
+        javacParams.setSources(protectedInnerClass3Src)
+                .set(ToolBox.Expect.FAIL);
+        ToolBox.javac(javacParams);
+    }
+
+}
--- a/test/tools/javac/ProtectedInnerClass/p1/ProtectedInnerClass1.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 1997, 2000, 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.
- */
-
-/*
- * Auxiliary file for test for 4087314.
- * Verify allowed access to protected class from another package.
- * This file must be compiled prior to compiling p2.ProtectedInnerClass2.
- * It is that compilation that will either succeed or fail.
- */
-
-package p1;
-
-public class ProtectedInnerClass1 {
-    protected class Foo {
-        public String getBar() { return "bar"; }
-    }
-}
--- a/test/tools/javac/ProtectedInnerClass/p2/ProtectedInnerClass2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1997, 2000, 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.
- */
-
-/*
- * Auxiliary file for test for 4087314.
- * Verify allowed access to protected class from another package.
- *
- * This file should compile and run successfully.
- * Note that class p1.ProtectedInnerClass1 must be compiled first.
- */
-
-package p2;
-
-public class ProtectedInnerClass2 extends p1.ProtectedInnerClass1
-{
-    class Bug extends Foo {
-        String getBug() { return getBar(); }
-    }
-
-    public static void main(String[] args) {
-        ProtectedInnerClass2 x = new ProtectedInnerClass2();
-        Bug y = x.new Bug();
-        System.out.println(y.getBug());
-    }
-}
--- a/test/tools/javac/ProtectedInnerClass/p2/ProtectedInnerClass3.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2000, 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.
- */
-
-/*
- * Auxiliary file for ProtectedInnerClass_2.java (bugid 4307565)
- */
-
-package p2;
-
-public class ProtectedInnerClass3 {
-
-  void test() {
-    p1.ProtectedInnerClass1.Foo x;
-  }
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/T5090006/AssertionFailureTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,69 @@
+/*
+ * 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 5090006
+ * @summary javac fails with assertion error
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main AssertionFailureTest
+ */
+
+import java.io.File;
+import java.nio.file.Paths;
+
+//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 {
+        String classpath = Paths.get(System.getProperty("test.src"), "broken.jar")
+                .toString();
+        classpath = new StringBuilder(classpath)
+                .append(File.pathSeparator).append(".").toString();
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -verbose -d "${TESTCLASSES}" -cp "${TESTSRC}${FS}broken.jar" "${TESTSRC}${FS}$1"
+        ToolBox.JavaToolArgs params =
+                new ToolBox.JavaToolArgs()
+                .setOptions("-cp", classpath)
+                .setSources(testSrc);
+        ToolBox.javac(params);
+    }
+
+}
--- a/test/tools/javac/T5090006/T5090006.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2004, 2006, 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
- * @author Peter von der Ah\u00e9
- * @run shell compiler.sh T5090006.java
- * @run main T5090006
- */
-
-import stub_tie_gen.wsdl_hello_lit.client.*;
-import junit.framework.*;
-import testutil.ClientServerTestUtil;
-
-public class T5090006 {
-
-    void getStub() throws Exception {
-        Hello_PortType_Stub x = null;
-        new ClientServerTestUtil().setTransport(x, null, null, null);
-    }
-
-    public static void main(String[] args) {
-        System.out.println("FISK");
-    }
-}
--- a/test/tools/javac/T5090006/compiler.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2009, 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.
-#
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -verbose -d "${TESTCLASSES}" -cp "${TESTSRC}${FS}broken.jar" "${TESTSRC}${FS}$1"
-
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- a/test/tools/javac/constDebug/ConstDebug.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2002, 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 4645152 4785453
- * @summary javac compiler incorrectly inserts <clinit> when -g is specified
- * @author gafter
- *
- * @run shell ConstDebug.sh ConstDebug
- */
-
-public class ConstDebug {
-    public static final long l = 12;
-}
--- a/test/tools/javac/constDebug/ConstDebug.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2009, 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.
-#
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    PS=":"
-    FS="/"
-    ;;
-  CYGWIN* )
-    PS=";" # Platform PS, not Cygwin PS
-    FS="/"
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-TMP1=OUTPUT.txt
-
-cp "${TESTSRC}${FS}$1.java" .
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -g -d . -classpath .${PS}${TESTSRC} $1.java 2> ${TMP1}
-result=$?
-if [ $result -ne 0 ]; then exit $result; fi
-if "${TESTJAVA}${FS}bin${FS}javap" $1.class | grep clinit; then
-  echo "Failed"
-  exit 1;
-else
-  echo "Passed"
-  exit 0;
-fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/constDebug/ConstDebugTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,51 @@
+/*
+ * 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 4645152 4785453
+ * @summary javac compiler incorrectly inserts <clinit> when -g is specified
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run compile -g ConstDebugTest.java
+ * @run main ConstDebugTest
+ */
+
+//original test: test/tools/javac/constDebug/ConstDebug.sh
+public class ConstDebugTest {
+
+    public static final long l = 12;
+
+    public static void main(String args[]) throws Exception {
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -g -d . -classpath .${PS}${TESTSRC} $1.java 2> ${TMP1}
+//        if "${TESTJAVA}${FS}bin${FS}javap" $1.class | grep clinit; then fail
+        ToolBox.JavaToolArgs javapArgs =
+                new ToolBox.JavaToolArgs().setAllArgs("-v",
+                "-classpath", System.getProperty("test.classes"), "ConstDebugTest.class");
+        if (ToolBox.javap(javapArgs).contains("clinit")) {
+            throw new AssertionError(
+                "javac should not create a <clinit> method for ConstDebugTest class");
+        }
+    }
+
+}
--- a/test/tools/javac/fatalErrors/NoJavaLang.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2002, 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 4263768 4785453
- * @summary Verify that the compiler does not crash when java.lang is not
- * found.
- * @author iag
- *
- * @run shell NoJavaLang.sh
- */
-
-public class NoJavaLang {
-    private String s;
-
-    public String s() {
-        return s;
-    }
-}
--- a/test/tools/javac/fatalErrors/NoJavaLang.out	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Fatal Error: Unable to find package java.lang in classpath or bootclasspath
--- a/test/tools/javac/fatalErrors/NoJavaLang.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 1999, 2009, 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.
-#
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf '%s' "TESTSRC=${TESTSRC}" ; echo
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf '%s' "TESTJAVA=${TESTJAVA}" ; echo
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf '%s' "TESTCLASSES=${TESTCLASSES}" ; echo
-printf '%s' "CLASSPATH=${CLASSPATH}" ; echo
-echo
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    FS="/"
-    ;;
-  CYGWIN* )
-    FS="/"
-    DIFFOPTS="--strip-trailing-cr"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-TMP1=OUTPUT.txt
-
-cp "${TESTSRC}${FS}NoJavaLang.java" .
-
-echo "- verifing that fatal error is not produced in the regular case" 
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} NoJavaLang.java 2> "${TMP1}"
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed - base compilation successful"
-else
-  echo "Failed - unable to compile test"
-  exit $result
-fi
-
-echo
-
-echo "- verifing the fatal error is produced"
-rm "${TMP1}"
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -bootclasspath . NoJavaLang.java 2> "${TMP1}"
-
-# return code should be EXIT_SYSERR
-result=$?
-if [ $result -ne 3 ]
-then
-  echo "Failed - unexpected return code"
-  exit $result
-else
-  echo "Passed - expected return code"
-fi
-
-# expected message
-cat "${TMP1}"
-diff ${DIFFOPTS} -c "${TESTSRC}${FS}NoJavaLang.out" "${TMP1}"
-result=$?
-rm "${TMP1}"
-
-if [ $result -eq 0 ]
-then
-  echo "Passed - expected message"
-else
-  echo "Failed - unexpected message"
-  exit $result
-
-fi
-
-exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/fatalErrors/NoJavaLangTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,76 @@
+/*
+ * 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 4263768 4785453
+ * @summary Verify that the compiler does not crash when java.lang is not
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main NoJavaLangTest
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+//original test: test/tools/javac/fatalErrors/NoJavaLang.sh
+public class NoJavaLangTest {
+
+    private static final String noJavaLangSrc =
+        "public class NoJavaLang {\n" +
+        "    private String s;\n" +
+        "\n" +
+        "    public String s() {\n" +
+        "        return s;\n" +
+        "    }\n" +
+        "}";
+
+    private static final String compilerErrorMessage =
+        "Fatal Error: Unable to find package java.lang in classpath or bootclasspath";
+
+    public static void main(String[] args) throws Exception {
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} NoJavaLang.java 2> "${TMP1}"
+        ToolBox.JavaToolArgs javacSuccessArgs =
+                new ToolBox.JavaToolArgs().setSources(noJavaLangSrc);
+        ToolBox.javac(javacSuccessArgs);
+
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -bootclasspath . NoJavaLang.java 2> "${TMP1}"
+        List<String> output = new ArrayList<>();
+        ToolBox.JavaToolArgs javacFailArgs =
+                new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
+                .setOptions("-bootclasspath", ".")
+                .setSources(noJavaLangSrc)
+                .setErrOutput(output);
+
+        int cr = ToolBox.javac(javacFailArgs);
+        if (cr != 3) {
+            throw new AssertionError("Compiler exit result should be 3");
+        }
+
+//        diff ${DIFFOPTS} -c "${TESTSRC}${FS}NoJavaLang.out" "${TMP1}"
+        if (!(output.size() == 1 && output.get(0).equals(compilerErrorMessage))) {
+            throw new AssertionError("javac generated error output is not correct");
+        }
+    }
+
+}
--- a/test/tools/javac/innerClassFile/Driver.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2009, 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 4491755 4785453
-# @summary Prob w/static inner class with same name as a regular class
-# @author gafter
-#
-# @run shell Driver.sh
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-set -x
-mkdir src
-cp -r ${TESTSRC}${FS}* src
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . -classpath . -sourcepath src src/x/B.java src/x/C.java src/y/Main.java
-rm y/R3.class
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . -classpath . -sourcepath src src/y/Main.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/innerClassFile/InnerClassFileTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,127 @@
+/*
+ * 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 4491755 4785453
+ * @summary Prob w/static inner class with same name as a regular class
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main InnerClassFileTest
+ */
+
+import java.nio.file.Paths;
+
+//original test: test/tools/javac/innerClassFile/Driver.sh
+public class InnerClassFileTest {
+
+    private static final String BSrc =
+        "package x;\n" +
+        "\n" +
+        "import x.*;\n" +
+        "\n" +
+        "public class B {\n" +
+        "    public static class C {}\n" +
+        "}";
+
+    private static final String CSrc =
+        "package x;\n" +
+        "\n" +
+        "import x.*;\n" +
+        "\n" +
+        "public class C {}";
+
+    private static final String MainSrc =
+        "package y;\n" +
+        "\n" +
+        "class Main {\n" +
+        "        private R1 a;\n" +
+        "        private R2 b;\n" +
+        "        private R3 c;\n" +
+        "}";
+
+    private static final String R1Src =
+        "package y;\n" +
+        "\n" +
+        "public final class R1 {\n" +
+        "    x.B.C a = null;\n" +
+        "    x.C b = null;\n" +
+        "    R2 c = new R2();\n" +
+        "}";
+
+    private static final String R2Src =
+        "package y;\n" +
+        "\n" +
+        "public final class R2 {\n" +
+        "    x.B.C a = null;\n" +
+        "    x.C b = null;\n" +
+        "}";
+
+    private static final String R3Src =
+        "package y;\n" +
+        "\n" +
+        "public final class R3 {\n" +
+        "    x.B.C a = null;\n" +
+        "    x.C b = null;\n" +
+        "    R1 c = new R1();\n" +
+        "}";
+
+    public static void main(String args[]) throws Exception {
+        new InnerClassFileTest().run();
+    }
+
+    void run() throws Exception {
+        createFiles();
+        compileFiles();
+    }
+
+    void createFiles() throws Exception {
+//        mkdir src
+//        cp -r ${TESTSRC}${FS}* src
+        ToolBox.createJavaFileFromSource(Paths.get("src"), BSrc);
+        ToolBox.createJavaFileFromSource(Paths.get("src"), CSrc);
+        ToolBox.createJavaFileFromSource(Paths.get("src"), MainSrc);
+        ToolBox.createJavaFileFromSource(Paths.get("src"), R1Src);
+        ToolBox.createJavaFileFromSource(Paths.get("src"), R2Src);
+        ToolBox.createJavaFileFromSource(Paths.get("src"), R3Src);
+    }
+
+    void compileFiles() throws Exception {
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . -classpath .
+//              -sourcepath src src/x/B.java src/x/C.java src/y/Main.java
+        ToolBox.JavaToolArgs args =
+                new ToolBox.JavaToolArgs()
+                .setAllArgs("-d", ".", "-cp" , ".", "-sourcepath", "src",
+                "src/x/B.java", "src/x/C.java", "src/y/Main.java");
+        ToolBox.javac(args);
+
+//        rm y/R3.class
+        ToolBox.rm(Paths.get("y", "R3.class"));
+
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . -classpath .
+//                -sourcepath src src/y/Main.java
+        args.setAllArgs("-d", ".", "-cp", ".", "-sourcepath", "src", "src/y/Main.java");
+        ToolBox.javac(args);
+    }
+
+}
--- a/test/tools/javac/innerClassFile/x/B.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package x;
-
-import x.*;
-
-public class B {
-    public static class C {}
-}
--- a/test/tools/javac/innerClassFile/x/C.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package x;
-
-import x.*;
-
-public class C {}
--- a/test/tools/javac/innerClassFile/y/Main.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package y;
-
-class Main {
-        private R1 a;
-        private R2 b;
-        private R3 c;
-}
--- a/test/tools/javac/innerClassFile/y/R1.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package y;
-
-public final class R1 {
-    x.B.C a = null;
-    x.C b = null;
-    R2 c = new R2();
-}
--- a/test/tools/javac/innerClassFile/y/R2.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package y;
-
-public final class R2 {
-    x.B.C a = null;
-    x.C b = null;
-}
--- a/test/tools/javac/innerClassFile/y/R3.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2002, 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.
- */
-
-package y;
-
-public final class R3 {
-    x.B.C a = null;
-    x.C b = null;
-    R1 c = new R1();
-}
--- a/test/tools/javac/javazip/A.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2005, 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.
- */
-
-// A class that references another
-class A {
-    B b;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/javazip/JavaZipTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,126 @@
+/*
+ * 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 4098712 6304984 6388453
+ * @summary check that source files inside zip files on the class path are ignored
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main JavaZipTest
+ */
+
+import java.io.File;
+import java.nio.file.Paths;
+
+//original test: test/tools/javac/javazip/Test.sh
+public class JavaZipTest {
+
+    private static final String ASrc =
+        "class A {\n" +
+        "    B b;\n" +
+        "}";
+
+    private static final String BGoodSrc =
+        "public class B {}";
+
+    private static final String BBadSrc =
+        "class B";
+
+    private static final String[][] jarArgs = {
+        {"cf", "good.jar", "-C", "good", "B.java"},
+        {"cf", "good.zip", "-C", "good", "B.java"},
+        {"cf", "bad.jar", "-C", "bad", "B.java"},
+        {"cf", "bad.zip", "-C", "bad", "B.java"},
+    };
+
+    private static final String[][] successfulCompilationArgs = {
+        {"-d", "output", "A.java", "good/B.java"},
+        {"-d", "output", "-cp", "good", "A.java"},
+        {"-d", "output", "-sourcepath", "good", "A.java"},
+        {"-d", "output", "-cp", "good.zip", "A.java"},
+        {"-d", "output", "-cp", "good.jar", "A.java"},
+    };
+
+    private static final String[][] unSuccessfulCompilationArgs = {
+        {"-d", "output", "A.java", "bad/B.java"},
+        {"-d", "output", "-cp", "bad", "A.java"},
+        {"-d", "output", "-sourcepath", "bad", "A.java"},
+        {"-d", "output", "-sourcepath", "bad.zip", "A.java"},
+        {"-d", "output", "-sourcepath", "bad.jar", "A.java"},
+    };
+
+    public static void main(String[] args) throws Exception {
+        new JavaZipTest().test();
+    }
+
+    public void test() throws Exception {
+        createOutputDirAndSourceFiles();
+        createZipsAndJars();
+        check(ToolBox.Expect.SUCCESS, successfulCompilationArgs);
+        check(ToolBox.Expect.FAIL, unSuccessfulCompilationArgs);
+    }
+
+    void createOutputDirAndSourceFiles() throws Exception {
+        //create output dir
+        new File("output").mkdir();
+
+        //source file creation
+        ToolBox.createJavaFileFromSource(Paths.get("good"), BGoodSrc);
+        ToolBox.createJavaFileFromSource(Paths.get("bad"), BBadSrc);
+        ToolBox.createJavaFileFromSource(ASrc);
+    }
+
+    void createZipsAndJars() throws Exception {
+        //jar and zip creation
+//        check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}good.jar" -C "${TESTSRC}${FS}good" B.java
+//        check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}good.zip" -C "${TESTSRC}${FS}good" B.java
+//        check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}bad.jar"  -C "${TESTSRC}${FS}bad" B.java
+//        check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}bad.zip"  -C "${TESTSRC}${FS}bad" B.java
+        for (String[] args: jarArgs) {
+            ToolBox.jar(args);
+        }
+    }
+
+    void check(ToolBox.Expect whatToExpect, String[][] theArgs) throws Exception {
+//        check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} "${TESTSRC}${FS}A.java" "${TESTSRC}${FS}good${FS}B.java"
+//        check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${TESTSRC}${FS}good"   "${TESTSRC}${FS}A.java"
+//        check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${TESTSRC}${FS}good"  "${TESTSRC}${FS}A.java"
+//        check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${SCR}${FS}good.zip"   "${TESTSRC}${FS}A.java"
+//        check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${SCR}${FS}good.jar"   "${TESTSRC}${FS}A.java"
+
+//        check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} "${TESTSRC}${FS}A.java" "${TESTSRC}${FS}bad${FS}B.java"
+//        check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${TESTSRC}${FS}bad"    "${TESTSRC}${FS}A.java"
+//        check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${TESTSRC}${FS}bad"   "${TESTSRC}${FS}A.java"
+//        check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${SCR}${FS}bad.zip"   "${TESTSRC}${FS}A.java"
+//        check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${SCR}${FS}bad.jar"   "${TESTSRC}${FS}A.java"
+        ToolBox.JavaToolArgs args =
+                new ToolBox.JavaToolArgs(whatToExpect);
+
+        for (String[] allArgs: theArgs) {
+            args.setAllArgs(allArgs);
+            ToolBox.javac(args);
+        }
+    }
+
+}
--- a/test/tools/javac/javazip/Test.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-#! /bin/sh -f
-
-#
-# Copyright (c) 2005, 2011, 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 4098712 6304984 6388453
-# @summary check that source files inside zip files on the class path are ignored
-# @run shell Test.sh
-
-TS=${TESTSRC-.}
-TC=${TESTCLASSES-.}
-SCR=`pwd`
-
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    FS="/"
-    SCR=`pwd`
-    ;;
-  CYGWIN* )
-    FS="/"
-    SCR=`pwd | cygpath -d -f -`
-    ;;
-  Windows* )
-    FS="\\"
-    SCR=`pwd`
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-check() {
-    expected=$1
-    shift
-
-    # clean old classes
-    rm -f ${TC}${FS}*.class 
-
-    echo "$@"
-    if "$@" 2>&1 ; then
-      actual=ok
-    else
-      actual=err
-    fi
-    if [ "$actual" != "$expected" ]; then
-      case "$actual" in
-        ok  ) echo "error: unexpected result: command succeeded" ;;
-        err ) echo "error: unexpected result: command failed"
-      esac
-      exit 1
-    else 
-      case "$actual" in
-        ok  ) echo "command succeeded as expected" ;;
-        err ) echo "command failed as expected."
-      esac
-    fi
-
-    echo 
-}
-
-echo "# create zip/jar files with source code"
-check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}good.jar" -C "${TESTSRC}${FS}good" B.java
-check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}good.zip" -C "${TESTSRC}${FS}good" B.java
-check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}bad.jar"  -C "${TESTSRC}${FS}bad" B.java
-check ok   "${TESTJAVA}${FS}bin${FS}jar" cf "${SCR}${FS}bad.zip"  -C "${TESTSRC}${FS}bad" B.java
-
-echo "# control tests, with no paths"
-check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} "${TESTSRC}${FS}A.java" "${TESTSRC}${FS}good${FS}B.java"
-check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} "${TESTSRC}${FS}A.java" "${TESTSRC}${FS}bad${FS}B.java"
-
-echo "# test that source files are found in directories on path"
-check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${TESTSRC}${FS}good"   "${TESTSRC}${FS}A.java"
-check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${TESTSRC}${FS}good"  "${TESTSRC}${FS}A.java"
-check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${TESTSRC}${FS}bad"    "${TESTSRC}${FS}A.java"
-check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${TESTSRC}${FS}bad"   "${TESTSRC}${FS}A.java"
-
-echo "# test that source files are found in zip/jar files on path"
-check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${SCR}${FS}good.zip"   "${TESTSRC}${FS}A.java"
-check ok   "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -classpath "${SCR}${FS}good.jar"   "${TESTSRC}${FS}A.java"
-check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${SCR}${FS}bad.zip"   "${TESTSRC}${FS}A.java"  
-check err  "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d ${TC} -sourcepath "${SCR}${FS}bad.jar"   "${TESTSRC}${FS}A.java" 
--- a/test/tools/javac/javazip/bad/B.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2005, 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.
- */
-
-// this class is invalid
-class B
--- a/test/tools/javac/javazip/good/B.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2005, 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.
- */
-
-// this is a valid class
-public class B {
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/lib/ToolBox.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,911 @@
+/*
+ * 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URI;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.ToolProvider;
+
+import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.api.JavacTaskImpl;
+
+import sun.tools.jar.Main;
+
+import static java.nio.file.StandardCopyOption.*;
+
+/**
+ * Toolbox for jtreg tests.
+ */
+
+public class ToolBox {
+
+    public static final String lineSeparator = System.getProperty("line.separator");
+    public static final String jdkUnderTest = System.getProperty("test.jdk");
+    public static final String testVMOpts = System.getProperty("test.tool.vm.opts");
+    public static final String javaBinary = Paths.get(jdkUnderTest, "bin", "java").toString();
+    //why this one private. Because the function which provide also the test options should be used
+    private static final String javacBinary = Paths.get(jdkUnderTest, "bin", "javac").toString();
+
+    private static final Charset defaultCharset = Charset.defaultCharset();
+
+    static final JavaCompiler comp = ToolProvider.getSystemJavaCompiler();
+
+    /**
+     * The expected result of command-like method execution.
+     */
+    public enum Expect {SUCCESS, FAIL}
+
+    enum AcceptedParams {
+        EXPECT,
+        SOURCES,
+        OPTIONS,
+        STD_OUTPUT,
+        ERR_OUTPUT,
+        EXTRA_ENV,
+    }
+
+    enum OutputKind {STD, ERR}
+
+    /**
+     * Helper class to abstract the processing of command's output.
+     */
+    static abstract class WriterHelper {
+        OutputKind kind;
+        public abstract void pipeOutput(ProcessBuilder pb);
+        public abstract void readFromStream(Process p) throws IOException;
+        public abstract void addAll(Collection<? extends String> c) throws IOException;
+    }
+
+    /**
+     * Helper class for redirecting command's output to a file.
+     */
+    static class FileWriterHelper extends WriterHelper {
+        File file;
+
+        FileWriterHelper(File file, OutputKind kind) {
+            this.file = file;
+            this.kind = kind;
+        }
+
+        @Override
+        public void pipeOutput(ProcessBuilder pb) {
+            if (file != null) {
+                switch (kind) {
+                    case STD:
+                        pb.redirectInput(file);
+                        break;
+                    case ERR:
+                        pb.redirectError(file);
+                        break;
+                }
+            }
+        }
+
+        @Override
+        public void readFromStream(Process p) throws IOException {}
+
+        @Override
+        public void addAll(Collection<? extends String> c) throws IOException {
+            if (file.exists())
+                Files.write(file.toPath(), c, defaultCharset,
+                        StandardOpenOption.WRITE, StandardOpenOption.APPEND);
+            else
+                Files.write(file.toPath(), c, defaultCharset);
+        }
+    }
+
+    /**
+     * Helper class for redirecting command's output to a String list.
+     */
+    static class ListWriterHelper extends WriterHelper {
+        List<String> list;
+
+        public ListWriterHelper(List<String> list, OutputKind kind) {
+            this.kind = kind;
+            this.list = list;
+        }
+
+        @Override
+        public void pipeOutput(ProcessBuilder pb) {}
+
+        @Override
+        public void readFromStream(Process p) throws IOException {
+            BufferedReader br = null;
+            switch (kind) {
+                case STD:
+                    br = new BufferedReader(new InputStreamReader(p.getInputStream()));
+                    break;
+                case ERR:
+                    br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+                    break;
+            }
+            String line;
+            while ((line = br.readLine()) != null) {
+                list.add(line);
+            }
+        }
+
+        public void addAll(Collection<? extends String> c) {
+            list.addAll(c);
+        }
+    }
+
+    /**
+     * Simple factory class for creating a WriterHelper instance.
+     */
+    static class WriterHelperFactory {
+        static WriterHelper make(File file, OutputKind kind) {
+            return new FileWriterHelper(file, kind);
+        }
+
+        static WriterHelper make(List<String> list, OutputKind kind) {
+            return new ListWriterHelper(list, kind);
+        }
+    }
+
+    /**
+     * A generic class for holding command's arguments.
+     */
+    public static abstract class GenericArgs <T extends GenericArgs> {
+        protected static List<Set<AcceptedParams>> minAcceptedParams;
+
+        protected Set<AcceptedParams> currentParams =
+                EnumSet.<AcceptedParams>noneOf(AcceptedParams.class);
+
+        protected Expect whatToExpect;
+        protected WriterHelper stdOutput;
+        protected WriterHelper errOutput;
+        protected List<String> options;
+        protected String[] optionsArr;
+
+        protected GenericArgs() {
+            set(Expect.SUCCESS);
+        }
+
+        public T set(Expect whatToExpt) {
+            currentParams.add(AcceptedParams.EXPECT);
+            this.whatToExpect = whatToExpt;
+            return (T)this;
+        }
+
+        public T setStdOutput(List<String> stdOutput) {
+            currentParams.add(AcceptedParams.STD_OUTPUT);
+            this.stdOutput = WriterHelperFactory.make(stdOutput, OutputKind.STD);
+            return (T)this;
+        }
+
+        public T setStdOutput(File output) {
+            currentParams.add(AcceptedParams.STD_OUTPUT);
+            this.stdOutput = WriterHelperFactory.make(output, OutputKind.STD);
+            return (T)this;
+        }
+
+        public T setErrOutput(List<String> errOutput) {
+            currentParams.add(AcceptedParams.ERR_OUTPUT);
+            this.errOutput = WriterHelperFactory.make(errOutput, OutputKind.ERR);
+            return (T)this;
+        }
+
+        public T setErrOutput(File errOutput) {
+            currentParams.add(AcceptedParams.ERR_OUTPUT);
+            this.errOutput = WriterHelperFactory.make(errOutput, OutputKind.ERR);
+            return (T)this;
+        }
+
+        public T setAllArgs(String... args) {
+            currentParams.add(AcceptedParams.OPTIONS);
+            this.optionsArr = args;
+            return (T)this;
+        }
+
+        public T setOptions(List<String> options) {
+            currentParams.add(AcceptedParams.OPTIONS);
+            this.options = options;
+            return (T)this;
+        }
+
+        public T setOptions(String... options) {
+            currentParams.add(AcceptedParams.OPTIONS);
+            this.options = Arrays.asList(options);
+            return (T)this;
+        }
+
+        public boolean hasMinParams() {
+            for (Set<AcceptedParams> minSet : minAcceptedParams) {
+                if (currentParams.containsAll(minSet)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
+    /**
+     * A more specific class for holding javac-like command's arguments.
+     */
+    public static class JavaToolArgs extends GenericArgs<JavaToolArgs> {
+
+        static {
+            minAcceptedParams = new ArrayList<>();
+            minAcceptedParams.add(EnumSet.<AcceptedParams>of(
+                    AcceptedParams.EXPECT, AcceptedParams.OPTIONS));
+            minAcceptedParams.add(EnumSet.<AcceptedParams>of(
+                    AcceptedParams.EXPECT, AcceptedParams.SOURCES));
+        }
+
+        protected List<? extends JavaFileObject> sources;
+
+        public JavaToolArgs() {
+            super();
+        }
+
+        public JavaToolArgs(Expect whatToExpt) {
+            super.set(whatToExpt);
+        }
+
+        public JavaToolArgs setSources(List<? extends JavaFileObject> sources) {
+            currentParams.add(AcceptedParams.SOURCES);
+            this.sources = sources;
+            return this;
+        }
+
+        public JavaToolArgs setSources(JavaSource... sources) {
+            return setSources(Arrays.asList(sources));
+        }
+
+        public JavaToolArgs setSources(String... sources) {
+            List<JavaSource> javaSrcs = new ArrayList<>();
+            for (String source : sources) {
+                javaSrcs.add(new JavaSource(source));
+            }
+            return setSources(javaSrcs);
+        }
+    }
+
+    /**
+     * A more specific class for holding any command's arguments.
+     */
+    public static class AnyToolArgs extends GenericArgs<AnyToolArgs> {
+
+        static {
+            minAcceptedParams = new ArrayList<>();
+            minAcceptedParams.add(EnumSet.<AcceptedParams>of(
+                    AcceptedParams.EXPECT, AcceptedParams.OPTIONS));
+        }
+
+        Map<String, String> extraEnv;
+
+        public AnyToolArgs() {
+            super();
+        }
+
+        public AnyToolArgs(Expect whatToExpt) {
+            set(whatToExpt);
+        }
+
+        public AnyToolArgs set(Map<String, String> extraEnv) {
+            currentParams.add(AcceptedParams.EXTRA_ENV);
+            this.extraEnv = extraEnv;
+            return this;
+        }
+    }
+
+    /**
+     * Custom exception for bad command execution.
+     */
+    public static class CommandExecutionException extends Exception {
+        CommandExecutionException(List<String> command, Expect whatToExpt) {
+            super(createMessage(command, whatToExpt));
+        }
+
+        CommandExecutionException(Expect whatToExpt, String... command) {
+            this(Arrays.asList(command), whatToExpt);
+        }
+
+        private static String createMessage(List<String> command, Expect whatToExpt) {
+            StringBuilder sb = new StringBuilder().append("Command : ");
+            sb.append(command.toString()).append(lineSeparator);
+            switch (whatToExpt) {
+                case SUCCESS:
+                    sb.append("    has unexpectedly failed");
+                    break;
+                case FAIL:
+                    sb.append("    has been unexpectedly successful");
+                    break;
+            }
+            return sb.toString();
+        }
+    }
+
+    /**
+     * Custom exception for not equal resources.
+     */
+    public static class ResourcesNotEqualException extends Exception {
+        public ResourcesNotEqualException() {
+            super("The resources provided for comparison are different");
+        }
+
+        public ResourcesNotEqualException(Path path1, Path path2) {
+            super(createMessage(path1, path2));
+        }
+
+        private static String createMessage(Path path1, Path path2) {
+            return new StringBuilder()
+                    .append("The resources provided for comparison in paths \n")
+                    .append(path1.toString()).append(" and \n")
+                    .append(path2.toString()).append("are different").toString();
+        }
+    }
+
+    /**
+     * Method to get the a path to the javac command available at the jdk being
+     * tested along with the test vm options.
+     * @return a String[] with the two components mentioned.
+     */
+    public static String[] getJavacBin() {
+        return new String[]{javacBinary, testVMOpts};
+    }
+
+    /**
+     * A javac compiler caller method.
+     */
+    public static int javac(JavaToolArgs params)
+            throws CommandExecutionException, IOException {
+        if (params.hasMinParams()) {
+            if (params.optionsArr != null) {
+                return genericJavaCMD(JavaCMD.JAVAC, params);
+            } else {
+                return genericJavaCMD(JavaCMD.JAVAC_API, params);
+            }
+        }
+        throw new AssertionError("javac command has been invoked with less parameters than needed");
+    }
+
+    /**
+     * A javap calling method.
+     */
+    public static String javap(JavaToolArgs params)
+            throws CommandExecutionException, IOException {
+        if (params.hasMinParams()) {
+            List<String> list = new ArrayList<>();
+            params.setErrOutput(list);
+            genericJavaCMD(JavaCMD.JAVAP, params);
+            return listToString(list);
+        }
+        throw new AssertionError("javap command has been invoked with less parameters than needed");
+    }
+
+    /**
+     * A javah calling method.
+     */
+    public static int javah(JavaToolArgs params)
+            throws CommandExecutionException, IOException {
+        if (params.hasMinParams()) {
+            return genericJavaCMD(JavaCMD.JAVAH, params);
+        }
+        throw new AssertionError("javah command has been invoked with less parameters than needed");
+    }
+
+    /**
+     * A enum class for langtools commands.
+     */
+    enum JavaCMD {
+        JAVAC {
+            @Override
+            int run(JavaToolArgs params, PrintWriter pw) {
+                return com.sun.tools.javac.Main.compile(params.optionsArr, pw);
+            }
+        },
+        JAVAC_API {
+            @Override
+            int run(JavaToolArgs params, PrintWriter pw) {
+                JavacTask ct = (JavacTask)comp.getTask(pw, null, null,
+                        params.options, null, params.sources);
+                return ((JavacTaskImpl)ct).doCall().exitCode;
+            }
+
+            @Override
+            String getName() {
+                return "javac";
+            }
+
+            @Override
+            List<String> getExceptionMsgContent(JavaToolArgs params) {
+                List<String> result = super.getExceptionMsgContent(params);
+                for (JavaFileObject source : params.sources) {
+                    if (source instanceof JavaSource) {
+                        result.add(((JavaSource)source).name);
+                    }
+                }
+                return result;
+            }
+        },
+        JAVAH {
+            @Override
+            int run(JavaToolArgs params, PrintWriter pw) {
+                return com.sun.tools.javah.Main.run(params.optionsArr, pw);
+            }
+        },
+        JAVAP {
+            @Override
+            int run(JavaToolArgs params, PrintWriter pw) {
+                return com.sun.tools.javap.Main.run(params.optionsArr, pw);
+            }
+        };
+
+        abstract int run(JavaToolArgs params, PrintWriter pw);
+
+        String getName() {
+            return this.name().toLowerCase();
+        }
+
+        List<String> getExceptionMsgContent(JavaToolArgs params) {
+            List<String> result = new ArrayList<>();
+            result.add(getName());
+            result.addAll(params.optionsArr != null ?
+                    Arrays.asList(params.optionsArr) :
+                    params.options);
+            return result;
+        }
+    }
+
+    /**
+     * A helper method for executing langtools commands.
+     */
+    private static int genericJavaCMD(
+            JavaCMD cmd,
+            JavaToolArgs params)
+            throws CommandExecutionException, IOException {
+        int rc = 0;
+        StringWriter sw = null;
+        try (PrintWriter pw = (params.errOutput == null) ?
+                null : new PrintWriter(sw = new StringWriter())) {
+            rc = cmd.run(params, pw);
+        }
+        String out = (sw == null) ? null : sw.toString();
+
+        if (params.errOutput != null && (out != null) && !out.isEmpty()) {
+            params.errOutput.addAll(splitLines(out));
+        }
+
+        if ( (rc == 0 && params.whatToExpect == Expect.SUCCESS) ||
+             (rc != 0 && params.whatToExpect == Expect.FAIL) ) {
+            return rc;
+        }
+
+        throw new CommandExecutionException(cmd.getExceptionMsgContent(params),
+                params.whatToExpect);
+    }
+
+    /**
+     * A jar calling method.
+     */
+    public static boolean jar(String... params) throws CommandExecutionException {
+        Main jarGenerator = new Main(System.out, System.err, "jar");
+        boolean result = jarGenerator.run(params);
+        if (!result) {
+            List<String> command = new ArrayList<>();
+            command.add("jar");
+            command.addAll(Arrays.asList(params));
+            throw new CommandExecutionException(command, Expect.SUCCESS);
+        }
+        return result;
+    }
+
+    /**
+     * A general command calling method.
+     */
+    public static int executeCommand(AnyToolArgs params)
+            throws CommandExecutionException, IOException, InterruptedException {
+        if (params.hasMinParams()) {
+            List<String> cmd = (params.options != null) ?
+                    params.options :
+                    Arrays.asList(params.optionsArr);
+            return executeCommand(cmd, params.extraEnv, params.stdOutput,
+                    params.errOutput, params.whatToExpect);
+        }
+        throw new AssertionError("command has been invoked with less parameters than needed");
+    }
+
+    /**
+     * A helper method for calling a general command.
+     */
+    private static int executeCommand(
+            List<String> command,
+            Map<String, String> extraEnv,
+            WriterHelper stdOutput,
+            WriterHelper errOutput,
+            Expect whatToExpt)
+            throws IOException, InterruptedException, CommandExecutionException {
+        ProcessBuilder pb = new ProcessBuilder(command);
+
+        if (stdOutput != null) stdOutput.pipeOutput(pb);
+        if (errOutput != null) errOutput.pipeOutput(pb);
+
+        if (extraEnv != null) {
+            pb.environment().putAll(extraEnv);
+        }
+
+        Process p = pb.start();
+
+        if (stdOutput != null) stdOutput.readFromStream(p);
+        if (errOutput != null) errOutput.readFromStream(p);
+
+        int result = p.waitFor();
+        if ( (result == 0 && whatToExpt == Expect.SUCCESS) ||
+             (result != 0 && whatToExpt == Expect.FAIL) ) {
+            return result;
+        }
+
+        throw new CommandExecutionException(command, whatToExpt);
+    }
+
+    /**
+     * This set of methods can be used instead of diff when the only needed
+     * result is the equality or inequality of the two given resources.
+     *
+     * A resource can be a file or a String list.
+     */
+    public static void compareLines(Path aPath, Path otherPath, String encoding)
+            throws FileNotFoundException, IOException, ResourcesNotEqualException {
+        compareLines(aPath, otherPath, encoding, false);
+    }
+
+    public static void compareLines(
+            Path aPath, Path otherPath, String encoding, boolean trim)
+            throws FileNotFoundException, IOException, ResourcesNotEqualException {
+        Charset charset = encoding != null ?
+                Charset.forName(encoding) :
+                defaultCharset;
+        List<String> list1 = Files.readAllLines(aPath, charset);
+        List<String> list2 = Files.readAllLines(otherPath, charset);
+        compareLines(list1, list2, trim);
+    }
+
+    public static void compareLines(Path path, List<String> strings, String encoding)
+            throws FileNotFoundException, IOException, ResourcesNotEqualException {
+        compareLines(path, strings, encoding, false);
+    }
+
+    public static void compareLines(Path path, List<String> strings,
+            String encoding, boolean trim)
+            throws FileNotFoundException, IOException, ResourcesNotEqualException {
+        Charset charset = encoding != null ?
+                Charset.forName(encoding) :
+                defaultCharset;
+        List<String> list = Files.readAllLines(path, charset);
+        compareLines(list, strings, trim);
+    }
+
+    public static void compareLines(List<String> list1, List<String> list2)
+            throws ResourcesNotEqualException {
+        compareLines(list1, list2, false);
+    }
+
+    public static void compareLines(List<String> list1,
+            List<String> list2, boolean trim) throws ResourcesNotEqualException {
+        if ((list1 == list2) || (list1 == null && list2 == null)) return;
+        if (list1.size() != list2.size())
+            throw new ResourcesNotEqualException();
+        int i = 0;
+        int j = 0;
+        while (i < list1.size() &&
+               j < list2.size() &&
+               equals(list1.get(i), list2.get(j), trim)) {
+            i++; j++;
+        }
+        if (!(i == list1.size() && j == list2.size()))
+            throw new ResourcesNotEqualException();
+    }
+
+    private static boolean equals(String s1, String s2, boolean trim) {
+        return (trim ? s1.trim().equals(s2.trim()) : s1.equals(s2));
+    }
+
+    /**
+     * A set of simple grep-like methods, looks for regExpr in text.
+     * The content of text is split using the new line character as a pattern
+     * and later the regExpr is seek in every split line. If a match is found,
+     * the whole line is added to the result.
+     */
+    public static List<String> grep(String regExpr, String text) {
+        return grep(regExpr, splitLines(text));
+    }
+
+    public static List<String> grep(String regExpr, List<String> text) {
+        List<String> result = new ArrayList<>();
+        Pattern pattern = Pattern.compile(regExpr);
+        for (String s : text) {
+            if (pattern.matcher(s).find()) {
+                result.add(s);
+            }
+        }
+        return result;
+    }
+
+    public static List<String> grep(String regExpr, File f)
+            throws IOException {
+        List<String> lines = Files.readAllLines(f.toPath(), defaultCharset);
+        return grep(regExpr, lines);
+    }
+
+    /**
+     * A touch-like method.
+     */
+    public static boolean touch(String fileName) {
+        File file = new File(fileName);
+        return touch(file);
+    }
+
+    public static boolean touch(File file) {
+        if (file.exists()) {
+            file.setLastModified(System.currentTimeMillis());
+            return true;
+        }
+        return false;
+    }
+
+    public static void createJavaFile(File outFile) throws IOException {
+        createJavaFile(outFile, null);
+    }
+
+    /**
+     * A method for creating a valid but very simple java file.
+     */
+    public static void createJavaFile(File outFile, File superClass)
+            throws IOException {
+        String srcStr = "public class " + getSimpleName(outFile) + " ";
+        if (superClass != null) {
+            srcStr = srcStr.concat("extends " + getSimpleName(superClass) + " ");
+        }
+        srcStr = srcStr.concat("{}");
+        try (PrintWriter ps = new PrintWriter(new FileWriter(outFile))) {
+            ps.println(srcStr);
+        }
+    }
+
+    /**
+     * Creates a java file name given its source.
+     * The file is created in the working directory, creating a directory
+     * tree if there is a package declaration.
+     */
+    public static void createJavaFileFromSource(String source) throws IOException {
+        createJavaFileFromSource(null, source);
+    }
+
+    /**
+     * Creates a java file name given its source.
+     * The file is created in the working directory, creating a directory
+     * tree if there is a package declaration or the argument initialPath
+     * has a valid path.
+     *
+     * e.i. if initialPath is foo/ and the source is:
+     * package bar;
+     *
+     * public class bazz {}
+     *
+     * this method will create the file foo/bar/bazz.java in the working
+     * directory.
+     */
+    public static void createJavaFileFromSource(Path initialPath,
+            String source) throws IOException {
+        String fileName = getJavaFileNameFromSource(source);
+        String dirTree = getDirTreeFromSource(source);
+        Path path = (dirTree != null) ?
+                Paths.get(dirTree, fileName) :
+                Paths.get(fileName);
+        path = (initialPath != null) ?
+                initialPath.resolve(path):
+                path;
+        writeFile(path, source);
+    }
+
+    static Pattern publicClassPattern =
+            Pattern.compile("public\\s+(?:class|enum|interface){1}\\s+(\\w+)");
+    static Pattern packageClassPattern =
+            Pattern.compile("(?:class|enum|interface){1}\\s+(\\w+)");
+
+    /**
+     * Extracts the java file name from the class declaration.
+     * This method is intended for simple files and uses regular expressions,
+     * so comments matching the pattern can make the method fail.
+     */
+    private static String getJavaFileNameFromSource(String source) {
+        String className = null;
+        Matcher matcher = publicClassPattern.matcher(source);
+        if (matcher.find()) {
+            className = matcher.group(1) + ".java";
+        } else {
+            matcher = packageClassPattern.matcher(source);
+            if (matcher.find()) {
+                className = matcher.group(1) + ".java";
+            } else {
+                throw new AssertionError("Could not extract the java class " +
+                        "name from the provided source");
+            }
+        }
+        return className;
+    }
+
+    static Pattern packagePattern =
+            Pattern.compile("package\\s+(((?:\\w+\\.)*)(?:\\w+))");
+
+    /**
+     * Extracts the path from the package declaration if present.
+     * This method is intended for simple files and uses regular expressions,
+     * so comments matching the pattern can make the method fail.
+     */
+    private static String getDirTreeFromSource(String source) {
+        Matcher matcher = packagePattern.matcher(source);
+        return matcher.find() ?
+            matcher.group(1).replace(".", File.separator) :
+            null;
+    }
+
+    /**
+     * A method for creating a jar's manifest file with supplied data.
+     */
+    public static void mkManifestWithClassPath(String mainClass,
+            String... classes) throws IOException {
+        List <String> lines = new ArrayList<>();
+
+        StringBuilder sb = new StringBuilder("Class-Path: ".length() +
+                classes[0].length()).append("Class-Path: ").append(classes[0]);
+        for (int i = 1; i < classes.length; i++) {
+            sb.append(" ").append(classes[i]);
+        }
+        lines.add(sb.toString());
+        if (mainClass != null) {
+            lines.add(new StringBuilder("Main-Class: ".length() +
+                      mainClass.length())
+                      .append("Main-Class: ")
+                      .append(mainClass).toString());
+        }
+        Files.write(Paths.get("MANIFEST.MF"), lines, null);
+    }
+
+    /**
+     * A utility method to obtain the file name.
+     */
+    static String getSimpleName(File inFile) {
+        return inFile.toPath().getFileName().toString();
+    }
+
+    /**
+     * A method to write to a file, the directory tree is created if needed.
+     */
+    public static File writeFile(Path path, String body) throws IOException {
+        File result;
+        if (path.getParent() != null) {
+            Files.createDirectories(path.getParent());
+        }
+        try (FileWriter out = new FileWriter(result = path.toAbsolutePath().toFile())) {
+            out.write(body);
+        }
+        return result;
+    }
+
+    public static File writeFile(String path, String body) throws IOException {
+        return writeFile(Paths.get(path), body);
+    }
+
+    /**
+     * A rm-like method, the file is deleted only if it exists.
+     */
+    public static void rm(Path path) throws Exception {
+        Files.deleteIfExists(path);
+    }
+
+    public static void rm(String filename) throws Exception {
+        rm(Paths.get(filename));
+    }
+
+    public static void rm(File f) throws Exception {
+        rm(f.toPath());
+    }
+
+    /**
+     * Copy source file to destination file.
+     */
+    public static void copyFile(File destfile, File srcfile)
+        throws IOException {
+        copyFile(destfile.toPath(), srcfile.toPath());
+    }
+
+    public static void copyFile(Path destPath, Path srcPath)
+        throws IOException {
+        Files.createDirectories(destPath);
+        Files.copy(srcPath, destPath, REPLACE_EXISTING);
+    }
+
+    /**
+     * Splits a String using the System's line separator character as splitting point.
+     */
+    public static List<String> splitLines(String lines) {
+        return Arrays.asList(lines.split(lineSeparator));
+    }
+
+    /**
+     * Converts a String list into one String by appending the System's line separator
+     * character after each component.
+     */
+    private static String listToString(List<String> lines) {
+        StringBuilder sb = new StringBuilder();
+        for (String s : lines) {
+            sb.append(s).append(lineSeparator);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Class representing an in-memory java source file. It is able to extract
+     * the file name from simple source codes using regular expressions.
+     */
+    public static class JavaSource extends SimpleJavaFileObject {
+        String source;
+        String name;
+
+        public JavaSource(String className, String source) {
+            super(URI.create(className),
+                    JavaFileObject.Kind.SOURCE);
+            this.name = className;
+            this.source = source;
+        }
+
+        public JavaSource(String source) {
+            super(URI.create(getJavaFileNameFromSource(source)),
+                    JavaFileObject.Kind.SOURCE);
+            this.name = getJavaFileNameFromSource(source);
+            this.source = source;
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+            return source;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/links/LinksTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,63 @@
+/*
+ * 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 4266026
+ * @summary javac no longer follows symlinks
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main LinksTest
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+//original test: test/tools/javac/links/links.sh
+public class LinksTest {
+
+    private static final String BSrc =
+        "package a;\n" +
+        "\n" +
+        "public class B {}";
+
+    private static final String TSrc =
+        "class T extends a.B {}";
+
+    public static void main(String args[])
+            throws Exception {
+//      mkdir tmp
+//      cp ${TESTSRC}/b/B.java tmp
+        ToolBox.writeFile(Paths.get("tmp", "B.java"), BSrc);
+
+//        ln -s `pwd`/tmp "${TESTCLASSES}/a"
+        Files.createSymbolicLink(Paths.get("a"), Paths.get("tmp"));
+//
+////"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -sourcepath "${TESTCLASSES}" -d "${TESTCLASSES}/classes" "${TESTSRC}/T.java" 2>&1
+        ToolBox.JavaToolArgs javacArgs =
+                new ToolBox.JavaToolArgs()
+                .setOptions("-sourcepath", ".", "-d", ".").setSources(TSrc);
+        ToolBox.javac(javacArgs);
+    }
+
+}
--- a/test/tools/javac/links/T.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2001, 2008, 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.
- */
-
-class T extends a.B {}
--- a/test/tools/javac/links/b/B.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2001, 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.
- */
-
-package a;
-
-public class B {}
--- a/test/tools/javac/links/links.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2001, 2008, 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 4266026
-# @summary javac no longer follows symlinks
-#
-# @run shell links.sh
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    NULL=/dev/null
-    PS=":"
-    FS="/"
-    ;;
-  * )
-    echo "Unrecognized system - test skipped."
-    exit 0;
-    ;;
-esac
-
-mkdir tmp
-cp ${TESTSRC}/b/B.java tmp
-
-rm -rf T.class B.class b/B.class "${TESTCLASSES}/a" "${TESTCLASSES}/classes"
-ln -s `pwd`/tmp "${TESTCLASSES}/a"
-mkdir "${TESTCLASSES}/classes"
-
-"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -sourcepath "${TESTCLASSES}" -d "${TESTCLASSES}/classes" "${TESTSRC}/T.java" 2>&1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/newlines/NewLineTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,62 @@
+/*
+ * 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 4110560 4785453
+ * @summary portability : javac.properties
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main NewLineTest
+ */
+
+import java.io.File;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.util.List;
+import com.sun.tools.javac.util.ArrayUtils;
+
+//original test: test/tools/javac/newlines/Newlines.sh
+public class NewLineTest {
+
+    public static void main(String args[]) throws Exception {
+        String[] mainArgs = ToolBox.getJavacBin();
+
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Dline.separator='@' > ${TMP1} 2>&1
+        File javacErrOutput = new File("output.txt");
+        ToolBox.AnyToolArgs cmdArgs =
+                new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL)
+                .setAllArgs(ArrayUtils.concatOpen(mainArgs, "-J-Dline.separator='@'"))
+                .setErrOutput(javacErrOutput);
+        ToolBox.executeCommand(cmdArgs);
+
+//        result=`cat ${TMP1} | wc -l`
+//        if [ "$result" -eq 0 ] passed
+        List<String> lines = Files.readAllLines(javacErrOutput.toPath(),
+                Charset.defaultCharset());
+        if (lines.size() != 1) {
+            throw new AssertionError("The compiler output should have one line only");
+        }
+    }
+
+}
--- a/test/tools/javac/newlines/Newlines.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#
-# Copyright (c) 2002, 2012, 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 4110560 4785453
-# @summary portability : javac.properties
-#
-# @run shell Newlines.sh
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-TMP1=OUTPUT.txt
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Dline.separator='@' > ${TMP1} 2>&1
-cat ${TMP1}
-result=`cat ${TMP1} | wc -l`
-if [ "$result" -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/stackmap/StackMapTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,65 @@
+/*
+ * 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 4955930
+ * @summary The "method0" StackMap attribute should have two entries instead of three
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run compile -source 6 -target 6 StackMapTest.java
+ * @run main StackMapTest
+ */
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+//original test: test/tools/javac/stackmap/T4955930.sh
+public class StackMapTest {
+
+    class Test {
+        void method0(boolean aboolean) throws Exception {
+            label_0:
+            while (true) {
+                if (aboolean) ;
+                else break label_0;
+            }
+        }
+    }
+
+    public static void main(String args[]) throws Exception {
+//    "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -source 6 -target 6 T4955930.java
+
+//    "${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} -verbose T4955930 > ${TMP1}
+        Path pathToClass = Paths.get(System.getProperty("test.classes"),
+                "StackMapTest$Test.class");
+        ToolBox.JavaToolArgs javapArgs =
+                new ToolBox.JavaToolArgs().setAllArgs("-v", pathToClass.toString());
+
+//        grep "StackMapTable: number_of_entries = 2" ${TMP1}
+        if (!ToolBox.javap(javapArgs).contains("StackMapTable: number_of_entries = 2"))
+            throw new AssertionError("The number of entries of the stack map "
+                    + "table should be equal to 2");
+    }
+
+}
--- a/test/tools/javac/stackmap/T4955930.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2005, 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 4955930
- * @summary The "method0" StackMap attribute should have two entries instead of three
- * @author wtao
- *
- * @run shell T4955930.sh
- */
-
-public class T4955930 {
-
-   void method0(boolean aboolean) throws Exception {
-      label_0:
-      while (true) {
-         if (aboolean) {
-            ;
-         }
-         else {
-            break label_0;
-         }
-         System.out.println("");
-      }
-   }
-}
--- a/test/tools/javac/stackmap/T4955930.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2009, 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.
-#
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows_95 | Windows_98 | Windows_NT )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-TMP1=T4955930.javap
-
-cp "${TESTSRC}${FS}T4955930.java" .
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -source 6 -target 6 T4955930.java
-result=$?
-if [ $result -ne 0 ]
-then
-    exit $result
-fi
-
-"${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} -verbose T4955930 > ${TMP1}
-grep "StackMapTable: number_of_entries = 2" ${TMP1}
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- a/test/tools/javac/unicode/SupplementaryJavaID6.java	Tue Feb 19 00:31:45 2013 -0800
+++ b/test/tools/javac/unicode/SupplementaryJavaID6.java	Tue Feb 19 17:53:16 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -21,12 +21,20 @@
  * questions.
  */
 
+/*
+ * @test
+ * @bug 4914724 4973116 5014511
+ * @summary Ensure that a supplementary character can be used as part/whole of a
+ * class name on platforms that have Unicode aware filesystems.
+ * @run main SupplementaryJavaID6
+ */
+
 public class SupplementaryJavaID6 {
     public static void main(String[] s) {
-        new SupplementaryJavaID6();
+        new SupplementaryJavaID6().test();
     }
 
-    public SupplementaryJavaID6() {
+    void test() {
         \ud801\udc00 instance = new \ud801\udc00();
         instance.\ud801\udc01();
     }
--- a/test/tools/javac/unicode/SupplementaryJavaID6.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2004, 2009, 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 4914724 4973116 5014511
-# @summary Ensure that a supplementary character can be used as part/whole of a class
-#          name on platforms that have Unicode aware filesystems.
-# @author Naoto Sato
-# @run shell SupplementaryJavaID6.sh SupplementaryJavaID6
-
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    if [ -d /usr/lib/locale/en_US.UTF-8 -o -d /usr/lib/locale/en_US.utf8 ]
-    then
-        ENV="env LANG=en_US.UTF-8"
-        PS=":"
-        FS="/"
-    else
-        echo "As there is no en_US.UTF-8 locale available on this system, the compilation of the test case may or may not fail.  Ignoring this test."
-        exit 0;
-    fi
-    ;;
-  Windows_98 | Windows_ME )
-    echo "As Windows 98/Me do not provide Unicode-aware file system, the compilation of the test case is expected to fail on these platforms.  Ignoring this test."
-    exit 0;
-    ;;
-  Windows* )
-    ENV=""
-    PS=";"
-    FS="\\"
-    ;;
-  CYGWIN* )
-    ENV=""
-    PS=";" # platform PS, not cygwin PS
-    FS="/"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-# compile
-cp "${TESTSRC}${FS}$1.java" .
-${ENV} "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . -classpath ".${PS}${TESTSRC}" $1.java
-result=$?
-
-if [ $result -ne 0 ]
-then
-  echo "Failed"
-  exit $result
-fi
-
-# run
-${ENV} "${TESTJAVA}${FS}bin${FS}java" ${TESTVMOPTS} $1 
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-
-# Cleanup
-${ENV} rm -f ./$1*.class
-
-exit $result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javah/6257087/T6257087.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,81 @@
+/*
+ * 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 6257087
+ * @summary javah doesn't produce proper signatures for inner class native methods
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main T6257087
+ */
+
+import java.nio.file.Paths;
+
+//original test: test/tools/javah/6257087/foo.sh
+public class T6257087 {
+
+    private static final String fooBarGoldenFile =
+        "/* DO NOT EDIT THIS FILE - it is machine generated */\n" +
+        "#include <jni.h>\n" +
+        "/* Header for class foo_bar */\n" +
+        "\n" +
+        "#ifndef _Included_foo_bar\n" +
+        "#define _Included_foo_bar\n" +
+        "#ifdef __cplusplus\n" +
+        "extern \"C\" {\n" +
+        "#endif\n" +
+        "/*\n" +
+        " * Class:     foo_bar\n" +
+        " * Method:    aardvark\n" +
+        " * Signature: ()V\n" +
+        " */\n" +
+        "JNIEXPORT void JNICALL Java_foo_00024bar_aardvark\n" +
+        "  (JNIEnv *, jobject);\n" +
+        "\n" +
+        "#ifdef __cplusplus\n" +
+        "}\n" +
+        "#endif\n" +
+        "#endif";
+
+    public static void main(String[] args) throws Exception {
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TC}" "${TS}${FS}foo.java"
+
+//        "${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} -classpath "${TC}" -d "${TC}" foo
+        ToolBox.JavaToolArgs javahArgs =
+                new ToolBox.JavaToolArgs()
+                .setAllArgs("-cp", System.getProperty("test.classes"), "foo");
+        ToolBox.javah(javahArgs);
+
+//        diff ${DIFFOPTS} -c "${TS}${FS}foo_bar.h" "${TC}${FS}foo_bar.h"
+        ToolBox.compareLines(Paths.get("foo_bar.h"),
+                ToolBox.splitLines(fooBarGoldenFile), null);
+    }
+
+}
+
+class foo {
+    class bar {
+        public native void aardvark();
+    }
+}
--- a/test/tools/javah/6257087/foo.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2006, 2007, 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.
- */
-
-
-class foo {
-    class bar {
-        public native void aardvark();
-    }
-}
--- a/test/tools/javah/6257087/foo.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#! /bin/sh -f
-
-#
-# Copyright (c) 2006, 2009, 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 6257087
-# @run shell foo.sh
-
-
-TS=${TESTSRC-.}
-TC=${TESTCLASSES-.}
-
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    PS=":"
-    FS="/"
-    ;;
-  CYGWIN* )
-    PS=":"
-    FS="/"
-    DIFFOPTS="--strip-trailing-cr"
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TC}" "${TS}${FS}foo.java" 
-"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} -classpath "${TC}" -d "${TC}" foo
-diff ${DIFFOPTS} -c "${TS}${FS}foo_bar.h" "${TC}${FS}foo_bar.h"
-result=$?
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- a/test/tools/javah/6257087/foo_bar.h	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class foo_bar */
-
-#ifndef _Included_foo_bar
-#define _Included_foo_bar
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     foo_bar
- * Method:    aardvark
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_foo_00024bar_aardvark
-  (JNIEnv *, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/tools/javah/ConstMacroTest.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2003, 2009, 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 4786406 4781221 4780341 6214324
-
-# Validates rewritten javah handling of class defined constants
-# and ensures that the appropriate macro definitions are placed
-# in the generated header file.
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-EXPECTED_JAVAH_OUT_FILE=SubClassConsts.out
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    PS=":"
-    FS="/"
-    ;;
-  CYGWIN* )
-    PS=":"
-    FS="/"
-    DIFFOPTS="--strip-trailing-cr"
-    EXPECTED_JAVAH_OUT_FILE=SubClassConsts.win
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    EXPECTED_JAVAH_OUT_FILE=SubClassConsts.win
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
- esac
-
-GENERATED_HEADER_FILE=SubClassConsts.h
-HEADER_FILE_FILTERED=SubClassConsts.h.linefeed-filtered
-
-rm -rf SuperClassConsts.class SubClassConsts.class
-
-cp "${TESTSRC}${FS}SuperClassConsts.java" .
-cp "${TESTSRC}${FS}SubClassConsts.java" .
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . "${TESTSRC}${FS}SubClassConsts.java"
-
-"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} SubClassConsts
-
-diff ${DIFFOPTS} "${TESTSRC}${FS}${EXPECTED_JAVAH_OUT_FILE}" "${GENERATED_HEADER_FILE}"
-result=$?
-rm ${GENERATED_HEADER_FILE}
-
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- a/test/tools/javah/MissingParamClassException.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2003, 2007, 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.
- */
-
-
-/*
- * ParamClassTest has a native method param which subclasses
- * this class
- *
- */
-
-public class MissingParamClassException extends Exception {
-    public MissingParamClassException() {
-        System.out.println("MissingParamClassException constructor called");
-    }
-}
--- a/test/tools/javah/MissingParamClassTest.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2003, 2009, 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 4942232
-
-#
-# Verifies that javah won't attempt to generate a header file
-# if a native method in a supplied class contains a parameter
-# type whose corresponding class is missing or not in the 
-# classpath
-
-TMP1=OUTPUT.txt
-
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTSRC=${TESTSRC}"
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTCLASSES=${TESTCLASSES}"
-echo "CLASSPATH=${CLASSPATH}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    PS=":"
-    FS="/"
-    ;;
-  Windows* )
-    PS=";"
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
- esac
-
-GENERATED_HEADER_FILE=ParamClassTest.h
-
-rm -f ParamClassTest.class MissingParamClassException.class ParamClassTest.h
-rm -f ${TMP1}
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . "${TESTSRC}${FS}ParamClassTest.java" "${TESTSRC}${FS}MissingParamClassException.java"
-
-# Before running javah remove dependent class file
-rm -f MissingParamClassException.class 
-
-"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} ParamClassTest 2>${TMP1}
-
-if [ -f $GENERATED_HEADER_FILE ]; then
-     echo "1-- Failed: $GENERATED_HEADER_FILE found"
-     rc=1
-fi
-if [ ! -s ${TMP1} ]; then
-     echo "1-- Failed: ${TMP1} is empty"
-     rc=1
-fi
-
-# Clean out work dir
-rm -f MissingParamClassException.class ParamClassTest.class
-rm -f $GENERATED_HEADER_FILE $TMP1 
-
-# Re-compile everything
-
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . "${TESTSRC}${FS}ParamClassTest.java" "${TESTSRC}${FS}MissingParamClassException.java"
-
-
-# Before re-run of javah remove dependent class file Param.class 
-rm -f Param.class
-
-"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} ParamClassTest 2>${TMP1}
-
-if [ -f $GENERATED_HEADER_FILE ]; then
-     echo "2-- Failed: $GENERATED_HEADER_FILE found"
-     rc=1
-fi
-if [ ! -s ${TMP1} ]; then
-     echo "2-- Failed: ${TMP1} is empty"
-     rc=1
-fi
-
-if [ "$rc" = "" ]; then
-    echo Passed
-else
-    echo Failed
-    exit 1
-fi
--- a/test/tools/javah/ParamClassTest.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2003, 2007, 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.
- */
-
-
-/*
- * Class containing a native method which contains a native
- * method with non primitive type
- */
-
-public class ParamClassTest {
-    public native void method(Param s);
-
-    public static void main(String args[]) {
-    }
-}
-
-class Param extends MissingParamClassException {
-    Param() {
-        System.out.println("Param constructor");
-    }
-}
--- a/test/tools/javah/SubClassConsts.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2003, 2007, 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.
- */
-
-
-/*
- * Subclass defines its own set of constants
- * It is itself serializable by virtue of extending SuperClassConsts
- *
- */
-public class SubClassConsts extends SuperClassConsts {
-
-    private final static int SUB_INT_CONSTANT = 2;
-    private final static double SUB_DOUBLE_CONSTANT = 2.25;
-    private final static float SUB_FLOAT_CONSTANT = 7.90f;
-    private final static boolean SUB_BOOLEAN_CONSTANT = true;
-
-    public SubClassConsts(String p) {
-        super(p);
-    }
-}
--- a/test/tools/javah/SubClassConsts.out	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class SubClassConsts */
-
-#ifndef _Included_SubClassConsts
-#define _Included_SubClassConsts
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef SubClassConsts_serialVersionUID
-#define SubClassConsts_serialVersionUID 6733861379283244755LL
-#undef SubClassConsts_SUPER_INT_CONSTANT
-#define SubClassConsts_SUPER_INT_CONSTANT 3L
-#undef SubClassConsts_SUPER_FLOAT_CONSTANT
-#define SubClassConsts_SUPER_FLOAT_CONSTANT 99.3f
-#undef SubClassConsts_SUPER_DOUBLE_CONSTANT
-#define SubClassConsts_SUPER_DOUBLE_CONSTANT 33.2
-#undef SubClassConsts_SUPER_BOOLEAN_CONSTANT
-#define SubClassConsts_SUPER_BOOLEAN_CONSTANT 0L
-#undef SubClassConsts_SUB_INT_CONSTANT
-#define SubClassConsts_SUB_INT_CONSTANT 2L
-#undef SubClassConsts_SUB_DOUBLE_CONSTANT
-#define SubClassConsts_SUB_DOUBLE_CONSTANT 2.25
-#undef SubClassConsts_SUB_FLOAT_CONSTANT
-#define SubClassConsts_SUB_FLOAT_CONSTANT 7.9f
-#undef SubClassConsts_SUB_BOOLEAN_CONSTANT
-#define SubClassConsts_SUB_BOOLEAN_CONSTANT 1L
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/tools/javah/SubClassConsts.win	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class SubClassConsts */
-
-#ifndef _Included_SubClassConsts
-#define _Included_SubClassConsts
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef SubClassConsts_serialVersionUID
-#define SubClassConsts_serialVersionUID 6733861379283244755i64
-#undef SubClassConsts_SUPER_INT_CONSTANT
-#define SubClassConsts_SUPER_INT_CONSTANT 3L
-#undef SubClassConsts_SUPER_FLOAT_CONSTANT
-#define SubClassConsts_SUPER_FLOAT_CONSTANT 99.3f
-#undef SubClassConsts_SUPER_DOUBLE_CONSTANT
-#define SubClassConsts_SUPER_DOUBLE_CONSTANT 33.2
-#undef SubClassConsts_SUPER_BOOLEAN_CONSTANT
-#define SubClassConsts_SUPER_BOOLEAN_CONSTANT 0L
-#undef SubClassConsts_SUB_INT_CONSTANT
-#define SubClassConsts_SUB_INT_CONSTANT 2L
-#undef SubClassConsts_SUB_DOUBLE_CONSTANT
-#define SubClassConsts_SUB_DOUBLE_CONSTANT 2.25
-#undef SubClassConsts_SUB_FLOAT_CONSTANT
-#define SubClassConsts_SUB_FLOAT_CONSTANT 7.9f
-#undef SubClassConsts_SUB_BOOLEAN_CONSTANT
-#define SubClassConsts_SUB_BOOLEAN_CONSTANT 1L
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/tools/javah/SuperClassConsts.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2003, 2007, 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.
- */
-
-
-/*
- * Parent class implements serializable and provides static initializers
- * for a bunch of primitive type class constants
- * (required for regtest 4786406, 4780341)
- */
-
-import java.io.*;
-
-public class SuperClassConsts implements Serializable {
-
-    // Define class constant values, base class is serializable
-
-    private static final long serialVersionUID = 6733861379283244755L;
-    public static final int SUPER_INT_CONSTANT = 3;
-    public final static float SUPER_FLOAT_CONSTANT = 99.3f;
-    public final static double SUPER_DOUBLE_CONSTANT  = 33.2;
-    public final static boolean SUPER_BOOLEAN_CONSTANT  = false;
-
-    // A token instance field
-    int instanceField;
-
-    public SuperClassConsts(String p) {
-    }
-
-    public native int numValues();
-
-    private void writeObject(ObjectOutputStream s)
-        throws IOException
-    {
-        System.err.println("writing state");
-    }
-
-    /**
-     * readObject is called to restore the state of the FilePermission from
-     * a stream.
-     */
-    private void readObject(ObjectInputStream s)
-         throws IOException, ClassNotFoundException
-    {
-        System.err.println("reading back state");
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javah/T4942232/MissingParamClassTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,89 @@
+/*
+ * 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 4942232
+ * @summary Verifies that javah won't attempt to generate a header file if a
+ * native method in a supplied class contains a parameter type whose corresponding
+ * class is missing or not in the classpath
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run compile MissingParamClassTest.java
+ * @clean MissingParamClassException
+ * @run main MissingParamClassTest
+ * @run compile MissingParamClassTest.java
+ * @clean Param
+ * @run main MissingParamClassTest
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+
+//original test: test/tools/javah/MissingParamClassTest.sh
+public class MissingParamClassTest {
+
+    public static void main(String[] args) throws Exception {
+        //first steps done now by jtreg
+//"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . "${TESTSRC}${FS}ParamClassTest.java" "${TESTSRC}${FS}MissingParamClassException.java"
+//rm -f MissingParamClassException.class
+
+//"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} ParamClassTest 2>${TMP1}
+        List<String> errOutput = new ArrayList<>();
+        ToolBox.JavaToolArgs javahParams =
+            new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
+            .setAllArgs("-classpath", System.getProperty("test.classes"), "ParamClassTest")
+            .setErrOutput(errOutput);
+        ToolBox.javah(javahParams);
+
+//if [ -f $GENERATED_HEADER_FILE ]; then  fail
+//if [ ! -s ${TMP1} ]; then fail
+        if (Files.exists(Paths.get("ParamClassTest.h")) || errOutput.size() == 0)
+            throw new AssertionError("The only output generated by javah must be an error message");
+        //jtreg again
+//rm -f MissingParamClassException.class ParamClassTest.class
+//rm -f $GENERATED_HEADER_FILE $TMP1
+    }
+
+}
+
+class MissingParamClassException extends Exception {
+    public MissingParamClassException() {
+        System.out.println("MissingParamClassException constructor called");
+    }
+}
+
+class ParamClassTest {
+    public native void method(Param s);
+
+    public static void main(String args[]) {
+    }
+}
+
+class Param extends MissingParamClassException {
+    Param() {
+        System.out.println("Param constructor");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javah/constMacroTest/ConstMacroTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,112 @@
+/*
+ * 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 4786406 4781221 4780341 6214324
+ * @summary Validates rewritten javah handling of class defined constants and
+ * ensures that the appropriate macro definitions are placed in the generated
+ * header file.
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main ConstMacroTest
+ */
+
+import java.io.*;
+import java.nio.file.Paths;
+
+//original test: test/tools/javah/ConstMacroTest.sh
+public class ConstMacroTest {
+
+    private static final String SubClassConstsGoldenFile =
+        "/* DO NOT EDIT THIS FILE - it is machine generated */\n" +
+        "#include <jni.h>\n" +
+        "/* Header for class SubClassConsts */\n" +
+        "\n" +
+        "#ifndef _Included_SubClassConsts\n" +
+        "#define _Included_SubClassConsts\n" +
+        "#ifdef __cplusplus\n" +
+        "extern \"C\" {\n" +
+        "#endif\n" +
+        "#undef SubClassConsts_serialVersionUID\n" +
+        "#define SubClassConsts_serialVersionUID 6733861379283244755LL\n" +
+        "#undef SubClassConsts_SUPER_INT_CONSTANT\n" +
+        "#define SubClassConsts_SUPER_INT_CONSTANT 3L\n" +
+        "#undef SubClassConsts_SUPER_FLOAT_CONSTANT\n" +
+        "#define SubClassConsts_SUPER_FLOAT_CONSTANT 99.3f\n" +
+        "#undef SubClassConsts_SUPER_DOUBLE_CONSTANT\n" +
+        "#define SubClassConsts_SUPER_DOUBLE_CONSTANT 33.2\n" +
+        "#undef SubClassConsts_SUPER_BOOLEAN_CONSTANT\n" +
+        "#define SubClassConsts_SUPER_BOOLEAN_CONSTANT 0L\n" +
+        "#undef SubClassConsts_SUB_INT_CONSTANT\n" +
+        "#define SubClassConsts_SUB_INT_CONSTANT 2L\n" +
+        "#undef SubClassConsts_SUB_DOUBLE_CONSTANT\n" +
+        "#define SubClassConsts_SUB_DOUBLE_CONSTANT 2.25\n" +
+        "#undef SubClassConsts_SUB_FLOAT_CONSTANT\n" +
+        "#define SubClassConsts_SUB_FLOAT_CONSTANT 7.9f\n" +
+        "#undef SubClassConsts_SUB_BOOLEAN_CONSTANT\n" +
+        "#define SubClassConsts_SUB_BOOLEAN_CONSTANT 1L\n" +
+        "#ifdef __cplusplus\n" +
+        "}\n" +
+        "#endif\n" +
+        "#endif";
+
+    public static void main(String[] args) throws Exception {
+        //first steps are now done by jtreg
+//        cp "${TESTSRC}${FS}SuperClassConsts.java" .
+//        cp "${TESTSRC}${FS}SubClassConsts.java" .
+
+//        "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d . "${TESTSRC}${FS}SubClassConsts.java"
+
+//        "${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} SubClassConsts
+        ToolBox.JavaToolArgs successParams =
+                new ToolBox.JavaToolArgs()
+                .setAllArgs("-cp", System.getProperty("test.classes"), "SubClassConsts");
+        ToolBox.javah(successParams);
+
+//        diff ${DIFFOPTS} "${TESTSRC}${FS}${EXPECTED_JAVAH_OUT_FILE}" "${GENERATED_HEADER_FILE}"
+        ToolBox.compareLines(Paths.get("SubClassConsts.h"),
+                ToolBox.splitLines(SubClassConstsGoldenFile), null);
+    }
+
+}
+
+class SuperClassConsts implements Serializable {
+    // Define class constant values, base class is serializable
+    private static final long serialVersionUID = 6733861379283244755L;
+    public static final int SUPER_INT_CONSTANT = 3;
+    public final static float SUPER_FLOAT_CONSTANT = 99.3f;
+    public final static double SUPER_DOUBLE_CONSTANT  = 33.2;
+    public final static boolean SUPER_BOOLEAN_CONSTANT  = false;
+    // A token instance field
+    int instanceField;
+
+    public native int numValues();
+}
+
+class SubClassConsts extends SuperClassConsts {
+    private final static int SUB_INT_CONSTANT = 2;
+    private final static double SUB_DOUBLE_CONSTANT = 2.25;
+    private final static float SUB_FLOAT_CONSTANT = 7.90f;
+    private final static boolean SUB_BOOLEAN_CONSTANT = true;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javap/4798312/JavapShouldLoadClassesFromRTJarTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,43 @@
+/*
+ * 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 4798312
+ * @summary In Windows, javap doesnt load classes from rt.jar
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main JavapShouldLoadClassesFromRTJarTest
+ */
+public class JavapShouldLoadClassesFromRTJarTest {
+
+    public static void main(String[] args) throws Exception {
+//        "${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} java.lang.String
+        ToolBox.JavaToolArgs params =
+                new ToolBox.JavaToolArgs().
+                setAllArgs("-v", "java.lang.String");
+        if (ToolBox.javap(params).isEmpty())
+            throw new AssertionError("javap generated no output");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javap/4866831/PublicInterfaceTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,52 @@
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/*
+ * 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 4866831
+ * @summary Verify that javap marks public interfaces as public
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main PublicInterfaceTest
+ */
+
+//original test: test/tools/javap/PublicInterfaceTest.sh
+public class PublicInterfaceTest {
+    public interface Test {}
+
+    public static void main(String[] args) throws Exception {
+//        "$JAVAP" ${TESTTOOLVMOPTS} -classpath "${TESTCLASSES}" NotPackagePrivateInterface | grep public
+        Path pathToClass = Paths.get(System.getProperty("test.classes"),
+                "PublicInterfaceTest$Test.class");
+        ToolBox.JavaToolArgs javapParams =
+                new ToolBox.JavaToolArgs()
+                .setAllArgs(pathToClass.toString());
+        if (!ToolBox.javap(javapParams).contains("public"))
+            throw new AssertionError("The javap output does not contain \"public\"");
+    }
+
+}
--- a/test/tools/javap/NotPackagePrivateInterface.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2003, 2007, 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.
- */
-
-
-/*
- * This class is used by PublicInterfaceTest.sh to generate a class
- * file with a public interface to verify javap will output the
- * "public" modifier for such interfaces.  (At the vm level, the only
- * access control properties an interface can can have are public and
- * package private.)
- */
-
-public interface NotPackagePrivateInterface {
-}
--- a/test/tools/javap/PublicInterfaceTest.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2003, 2007, 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 4866831
-# @build NotPackagePrivateInterface
-# @run shell PublicInterfaceTest.sh
-# @summary Verify that javap marks public interfaces as public
-# @author Joseph D. Darcy
-
-# Verify directory context variables are set
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-JAVAP="${TESTJAVA}/bin/javap"
-
-"$JAVAP" ${TESTTOOLVMOPTS} -classpath "${TESTCLASSES}" NotPackagePrivateInterface | grep public
-
-# If the exit status of grep is 0, then "public" was correctly found
-# in the output of javap.
-
-RESULT=$?
-case "$RESULT" in
-        0  )
-	exit 0;
-        ;;
-
-        * )
-        echo "The javap tool did not output \"public\" for a public interface."
-        exit 1
-esac
--- a/test/tools/javap/pathsep.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2003, 2009, 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 4798312
-# @summary In Windows, javap doesnt load classes from rt.jar
-# @author gafter
-#
-# @run shell pathsep.sh
-
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-echo "TESTJAVA=${TESTJAVA}"
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin | CYGWIN* )
-    FS="/"
-    ;;
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-"${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} java.lang.String
-result=$?
-if [ $result -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit $result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javap/stackmap/StackmapTest.java	Tue Feb 19 17:53:16 2013 +0000
@@ -0,0 +1,97 @@
+/*
+ * 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 6271292
+ * @summary Verify that javap prints StackMapTable attribute contents
+ * @library /tools/javac/lib
+ * @build ToolBox
+ * @run main StackmapTest
+ */
+
+import java.util.Arrays;
+import java.util.List;
+
+//original test: test/tools/javap/stackmap/T6271292.sh
+public class StackmapTest {
+
+    private static final String TestSrc =
+        "public class Test extends SuperClass {\n" +
+        "    public static void main(String[] args) {\n" +
+        "        new SuperClass((args[0].equals(\"0\")) ? 0 : 1)\n" +
+        "            .test();\n" +
+        "    }\n" +
+        "    Test(boolean b) {\n" +
+        "        super(b ? 1 : 2);\n" +
+        "    }\n" +
+        "}\n" +
+        "class SuperClass {\n" +
+        "    double d;\n" +
+        "    SuperClass(double dd) { d = dd; }\n" +
+        "    double test() {\n" +
+        "        if (d == 0)\n" +
+        "            return d;\n" +
+        "        else\n" +
+        "            return d > 0 ? d++ : d--;\n" +
+        "    }\n" +
+        "}\n";
+
+    private static final String goldenOut =
+        "frame_type = 255 /* full_frame */\n" +
+        "frame_type = 255 /* full_frame */\n" +
+        "frame_type = 73 /* same_locals_1_stack_item */\n" +
+        "frame_type = 255 /* full_frame */\n" +
+        "offset_delta = 19\n" +
+        "offset_delta = 0\n" +
+        "offset_delta = 2\n" +
+        "stack = [ uninitialized 0, uninitialized 0 ]\n" +
+        "stack = [ uninitialized 0, uninitialized 0, double ]\n" +
+        "stack = [ this ]\n" +
+        "stack = [ this, double ]\n" +
+        "locals = [ class \"[Ljava/lang/String;\" ]\n" +
+        "locals = [ class \"[Ljava/lang/String;\" ]\n" +
+        "locals = [ this, int ]\n";
+
+    public static void main(String[] args) throws Exception {
+        //        @compile T6271292.java
+        ToolBox.JavaToolArgs javacParams =
+                new ToolBox.JavaToolArgs().setSources(TestSrc);
+        ToolBox.javac(javacParams);
+
+//        "${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} -classpath "${TESTCLASSES}" -verbose T6271292 > "${JAVAPFILE}"
+        ToolBox.JavaToolArgs javapParams =
+                new ToolBox.JavaToolArgs()
+                .setAllArgs("-v", "Test.class");
+        String out = ToolBox.javap(javapParams);
+        List<String> grepResult = ToolBox.grep("frame_type", out);
+        grepResult.addAll(ToolBox.grep("offset_delta", out));
+        grepResult.addAll(ToolBox.grep("stack = ", out));
+        grepResult.addAll(ToolBox.grep("locals = ", out));
+        List<String> goldenList = Arrays.asList(goldenOut.split("\n"));
+
+//        diff -w "${OUTFILE}" "${TESTSRC}${FS}T6271292.out"
+        ToolBox.compareLines(goldenList, grepResult, true);
+    }
+
+}
--- a/test/tools/javap/stackmap/T6271292.java	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2005, 2007, 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.
- */
-
-
-public class T6271292 extends SuperClass {
-
-    public static void main(String[] args) {
-        SuperClass s = new SuperClass((args[0].equals("0")) ? 0 : 1);
-        s.test();
-    }
-    T6271292(boolean b) {
-        super(b ? 1 : 2);
-    }
-}
-
-class SuperClass {
-    double d;
-    SuperClass(double dd) { d = dd; }
-
-    double test() {
-        if (d == 0) {
-            return d;
-        } else if (d > 0) {
-            return d++;
-        } else {
-            return d--;
-        }
-    }
-}
--- a/test/tools/javap/stackmap/T6271292.out	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-   frame_type = 255 /* full_frame */
-   frame_type = 255 /* full_frame */
-   frame_type = 73 /* same_locals_1_stack_item */
-   frame_type = 255 /* full_frame */
-     offset_delta = 19
-     offset_delta = 0
-     offset_delta = 2
-     stack = [ uninitialized 0, uninitialized 0 ]
-     stack = [ uninitialized 0, uninitialized 0, double ]
-     stack = [ this ]
-     stack = [ this, double ]
-     locals = [ class "[Ljava/lang/String;" ]
-     locals = [ class "[Ljava/lang/String;" ]
-     locals = [ this, int ]
--- a/test/tools/javap/stackmap/T6271292.sh	Tue Feb 19 00:31:45 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2009, 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 6271292
-# @compile T6271292.java
-# @run shell T6271292.sh
-# @summary Verify that javap prints StackMapTable attribute contents
-# @author Wei Tao
-    
-if [ "${TESTSRC}" = "" ]
-then
-  echo "TESTSRC not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf 'TESTSRC="%s"' "${TESTSRC}" >&2 ; echo >&2
-if [ "${TESTJAVA}" = "" ]
-then
-  echo "TESTJAVA not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf 'TESTJAVA="%s"' "${TESTJAVA}" >&2 ; echo >&2
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-printf 'TESTCLASSES="%s"' "${TESTCLASSES}" >&2 ; echo >&2
-printf 'CLASSPATH="%s"' "${CLASSPATH}" >&2 ; echo >&2
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  Windows* )
-    FS="\\"
-    ;;
-  * )
-    FS="/"
-    ;;
-esac
-
-JAVAPFILE=T6271292.javap
-OUTFILE=outfile
-
-"${TESTJAVA}${FS}bin${FS}javap" ${TESTTOOLVMOPTS} -classpath "${TESTCLASSES}" -verbose T6271292 > "${JAVAPFILE}"
-result="$?"
-if [ "$result" -ne 0 ] 
-then
-  exit "$result"
-fi
-
-grep "frame_type" "${JAVAPFILE}" > "${OUTFILE}"
-grep "offset_delta" "${JAVAPFILE}" >> "${OUTFILE}"
-grep "stack = " "${JAVAPFILE}" >> "${OUTFILE}"
-grep "locals = " "${JAVAPFILE}" >> "${OUTFILE}"
-diff -w "${OUTFILE}" "${TESTSRC}${FS}T6271292.out"
-result="$?"
-if [ "$result" -eq 0 ]
-then
-  echo "Passed"
-else
-  echo "Failed"
-fi
-exit "$result"
-
-