|
13 | 13 | *******************************************************************************/ |
14 | 14 | package org.eclipse.jdt.debug.tests.breakpoints; |
15 | 15 |
|
| 16 | +import org.eclipse.debug.core.ILaunch; |
| 17 | +import org.eclipse.debug.core.model.IBreakpoint; |
16 | 18 | import org.eclipse.debug.core.model.IVariable; |
17 | 19 | import org.eclipse.jdt.debug.core.IJavaBreakpoint; |
| 20 | +import org.eclipse.jdt.debug.core.IJavaDebugTarget; |
18 | 21 | import org.eclipse.jdt.debug.core.IJavaLineBreakpoint; |
19 | 22 | import org.eclipse.jdt.debug.core.IJavaPrimitiveValue; |
20 | 23 | import org.eclipse.jdt.debug.core.IJavaStackFrame; |
@@ -135,4 +138,33 @@ public void testTriggerPointBreakpointWithResumeAndConditionAsTrue() throws Exce |
135 | 138 | removeAllBreakpoints(); |
136 | 139 | } |
137 | 140 | } |
| 141 | + |
| 142 | + // see bug : https://github.com/eclipse-jdt/eclipse.jdt.debug/issues/546 |
| 143 | + public void testTriggerPointAutoEnableAfterConditionalBp() throws Exception { |
| 144 | + String typeName = "TriggerPoint_01"; |
| 145 | + IJavaLineBreakpoint bp1 = createLineBreakpoint(20, typeName); |
| 146 | + IJavaLineBreakpoint bp2 = createLineBreakpoint(21, typeName); |
| 147 | + bp1.setTriggerPoint(true); |
| 148 | + bp2.setCondition("true"); |
| 149 | + bp2.setConditionEnabled(true); |
| 150 | + bp2.setConditionSuspendOnTrue(true); |
| 151 | + IJavaThread thread = null; |
| 152 | + try { |
| 153 | + thread = launchToBreakpoint(typeName); |
| 154 | + IJavaStackFrame frame = (IJavaStackFrame) thread.getTopStackFrame(); |
| 155 | + int lineNumber = frame.getLineNumber(); |
| 156 | + assertEquals("Breakpoint should hit at triggeroint", 20, lineNumber); |
| 157 | + IJavaDebugTarget debugTarget = (IJavaDebugTarget) thread.getDebugTarget(); |
| 158 | + ILaunch launch = debugTarget.getLaunch(); |
| 159 | + thread.getLaunch().terminate(); |
| 160 | + Thread.sleep(3000); |
| 161 | + IBreakpoint[] bps = getBreakpointManager().getBreakpoints(); |
| 162 | + boolean enabledStatus = bps[0].isEnabled(); |
| 163 | + assertTrue("Trigger point should be enabled after termination", enabledStatus); |
| 164 | + getLaunchManager().removeLaunch(launch); |
| 165 | + } finally { |
| 166 | + terminateAndRemove(thread); |
| 167 | + removeAllBreakpoints(); |
| 168 | + } |
| 169 | + } |
138 | 170 | } |
0 commit comments