mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-15 10:23:28 +00:00
8006212: javac, convert jtreg tests from shell script to java
Reviewed-by: jjg
This commit is contained in:
parent
6e097b8776
commit
68a3295c8b
@ -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 @@ public class JavacTaskImpl extends BasicJavacTask {
|
||||
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
|
||||
|
||||
@ -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 @@ public class ArrayUtils {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
96
langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java
Normal file
96
langtools/test/tools/apt/Basics/CheckAptIsRemovedTest.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +0,0 @@
|
||||
/* /nodynamiccopyright/ */
|
||||
public class Test {
|
||||
public void test() {
|
||||
abcdefg
|
||||
}
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
Test.java:4: error: not a statement
|
||||
abcdefg
|
||||
^
|
||||
Test.java:4: error: ';' expected
|
||||
abcdefg
|
||||
^
|
||||
2 errors
|
||||
@ -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
|
||||
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
148
langtools/test/tools/javac/ClassPathTest/ClassPathTest.java
Normal file
148
langtools/test/tools/javac/ClassPathTest/ClassPathTest.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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 {}
|
||||
@ -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 {}
|
||||
@ -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 {}
|
||||
176
langtools/test/tools/javac/ExtDirs/ExtDirTest.java
Normal file
176
langtools/test/tools/javac/ExtDirs/ExtDirTest.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* 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
|
||||
@ -24,10 +24,27 @@
|
||||
/*
|
||||
* @test
|
||||
* @bug 4509051 4785453
|
||||
* @summary javac <AT>sourcefiles should catch Exception, when sourcefiles doesn't exist.
|
||||
* @author gafter
|
||||
*
|
||||
* @run shell MissingInclude.sh
|
||||
* @summary javac <AT>sourcefiles should catch Exception, when sourcefiles
|
||||
* doesn't exist.
|
||||
* @library /tools/javac/lib
|
||||
* @build ToolBox
|
||||
* @run main MissingIncludeTest
|
||||
*/
|
||||
|
||||
class MissingInclude {}
|
||||
//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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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 {}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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"; }
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* 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
|
||||
@ -25,11 +25,27 @@
|
||||
* @test
|
||||
* @bug 4645152 4785453
|
||||
* @summary javac compiler incorrectly inserts <clinit> when -g is specified
|
||||
* @author gafter
|
||||
*
|
||||
* @run shell ConstDebug.sh ConstDebug
|
||||
* @library /tools/javac/lib
|
||||
* @build ToolBox
|
||||
* @run compile -g ConstDebugTest.java
|
||||
* @run main ConstDebugTest
|
||||
*/
|
||||
|
||||
public class ConstDebug {
|
||||
//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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
|
||||
@ -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
|
||||
76
langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java
Normal file
76
langtools/test/tools/javac/fatalErrors/NoJavaLangTest.java
Normal file
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {}
|
||||
}
|
||||
@ -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 {}
|
||||
@ -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;
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
126
langtools/test/tools/javac/javazip/JavaZipTest.java
Normal file
126
langtools/test/tools/javac/javazip/JavaZipTest.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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"
|
||||
@ -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
|
||||
@ -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 {
|
||||
}
|
||||
911
langtools/test/tools/javac/lib/ToolBox.java
Normal file
911
langtools/test/tools/javac/lib/ToolBox.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
63
langtools/test/tools/javac/links/LinksTest.java
Normal file
63
langtools/test/tools/javac/links/LinksTest.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {}
|
||||
@ -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 {}
|
||||
@ -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
|
||||
62
langtools/test/tools/javac/newlines/NewLineTest.java
Normal file
62
langtools/test/tools/javac/newlines/NewLineTest.java
Normal file
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
65
langtools/test/tools/javac/stackmap/StackMapTest.java
Normal file
65
langtools/test/tools/javac/stackmap/StackMapTest.java
Normal file
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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
|
||||
81
langtools/test/tools/javah/6257087/T6257087.java
Normal file
81
langtools/test/tools/javah/6257087/T6257087.java
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
112
langtools/test/tools/javah/constMacroTest/ConstMacroTest.java
Normal file
112
langtools/test/tools/javah/constMacroTest/ConstMacroTest.java
Normal file
@ -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;
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* 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
|
||||
@ -23,25 +23,21 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4955930
|
||||
* @summary The "method0" StackMap attribute should have two entries instead of three
|
||||
* @author wtao
|
||||
*
|
||||
* @run shell T4955930.sh
|
||||
* @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 class T4955930 {
|
||||
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");
|
||||
}
|
||||
|
||||
void method0(boolean aboolean) throws Exception {
|
||||
label_0:
|
||||
while (true) {
|
||||
if (aboolean) {
|
||||
;
|
||||
}
|
||||
else {
|
||||
break label_0;
|
||||
}
|
||||
System.out.println("");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,9 @@
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
/*
|
||||
* Copyright (c) 2004, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* 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
|
||||
@ -23,25 +27,26 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 5090006
|
||||
* @summary javac fails with assertion error
|
||||
* @author Peter von der Ah\u00e9
|
||||
* @run shell compiler.sh T5090006.java
|
||||
* @run main T5090006
|
||||
* @bug 4866831
|
||||
* @summary Verify that javap marks public interfaces as public
|
||||
* @library /tools/javac/lib
|
||||
* @build ToolBox
|
||||
* @run main PublicInterfaceTest
|
||||
*/
|
||||
|
||||
import stub_tie_gen.wsdl_hello_lit.client.*;
|
||||
import junit.framework.*;
|
||||
import testutil.ClientServerTestUtil;
|
||||
//original test: test/tools/javap/PublicInterfaceTest.sh
|
||||
public class PublicInterfaceTest {
|
||||
public interface Test {}
|
||||
|
||||
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) 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\"");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println("FISK");
|
||||
}
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
97
langtools/test/tools/javap/stackmap/StackmapTest.java
Normal file
97
langtools/test/tools/javap/stackmap/StackmapTest.java
Normal file
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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--;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 ]
|
||||
@ -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"
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user