J. Duke | 319a3b9 | 2007-12-01 00:00:00 +0000 | [diff] [blame^] | 1 | # |
| 2 | # Copyright 2005 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
| 20 | # CA 95054 USA or visit www.sun.com if you need additional information or |
| 21 | # have any questions. |
| 22 | # |
| 23 | |
| 24 | # @test |
| 25 | # @bug 6173575 |
| 26 | # @summary Unit tests for appendToBootstrapClassLoaderSearch and |
| 27 | # appendToSystemClasLoaderSearch methods. |
| 28 | # |
| 29 | # @run shell CircularityErrorTest.sh |
| 30 | |
| 31 | if [ "${TESTSRC}" = "" ] |
| 32 | then |
| 33 | echo "TESTSRC not set. Test cannot execute. Failed." |
| 34 | exit 1 |
| 35 | fi |
| 36 | |
| 37 | . ${TESTSRC}/CommonSetup.sh |
| 38 | |
| 39 | # Setup to create circularity condition |
| 40 | |
| 41 | # B extends A |
| 42 | # This yields us A.jar (containing A.class) and B.keep (class file) |
| 43 | rm -f "${TESTCLASSES}"/A.java "${TESTCLASSES}"/B.java |
| 44 | cp "${TESTSRC}"/A.1 "${TESTCLASSES}"/A.java |
| 45 | cp "${TESTSRC}"/B.1 "${TESTCLASSES}"/B.java |
| 46 | (cd "${TESTCLASSES}"; \ |
| 47 | $JAVAC A.java B.java; \ |
| 48 | $JAVAC -d . "${TESTSRC}"/CircularityErrorTest.java; \ |
| 49 | $JAR cf A.jar A.class; \ |
| 50 | rm -f A.class; mv B.class B.keep) |
| 51 | |
| 52 | # A extends B |
| 53 | # This yields us A.class |
| 54 | rm -f "${TESTCLASSES}"/A.java "${TESTCLASSES}"/B.java |
| 55 | cp "${TESTSRC}"/A.2 "${TESTCLASSES}"/A.java |
| 56 | cp "${TESTSRC}"/B.2 "${TESTCLASSES}"/B.java |
| 57 | (cd "${TESTCLASSES}"; \ |
| 58 | $JAVAC A.java B.java; rm -f B.class A.java B.java) |
| 59 | |
| 60 | # Move B.keep to B.class creates the A extends B and |
| 61 | # B extends A condition. |
| 62 | (cd "${TESTCLASSES}"; mv B.keep B.class) |
| 63 | |
| 64 | # Create the manifest |
| 65 | MANIFEST="${TESTCLASSES}"/agent.mf |
| 66 | rm -f "${MANIFEST}" |
| 67 | echo "Premain-Class: CircularityErrorTest" > "${MANIFEST}" |
| 68 | |
| 69 | # Setup test case as an agent |
| 70 | $JAR -cfm "${TESTCLASSES}"/CircularityErrorTest.jar "${MANIFEST}" \ |
| 71 | -C "${TESTCLASSES}" CircularityErrorTest.class |
| 72 | |
| 73 | # Finally we run the test |
| 74 | (cd "${TESTCLASSES}"; |
| 75 | $JAVA -javaagent:CircularityErrorTest.jar CircularityErrorTest) |