J. Duke | 319a3b9 | 2007-12-01 00:00:00 +0000 | [diff] [blame^] | 1 | /** |
| 2 | * @test |
| 3 | * @bug 4390869 |
| 4 | * @bug 4460328 |
| 5 | * @summary Test the new SourceDebugExtension facility |
| 6 | * |
| 7 | * @author Robert Field |
| 8 | * |
| 9 | * @library .. |
| 10 | * @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE |
| 11 | * @run compile SourceDebugExtensionTest.java |
| 12 | * @run compile -g SourceDebugExtensionTarg.java |
| 13 | * @run main 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 | } |