1#!/bin/ksh -p
2
3#
4# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
5# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6#
7# This code is free software; you can redistribute it and/or modify it
8# under the terms of the GNU General Public License version 2 only, as
9# published by the Free Software Foundation.
10#
11# This code is distributed in the hope that it will be useful, but WITHOUT
12# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14# version 2 for more details (a copy is included in the LICENSE file that
15# accompanied this code).
16#
17# You should have received a copy of the GNU General Public License version
18# 2 along with this work; if not, write to the Free Software Foundation,
19# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20#
21# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22# or visit www.oracle.com if you need additional information or have any
23# questions.
24#
25
26#
27#   @test       ShowExitTest.sh
28#   @key        headful
29#   @bug        6513421
30#   @summary    Java process does not terminate on closing the Main Application Frame
31#
32#   @compile ShowExitTest.java
33#   @run shell/timeout=60 ShowExitTest.sh
34
35# NOTE: The following error message means that the regression test failed:
36#       "Execution failed: Program `sh' interrupted! (timed out?)"
37
38# Beginning of subroutines:
39status=1
40
41#Call this from anywhere to fail the test with an error message
42# usage: fail "reason why the test failed"
43fail()
44 { echo "The test failed :-("
45   echo "$*" 1>&2
46   echo "exit status was $status"
47   exit $status
48 } #end of fail()
49
50#Call this from anywhere to pass the test with a message
51# usage: pass "reason why the test passed if applicable"
52pass()
53 { echo "The test passed!!!"
54   echo "$*" 1>&2
55   exit 0
56 } #end of pass()
57
58# end of subroutines
59
60
61# The beginning of the script proper
62
63# Checking for proper OS
64OS=`uname -s`
65case "$OS" in
66   SunOS )
67      VAR="One value for Sun"
68      DEFAULT_JDK=/
69      FILESEP="/"
70      PATHSEP=":"
71      TMP="/tmp"
72      ;;
73
74   Linux )
75      VAR="A different value for Linux"
76      DEFAULT_JDK=/
77      FILESEP="/"
78      PATHSEP=":"
79      TMP="/tmp"
80      ;;
81
82   Darwin )
83      VAR="A different value for MacOSX"
84      DEFAULT_JDK=/usr
85      FILESEP="/"
86      PATHSEP=":"
87      TMP="/tmp"
88      ;;
89
90   Windows* )
91      VAR="A different value for Win32"
92      DEFAULT_JDK="C:/Program Files/Java/jdk1.8.0"
93      FILESEP="\\"
94      PATHSEP=";"
95      TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}`
96      ;;
97
98    CYGWIN* )
99      VAR="A different value for Cygwin"
100      DEFAULT_JDK="/cygdrive/c/Program\ Files/Java/jdk1.8.0"
101      FILESEP="/"
102      PATHSEP=";"
103      TMP=`cd "${SystemRoot}/Temp"; echo ${PWD}`
104      ;;
105
106   AIX )
107      VAR="A different value for AIX"
108      DEFAULT_JDK=/
109      FILESEP="/"
110      PATHSEP=":"
111      TMP="/tmp"
112      ;;
113
114   # catch all other OSs
115   * )
116      echo "Unrecognized system!  $OS"
117      fail "Unrecognized system!  $OS"
118      ;;
119esac
120
121
122# Want this test to run standalone as well as in the harness, so do the
123#  following to copy the test's directory into the harness's scratch directory
124#  and set all appropriate variables:
125
126if [ -z "${TESTJAVA}" ] ; then
127   # TESTJAVA is not set, so the test is running stand-alone.
128   # TESTJAVA holds the path to the root directory of the build of the JDK
129   # to be tested.  That is, any java files run explicitly in this shell
130   # should use TESTJAVA in the path to the java interpreter.
131   # So, we'll set this to the JDK spec'd on the command line.  If none
132   # is given on the command line, tell the user that and use a cheesy
133   # default.
134   # THIS IS THE JDK BEING TESTED.
135   if [ -n "$1" ] ;
136      then TESTJAVA=$1
137      else echo "no JDK specified on command line so using default!"
138     TESTJAVA=$DEFAULT_JDK
139   fi
140   TESTSRC=.
141   TESTCLASSES=.
142   STANDALONE=1;
143fi
144echo "JDK under test is: $TESTJAVA"
145
146#Deal with .class files:
147if [ -n "${STANDALONE}" ] ;
148   then
149   #if standalone, remind user to cd to dir. containing test before running it
150   echo "Just a reminder: cd to the dir containing this test when running it"
151   # then compile all .java files (if there are any) into .class files
152   if [ -a *.java ] ;
153      then echo "Reminder, this test should be in its own directory with all"
154      echo "supporting files it needs in the directory with it."
155      ${TESTJAVA}/bin/javac ./*.java ;
156   fi
157   # else in harness so copy all the class files from where jtreg put them
158   # over to the scratch directory this test is running in.
159   else cp ${TESTCLASSES}/*.class . ;
160fi
161
162#if in test harness, then copy the entire directory that the test is in over
163# to the scratch directory.  This catches any support files needed by the test.
164if [ -z "${STANDALONE}" ] ;
165   then cp ${TESTSRC}/* .
166fi
167
168#Just before executing anything, make sure it has executable permission!
169chmod 777 ./*
170
171###############  YOUR TEST CODE HERE!!!!!!!  #############
172
173#All files required for the test should be in the same directory with
174# this file.  If converting a standalone test to run with the harness,
175# as long as all files are in the same directory and it returns 0 for
176# pass, you should be able to cut and paste it into here and it will
177# run with the test harness.
178
179${TESTJAVA}/bin/java ${TESTVMOPTS} ShowExitTest
180
181###############  END YOUR TEST CODE !!!!! ############
182#Be sure the last command executed above this line returns 0 for success,
183# something non-zero for failure.
184status=$?
185
186# pass or fail the test based on status of the command
187if [ $status -eq "0" ];
188   then pass ""
189
190   else fail "The program didn't terminate automatically!"
191fi
192
193#For additional examples of how to write platform independent KSH scripts,
194# see the jtreg file itself.  It is a KSH script for both Solaris and Win32
195
196