diff -r 4ebc2e2fb97c -r 71c04702a3d5 test/jdk/com/sun/jdi/sde/SourceDebugExtensionTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/jdk/com/sun/jdi/sde/SourceDebugExtensionTest.java Tue Sep 12 19:03:39 2017 +0200 @@ -0,0 +1,81 @@ +/** + * @test + * @bug 4390869 + * @bug 4460328 + * @summary Test the new SourceDebugExtension facility + * @author Robert Field + * + * @library .. + * + * @run build TestScaffold VMConnection TargetListener TargetAdapter InstallSDE + * @run compile SourceDebugExtensionTest.java + * @run compile -g SourceDebugExtensionTarg.java + * @run driver SourceDebugExtensionTest + */ +import com.sun.jdi.*; +import com.sun.jdi.event.*; +import com.sun.jdi.request.*; + +import java.util.*; +import java.io.File; + +public class SourceDebugExtensionTest extends TestScaffold { + ReferenceType targetClass; + + SourceDebugExtensionTest (String args[]) { + super(args); + } + + public static void main(String[] args) throws Exception { + testSetUp(); + new SourceDebugExtensionTest(args).startTests(); + } + + /********** test set-up **********/ + + static void testSetUp() throws Exception { + InstallSDE.install(new File(System.getProperty("test.classes", "."), + "SourceDebugExtensionTarg.class"), + new File(System.getProperty("test.src", "."), + "testString")); + } + + /********** test core **********/ + + protected void runTests() throws Exception { + /* + * Get to the top of main() + * to determine targetClass + */ + BreakpointEvent bpe = startToMain("SourceDebugExtensionTarg"); + targetClass = bpe.location().declaringType(); + + if (!vm().canGetSourceDebugExtension()) { + failure("FAIL: canGetSourceDebugExtension() is false"); + } else { + println("canGetSourceDebugExtension() is true"); + } + + String expected = "An expected attribute string"; + String sde = targetClass.sourceDebugExtension(); + if (!sde.equals(expected)) { + failure("FAIL: got '" + sde + + "' expected: '" + expected + "'"); + } + + /* + * resume the target listening for events + */ + listenUntilVMDisconnect(); + + /* + * deal with results of test + * if anything has called failure("foo") testFailed will be true + */ + if (!testFailed) { + println("SourceDebugExtensionTest: passed"); + } else { + throw new Exception("SourceDebugExtensionTest: failed"); + } + } +}