Bug 120886 - debug test not cleaning before next test runs
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/PreLaunchBreakpointTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/PreLaunchBreakpointTest.java
index 184d91b6..5864cd3 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/PreLaunchBreakpointTest.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/PreLaunchBreakpointTest.java
@@ -10,14 +10,15 @@
*******************************************************************************/
package org.eclipse.jdt.debug.tests.core;
-import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.ILaunchesListener;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
-import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jdt.debug.core.IJavaThread;
+import org.eclipse.jdt.debug.testplugin.DebugElementKindEventDetailWaiter;
+import org.eclipse.jdt.debug.testplugin.DebugEventWaiter;
import org.eclipse.jdt.debug.tests.AbstractDebugTest;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -27,41 +28,26 @@
*/
public class PreLaunchBreakpointTest extends AbstractDebugTest {
- private boolean debugAdded = false;
- private boolean runRemoved = false;
-
- ILaunchConfiguration configuration;
- String sourceName;
-
public PreLaunchBreakpointTest(String name) {
super(name);
- sourceName = name;
}
- public void testRunModeLaunchWithBreakpoints() {
+ public void testRunModeLaunchWithBreakpoints() throws Exception {
String typeName = "Breakpoints";
- configuration = getLaunchConfiguration(typeName);
- getLaunchManager().addLaunchListener(new MyListener());
+ ILaunchConfiguration configuration = getLaunchConfiguration(typeName);
IPreferenceStore preferenceStore = DebugUIPlugin.getDefault().getPreferenceStore();
preferenceStore.setValue(IInternalDebugUIConstants.PREF_RELAUNCH_IN_DEBUG_MODE, MessageDialogWithToggle.ALWAYS);
-
+ IJavaThread thread = null;
try {
- createTargetPatternBreakpoint(77, sourceName);
-
- DebugUITools.buildAndLaunch(configuration, ILaunchManager.RUN_MODE, new NullProgressMonitor());
-
- synchronized (this) {
- if (!debugAdded) {
- try {
- wait();
- } catch (InterruptedException e) {
- }
- }
- }
- assertFalse("RUN_MODE Launch should never have been added", runRemoved);
- assertTrue("DEBUG_MODE Launch should have been added", debugAdded);
+ createLineBreakpoint(52, typeName);
+ DebugEventWaiter waiter= new DebugElementKindEventDetailWaiter(DebugEvent.SUSPEND, IJavaThread.class, DebugEvent.BREAKPOINT);
+ waiter.setTimeout(DEFAULT_TIMEOUT);
+ ILaunch launch = configuration.launch(ILaunchManager.RUN_MODE, null);
+ Object suspendee= waiter.waitForEvent();
+ assertTrue("Program did not suspend", suspendee instanceof IJavaThread);
+ thread = (IJavaThread) suspendee;
} catch (Exception e) {
e.printStackTrace();
@@ -69,44 +55,7 @@
removeAllBreakpoints();
//this must get done... other tests might fail.
preferenceStore.setValue(IInternalDebugUIConstants.PREF_RELAUNCH_IN_DEBUG_MODE, MessageDialogWithToggle.NEVER);
- }
- }
-
- private class MyListener implements ILaunchesListener {
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesRemoved(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesRemoved(ILaunch[] launches) {
- synchronized (PreLaunchBreakpointTest.this) {
- for (int i = 0; i < launches.length; i++) {
- ILaunchConfiguration goneAway = launches[i].getLaunchConfiguration();
- if (goneAway.equals(configuration) && launches[i].getLaunchMode().equals(ILaunchManager.RUN_MODE)) {
- runRemoved = true;
- PreLaunchBreakpointTest.this.notify();
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesAdded(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesAdded(ILaunch[] launches) {
- synchronized (PreLaunchBreakpointTest.this) {
- for (int i = 0; i < launches.length; i++) {
- ILaunchConfiguration newLC = launches[i].getLaunchConfiguration();
- if (newLC.equals(configuration) && launches[i].getLaunchMode().equals(ILaunchManager.DEBUG_MODE)) {
- debugAdded = true;
- PreLaunchBreakpointTest.this.notify();
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesChanged(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesChanged(ILaunch[] launches) {
+ terminateAndRemove(thread);
}
}
}