1#
2# Copyright (c) 2007, 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# Utilities for shell tests
25#
26
27: ${TESTSRC=.} ${TESTCLASSES=.}
28 java="${TESTJAVA+${TESTJAVA}/bin/}java"
29javac="${TESTJAVA+${TESTJAVA}/bin/}javac"
30  jar="${TESTJAVA+${TESTJAVA}/bin/}jar"
31 rmic="${TESTJAVA+${TESTJAVA}/bin/}rmic"
32
33case `uname -s` in
34  Windows*|CYGWIN*)
35    WindowsOnly() { "$@"; }
36    UnixOnly() { :; }
37    PS=";" ;;
38  *)
39    UnixOnly() { "$@"; }
40    WindowsOnly() { :; }
41    PS=":";;
42esac
43
44failed=""
45Fail() { echo "FAIL: $1"; failed="${failed}."; }
46
47Die() { printf "%s\n" "$*"; exit 1; }
48
49Sys() {
50    printf "%s\n" "$*"; "$@"; rc="$?";
51    test "$rc" -eq 0 || Die "Command \"$*\" failed with exitValue $rc";
52}
53
54CheckFiles() {
55    for f in "$@"; do test -r "$f" || Die "File $f not found"; done
56}
57
58Report() {
59    test "$#" != 2 && Die "Usage: Report success|failure rc"
60
61    if   test "$1" = "success" -a "$2" = 0; then
62	echo "PASS: succeeded as expected"
63    elif test "$1" = "failure" -a "$2" != 0; then
64	echo "PASS: failed as expected"
65    elif test "$1" = "success" -a "$2" != 0; then
66	Fail "test failed unexpectedly"
67    elif test "$1" = "failure" -a "$2" = 0; then
68	Fail "test succeeded unexpectedly"
69    else
70	Die "Usage: Report success|failure rc"
71    fi
72}
73
74MkManifestWithClassPath() {
75    (echo "Manifest-Version: 1.0"; echo "Class-Path: $*") > MANIFEST.MF
76}
77
78HorizontalRule() {
79    echo "-----------------------------------------------------------------"
80}
81
82Test() {
83    HorizontalRule
84    expectedResult="$1"; shift
85    printf "%s\n" "$*"
86    "$@"
87    Report "$expectedResult" "$?"
88}
89
90Failure() { Test failure "$@"; }
91Success() { Test success "$@"; }
92
93Bottom() {
94    test "$#" = 1 -a "$1" = "Line" || Die "Usage: Bottom Line"
95
96    if test -n "$failed"; then
97	count=`printf "%s" "$failed" | wc -c | tr -d ' '`
98	echo "FAIL: $count tests failed"
99	exit 1
100    else
101	echo "PASS: all tests gave expected results"
102	exit 0
103    fi
104}
105
106BadJarFile() {
107    for jarfilename in "$@"; do pwd > "$jarfilename"; done
108}
109
110#----------------------------------------------------------------
111# Usage: BCP=`DefaultBootClassPath`
112# Returns default bootclasspath, discarding non-existent entries
113#----------------------------------------------------------------
114DefaultBootClassPath() {
115    echo 'public class B {public static void main(String[] a) {
116    System.out.println(System.getProperty("sun.boot.class.path"));}}' > B.java
117    "$javac" B.java
118    _BCP_=""
119    for elt in `"$java" B | tr "${PS}" " "`; do
120	test -r "$elt" -a -n "$elt" && _BCP_="${_BCP_:+${_BCP_}${PS}}${elt}"
121    done
122    rm -f B.java B.class
123    printf "%s" "$_BCP_"	# Don't use echo -- unsafe on Windows
124}
125
126#----------------------------------------------------------------
127# Foil message localization
128#----------------------------------------------------------------
129DiagnosticsInEnglishPlease() {
130    LANG="C" LC_ALL="C" LC_MESSAGES="C"; export LANG LC_ALL LC_MESSAGES
131}
132