blob: 65b67a18e177ade59bf9bc4b90963ade02140b42 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#!/bin/sh
2
3#
4# Copyright 2002 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26# @test
27# @bug 4671838
28# @summary TTY: surprising ExceptionSpec.resolveEventRequest() wildcard results
29# @author Tim Bell
30#
31# @run shell CatchPatternTest.sh
32classname=CatchPatternTestTarg
33createJavaFile()
34{
35 cat <<EOF > $classname.java.1
36public class $classname {
37 public void bark(int i) {
38 System.out.println(" bark: " + i);
39 switch (i) {
40 case 0:
41 throw new IllegalArgumentException("IllegalArgumentException");
42 case 1:
43 throw new ArithmeticException("ArithmeticException");
44 case 2:
45 throw new IllegalMonitorStateException("IllegalMonitorStateException");
46 case 3:
47 throw new IndexOutOfBoundsException("IndexOutOfBoundsException");
48 default:
49 throw new Error("should not happen");
50 }
51 }
52 public void loop(int max) {
53 for (int i = 0; i <= max; i++) {
54 try {
55 bark(i);
56 } catch(RuntimeException re) {
57 System.out.println(" loop: " + re.getMessage() +
58 " caught and ignored.");
59 }
60 }
61 }
62 public void partOne() {
63 loop(2);
64 System.out.println("partOne completed");
65 }
66 public void partTwo() {
67 loop(3);
68 System.out.println("partTwo completed");
69 }
70 public static void main(String[] args) {
71 System.out.println("Howdy!");
72 $classname my = new $classname();
73 my.partOne();
74 my.partTwo();
75 System.out.println("Goodbye from $classname!");
76 }
77}
78EOF
79}
80
81# This is called to feed cmds to jdb.
82dojdbCmds()
83{
84 #set -x
85 cmd stop in ${classname}.main
86 cmd stop in ${classname}.partTwo
87 runToBkpt
88 cmd ignore uncaught java.lang.Throwable
89 cmd catch all java.lang.I*
90 cmd cont
91 cmd cont
92 cmd cont
93 cmd ignore all java.lang.I*
94 cmd cont
95 cmd quit
96}
97
98mysetup()
99{
100 if [ -z "$TESTSRC" ] ; then
101 TESTSRC=.
102 fi
103
104 for ii in . $TESTSRC $TESTSRC/.. ; do
105 if [ -r "$ii/ShellScaffold.sh" ] ; then
106 . $ii/ShellScaffold.sh
107 break
108 fi
109 done
110}
111
112# You could replace this next line with the contents
113# of ShellScaffold.sh and this script will run just the same.
114mysetup
115
116runit
117#
118jdbFailIfNotPresent "Exception occurred: java.lang.IllegalArgumentException"
119jdbFailIfNotPresent "Exception occurred: java.lang.IllegalMonitorStateException"
120jdbFailIfPresent "Exception occurred: ArithmeticException"
121jdbFailIfPresent "Exception occurred: IndexOutOfBoundsException"
122jdbFailIfPresent "Exception occurred: IllegalStateException"
123jdbFailIfPresent "should not happen"
124debuggeeFailIfNotPresent "partOne completed"
125debuggeeFailIfNotPresent "partTwo completed"
126#
127pass