|
1 /** |
|
2 * @test |
|
3 * @bug 4390869 |
|
4 * @bug 4460328 |
|
5 * @summary Test the new SourceDebugExtension facility |
|
6 * @author Robert Field |
|
7 * |
|
8 * @library .. |
|
9 * |
|
10 * @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE |
|
11 * @run compile SourceDebugExtensionTest.java |
|
12 * @run compile -g SourceDebugExtensionTarg.java |
|
13 * @run driver SourceDebugExtensionTest |
|
14 */ |
|
15 import com.sun.jdi.*; |
|
16 import com.sun.jdi.event.*; |
|
17 import com.sun.jdi.request.*; |
|
18 |
|
19 import java.util.*; |
|
20 import java.io.File; |
|
21 |
|
22 public class SourceDebugExtensionTest extends TestScaffold { |
|
23 ReferenceType targetClass; |
|
24 |
|
25 SourceDebugExtensionTest (String args[]) { |
|
26 super(args); |
|
27 } |
|
28 |
|
29 public static void main(String[] args) throws Exception { |
|
30 testSetUp(); |
|
31 new SourceDebugExtensionTest(args).startTests(); |
|
32 } |
|
33 |
|
34 /********** test set-up **********/ |
|
35 |
|
36 static void testSetUp() throws Exception { |
|
37 InstallSDE.install(new File(System.getProperty("test.classes", "."), |
|
38 "SourceDebugExtensionTarg.class"), |
|
39 new File(System.getProperty("test.src", "."), |
|
40 "testString")); |
|
41 } |
|
42 |
|
43 /********** test core **********/ |
|
44 |
|
45 protected void runTests() throws Exception { |
|
46 /* |
|
47 * Get to the top of main() |
|
48 * to determine targetClass |
|
49 */ |
|
50 BreakpointEvent bpe = startToMain("SourceDebugExtensionTarg"); |
|
51 targetClass = bpe.location().declaringType(); |
|
52 |
|
53 if (!vm().canGetSourceDebugExtension()) { |
|
54 failure("FAIL: canGetSourceDebugExtension() is false"); |
|
55 } else { |
|
56 println("canGetSourceDebugExtension() is true"); |
|
57 } |
|
58 |
|
59 String expected = "An expected attribute string"; |
|
60 String sde = targetClass.sourceDebugExtension(); |
|
61 if (!sde.equals(expected)) { |
|
62 failure("FAIL: got '" + sde + |
|
63 "' expected: '" + expected + "'"); |
|
64 } |
|
65 |
|
66 /* |
|
67 * resume the target listening for events |
|
68 */ |
|
69 listenUntilVMDisconnect(); |
|
70 |
|
71 /* |
|
72 * deal with results of test |
|
73 * if anything has called failure("foo") testFailed will be true |
|
74 */ |
|
75 if (!testFailed) { |
|
76 println("SourceDebugExtensionTest: passed"); |
|
77 } else { |
|
78 throw new Exception("SourceDebugExtensionTest: failed"); |
|
79 } |
|
80 } |
|
81 } |