diff options
author | Matt Ward <matt.ward@microsoft.com> | 2022-02-07 14:02:46 +0300 |
---|---|---|
committer | Matt Ward <ward.matt@gmail.com> | 2022-02-07 16:51:47 +0300 |
commit | 9bd6ab38df7239ce8e7bdabca4a152423d6a8424 (patch) | |
tree | c797cffa2dc3d182b5b57dcdb441e3f189c87adf | |
parent | b66e32db52802a5a570c3a1eba11b9ded41fdd97 (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.cs | 9 | ||||
-rw-r--r-- | UnitTests/Mono.Debugging.Tests/Shared/DebugTests.cs | 8 |
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; } |