2
|
1 |
/*
|
|
2 |
* Copyright 1999 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 |
/**
|
|
25 |
* @test
|
|
26 |
* @bug 4245011
|
|
27 |
* @summary Test launcher command line construction
|
|
28 |
* @author Gordon Hirsch
|
|
29 |
*
|
|
30 |
* @library scaffold
|
|
31 |
* @run build JDIScaffold VMConnection
|
|
32 |
* @run compile -g HelloWorld.java
|
|
33 |
* @run build LaunchCommandLine
|
|
34 |
*
|
|
35 |
* @run main LaunchCommandLine
|
|
36 |
*/
|
|
37 |
import com.sun.jdi.*;
|
|
38 |
import com.sun.jdi.event.*;
|
|
39 |
import com.sun.jdi.request.*;
|
|
40 |
|
|
41 |
import java.util.List;
|
|
42 |
|
|
43 |
public class LaunchCommandLine extends JDIScaffold {
|
|
44 |
public static void main(String args[]) throws Exception {
|
|
45 |
new LaunchCommandLine(args).startTests();
|
|
46 |
}
|
|
47 |
|
|
48 |
LaunchCommandLine(String args[]) {
|
|
49 |
// args are set in code below
|
|
50 |
super();
|
|
51 |
}
|
|
52 |
|
|
53 |
protected void runTests() throws Exception {
|
|
54 |
String[] args = new String[2];
|
|
55 |
args[0] = "-connect";
|
|
56 |
args[1] = "com.sun.jdi.CommandLineLaunch:main=HelloWorld a b c \"a b c\"";
|
|
57 |
testArgs(args);
|
|
58 |
System.out.println("com.sun.jdi.CommandLineLaunch: passed");
|
|
59 |
|
|
60 |
// Add test for RawCommandLineLauncher?
|
|
61 |
}
|
|
62 |
|
|
63 |
void testArgs(String[] args) throws Exception {
|
|
64 |
connect(args);
|
|
65 |
waitForVMStart();
|
|
66 |
|
|
67 |
/*
|
|
68 |
* Get to a point where the command line args are accessible.
|
|
69 |
*/
|
|
70 |
BreakpointEvent bp = resumeTo("HelloWorld", "main", "([Ljava/lang/String;)V");
|
|
71 |
|
|
72 |
StackFrame frame = bp.thread().frame(0);
|
|
73 |
LocalVariable argsVariable = frame.visibleVariableByName("args");
|
|
74 |
ArrayReference argsArray = (ArrayReference)frame.getValue(argsVariable);
|
|
75 |
|
|
76 |
List argValues = argsArray.getValues();
|
|
77 |
|
|
78 |
if (argValues.size() != 4) {
|
|
79 |
throw new Exception("Wrong number of command line arguments: " + argValues.size());
|
|
80 |
}
|
|
81 |
|
|
82 |
String string = ((StringReference)argValues.get(0)).value();
|
|
83 |
if (!string.equals("a")) {
|
|
84 |
throw new Exception("Bad command line argument value: " + string);
|
|
85 |
}
|
|
86 |
string = ((StringReference)argValues.get(1)).value();
|
|
87 |
if (!string.equals("b")) {
|
|
88 |
throw new Exception("Bad command line argument value: " + string);
|
|
89 |
}
|
|
90 |
string = ((StringReference)argValues.get(2)).value();
|
|
91 |
if (!string.equals("c")) {
|
|
92 |
throw new Exception("Bad command line argument value: " + string);
|
|
93 |
}
|
|
94 |
string = ((StringReference)argValues.get(3)).value();
|
|
95 |
if (!string.equals("a b c")) {
|
|
96 |
throw new Exception("Bad command line argument value: " + string);
|
|
97 |
}
|
|
98 |
|
|
99 |
// Allow application to complete
|
|
100 |
resumeToVMDeath();
|
|
101 |
}
|
|
102 |
|
|
103 |
}
|