0N/A#!/bin/sh
0N/A# @test
0N/A# @bug 6510337
0N/A# @run shell ClassPathWildCard.sh
0N/A# @summary A very basic/rudimentary test for classpath wildcards
0N/A# @author Kumar Srinivasan
0N/A
0N/A#
3909N/A# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
0N/A# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A#
0N/A# This code is free software; you can redistribute it and/or modify it
0N/A# under the terms of the GNU General Public License version 2 only, as
0N/A# published by the Free Software Foundation.
0N/A#
0N/A# This code is distributed in the hope that it will be useful, but WITHOUT
0N/A# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A# version 2 for more details (a copy is included in the LICENSE file that
0N/A# accompanied this code).
0N/A#
0N/A# You should have received a copy of the GNU General Public License version
0N/A# 2 along with this work; if not, write to the Free Software Foundation,
0N/A# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A#
2362N/A# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A# or visit www.oracle.com if you need additional information or have any
2362N/A# questions.
0N/A#
0N/A
0N/A# An elaborate wildcard testing is done by test/tools/javac/Paths/wcMineField.sh,
0N/A# this test is a small subset, primarily to ensure that java and javaw launcher
0N/A# behave consistently, while we are it , doesn't hurt to test other platforms
0N/A# as well.
0N/A
0N/A# For debugging
0N/A# set -x
0N/A# _JAVA_LAUNCHER_DEBUG=true ; export _JAVA_LAUNCHER_DEBUG
0N/A
0N/A# Verify directory context variables are set
0N/Aif [ "${TESTJAVA}" = "" ]; then
0N/A echo "TESTJAVA not set. Test cannot execute. Failed."
0N/A exit 1
0N/Afi
0N/A
0N/Aif [ "${TESTSRC}" = "" ]; then
0N/A echo "TESTSRC not set. Test cannot execute. Failed."
0N/A exit 1
0N/Afi
0N/A
0N/Aif [ "${TESTCLASSES}" = "" ]; then
0N/A echo "TESTCLASSES not set. Test cannot execute. Failed."
0N/A exit 1
0N/Afi
0N/A
0N/AJAVA=$TESTJAVA/bin/java
0N/AJAVAC=$TESTJAVA/bin/javac
0N/AJAR=$TESTJAVA/bin/jar
0N/A
0N/AOUTEXT=".out"
0N/A
0N/A# We write out a test file, as javaw does not have any notion about
0N/A# stdout or stderr.
0N/A
0N/AEmitJavaFile() {
0N/A fullName=$1
0N/A fileName=`basename $fullName .java`
0N/A
0N/A(
0N/A printf "import java.io.*;\n"
0N/A printf "public class %s {\n" $fileName
0N/A printf " public static void main(String[] args) {"
0N/A printf " String m = \"%s:\";\n" $fileName
0N/A printf " m = m.concat(\"java.class.path=\");\n"
0N/A printf " m = m.concat(System.getProperty(\"java.class.path\",\"NONE\"));\n"
0N/A printf " System.out.println(m);\n"
0N/A printf " try {\n"
0N/A printf " PrintStream ps = new PrintStream(\"%s\");\n" $fileName$OUTEXT
0N/A printf " ps.println(m);\n"
0N/A printf " ps.flush(); ps.close();\n"
0N/A printf " } catch (Exception e) {\n"
0N/A printf " System.out.println(e.getMessage());\n"
0N/A printf " System.exit(1);\n"
0N/A printf " }\n"
0N/A printf " }\n"
0N/A printf "}\n"
0N/A) > $fullName
0N/A}
0N/A
0N/ACreateClassFiles() {
0N/A Exp=$1
0N/A [ -d Test${Exp} ] || mkdir Test${Exp}
0N/A EmitJavaFile Test${Exp}/Test${Exp}.java
0N/A $JAVAC -d Test${Exp} Test${Exp}/Test${Exp}.java || exit 1
0N/A}
0N/A
0N/ACreateJarFiles() {
0N/A Exp=$1
0N/A [ -d JarDir ] || mkdir JarDir
0N/A CreateClassFiles $Exp
0N/A $JAR -cvf JarDir/Test${Exp}.jar -C Test${Exp} . || exit 1
0N/A}
0N/A
0N/ACheckFail() {
0N/A if [ ! -f ${1}${OUTEXT} ]; then
0N/A printf "Error: %s fails\n" "$1"
0N/A exit 1
0N/A fi
0N/A}
0N/A
0N/A# Note: see CR:6328875 this is why we use the NOOP variable
0N/A# below on Windows
0N/A
0N/AExecJava() {
0N/A variant=$1
0N/A NOOP=$2
0N/A
0N/A # Test JAR files first
0N/A rm -f TestA${OUTEXT}
0N/A $JAVA${variant} -classpath JarDir/"*"$NOOP TestA || exit 1
0N/A CheckFail TestA
0N/A
0N/A rm -f TestB${OUTEXT}
0N/A $JAVA${variant} -classpath JarDir/"*"$NOOP TestB || exit 1
0N/A CheckFail TestB
0N/A
0N/A
0N/A # Throw some class files into the mix
0N/A cp TestC/*.class JarDir
0N/A cp TestD/*.class JarDir
0N/A
0N/A rm -f TestC${OUTEXT}
0N/A $JAVA${variant} -classpath JarDir${PATHSEP}JarDir/"*"$NOOP TestC || exit 1
0N/A CheckFail TestC
0N/A
0N/A rm -f TestD${OUTEXT}
0N/A $JAVA${variant} -classpath JarDir${PATHSEP}JarDir/"*"$NOOP TestD || exit 1
0N/A CheckFail TestD
0N/A}
0N/A
0N/ACreateJarFiles A
0N/ACreateJarFiles B
0N/ACreateClassFiles C
0N/ACreateClassFiles D
0N/A
0N/AOS=`uname -s`
0N/Acase $OS in
2078N/A Windows*|CYGWIN*)
0N/A PATHSEP=";"
0N/A ExecJava "" "${PATHSEP}NOOPDIR"
0N/A ExecJava "w" "${PATHSEP}NOOPDIR"
0N/A break
0N/A ;;
0N/A
0N/A *)
0N/A PATHSEP=":"
0N/A ExecJava "" ""
0N/A break
0N/A ;;
0N/Aesac
0N/A
0N/Aexit 0