1 # 2 # Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. 8 # 9 # This code is distributed in the hope that it will be useful, but WITHOUT 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 # version 2 for more details (a copy is included in the LICENSE file that 13 # accompanied this code). 14 # 15 # You should have received a copy of the GNU General Public License version 16 # 2 along with this work; if not, write to the Free Software Foundation, 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 # 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 # or visit www.oracle.com if you need additional information or have any 21 # questions. 22 # 23 24 25 # @test @(#)Test6626217.sh 26 # @bug 6626217 27 # @summary Loader-constraint table allows arrays instead of only the base-classes 28 # @run shell Test6626217.sh 29 # 30 31 if [ "${TESTSRC}" = "" ] 32 then TESTSRC=. 33 fi 34 35 if [ "${TESTJAVA}" = "" ] 36 then 37 PARENT=`dirname \`which java\`` 38 TESTJAVA=`dirname ${PARENT}` 39 echo "TESTJAVA not set, selecting " ${TESTJAVA} 40 echo "If this is incorrect, try setting the variable manually." 41 fi 42 43 if [ "${TESTCLASSES}" = "" ] 44 then 45 echo "TESTCLASSES not set. Test cannot execute. Failed." 46 exit 1 47 fi 48 49 # set platform-dependent variables 50 OS=`uname -s` 51 case "$OS" in 52 SunOS | Linux ) 53 NULL=/dev/null 54 PS=":" 55 FS="/" 56 RM=/bin/rm 57 CP=/bin/cp 58 MV=/bin/mv 59 ;; 60 Windows_* ) 61 NULL=NUL 62 PS=";" 63 FS="\\" 64 RM=rm 65 CP=cp 66 MV=mv 67 ;; 68 * ) 69 echo "Unrecognized system!" 70 exit 1; 71 ;; 72 esac 73 74 JEMMYPATH=${CPAPPEND} 75 CLASSPATH=.${PS}${TESTCLASSES}${PS}${JEMMYPATH} ; export CLASSPATH 76 77 THIS_DIR=`pwd` 78 79 JAVA=${TESTJAVA}${FS}bin${FS}java 80 JAVAC=${TESTJAVA}${FS}bin${FS}javac 81 82 ${JAVA} ${TESTVMOPTS} -version 83 84 # Current directory is scratch directory, copy all the test source there 85 # (for the subsequent moves to work). 86 ${CP} ${TESTSRC}${FS}* ${THIS_DIR} 87 88 # A Clean Compile: this line will probably fail within jtreg as have a clean dir: 89 ${RM} -f *.class *.impl many_loader.java 90 91 # Compile all the usual suspects, including the default 'many_loader' 92 ${CP} many_loader1.java.foo many_loader.java 93 ${JAVAC} -source 1.4 -target 1.4 -Xlint *.java 94 95 # Rename the class files, so the custom loader (and not the system loader) will find it 96 ${MV} from_loader2.class from_loader2.impl2 97 98 # Compile the next version of 'many_loader' 99 ${MV} many_loader.class many_loader.impl1 100 ${CP} many_loader2.java.foo many_loader.java 101 ${JAVAC} -source 1.4 -target 1.4 -Xlint many_loader.java 102 103 # Rename the class file, so the custom loader (and not the system loader) will find it 104 ${MV} many_loader.class many_loader.impl2 105 ${MV} many_loader.impl1 many_loader.class 106 ${RM} many_loader.java 107 108 ${JAVA} ${TESTVMOPTS} -Xverify -Xint -cp . bug_21227 >test.out 2>&1 109 grep "loader constraint" test.out 110 exit $? 111