Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/debugger-libs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@microsoft.com>2022-02-07 14:02:46 +0300
committerMatt Ward <ward.matt@gmail.com>2022-02-07 16:51:47 +0300
commit9bd6ab38df7239ce8e7bdabca4a152423d6a8424 (patch)
treec797cffa2dc3d182b5b57dcdb441e3f189c87adf
parentb66e32db52802a5a570c3a1eba11b9ded41fdd97 (diff)
Fix race condition in conditional breakpoint tests
The breakpoint condition was set after the breakpoint is added to the session. This could result in the debugger session not setting the condition for the breakpoint. To avoid this the breakpoint is added to the debugger session after the condition has been set on the breakpoint.
-rw-r--r--UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs9
-rw-r--r--UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs8
2 files changed, 13 insertions, 4 deletions
diff --git a/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs b/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs
index 3fecacd..609750d 100644
--- a/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs
+++ b/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs
@@ -998,8 +998,9 @@ namespace Mono.Debugging.Tests
InitializeTest ();
AddBreakpoint ("3e2e4759-f6d9-4839-98e6-4fa96b227458");
- bp = AddBreakpoint ("eef5bea2-aaa6-4718-b26f-b35be6a6a13e");
+ bp = CreateBreakpoint ("eef5bea2-aaa6-4718-b26f-b35be6a6a13e");
bp.ConditionExpression = "i==2";
+ Session.Breakpoints.Add (bp);
StartTest ("ForLoop10");
CheckPosition ("eef5bea2-aaa6-4718-b26f-b35be6a6a13e");
val = Eval ("i");
@@ -1009,16 +1010,18 @@ namespace Mono.Debugging.Tests
IgnoreCorDebugger ("TODO: Conditional breakpoints with compare against string or enum is not working on CorDebugger");
InitializeTest ();
- bp = AddBreakpoint ("033dd01d-6cb4-4e1a-b445-de6d7fa0d2a7");
+ bp = CreateBreakpoint ("033dd01d-6cb4-4e1a-b445-de6d7fa0d2a7");
bp.ConditionExpression = "str == \"bbb\"";
+ Session.Breakpoints.Add (bp);
StartTest ("ConditionalBreakpointString");
CheckPosition ("033dd01d-6cb4-4e1a-b445-de6d7fa0d2a7");
val = Eval ("str");
Assert.AreEqual ("\"bbb\"", val.Value);
InitializeTest ();
- bp = AddBreakpoint ("ecf764bf-9182-48d6-adb0-0ba36e2653a7");
+ bp = CreateBreakpoint ("ecf764bf-9182-48d6-adb0-0ba36e2653a7");
bp.ConditionExpression = "en == BooleanEnum.False";
+ Session.Breakpoints.Add (bp);
StartTest ("ConitionalBreakpointEnum");
CheckPosition ("ecf764bf-9182-48d6-adb0-0ba36e2653a7");
val = Eval ("en");
diff --git a/UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs b/UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs
index cf55863..428da6b 100644
--- a/UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs
+++ b/UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs
@@ -257,11 +257,17 @@ namespace Mono.Debugging.Tests
public Breakpoint AddBreakpoint (string breakpointMarker, int offset = 0, string statement = null, ITextFile file = null)
{
+ var bp = CreateBreakpoint (breakpointMarker, offset, statement, file);
+ Session.Breakpoints.Add (bp);
+ return bp;
+ }
+
+ public Breakpoint CreateBreakpoint (string breakpointMarker, int offset = 0, string statement = null, ITextFile file = null)
+ {
file = file ?? SourceFile;
int col, line;
GetLineAndColumn (breakpointMarker, offset, statement, out line, out col, file);
var bp = new Breakpoint (file.Name, line, col);
- Session.Breakpoints.Add (bp);
return bp;
}