diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lldbutil.py')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lldbutil.py | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lldbutil.py b/lldb/packages/Python/lldbsuite/test/lldbutil.py index 1aacf8765bc..339619dc4f7 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbutil.py @@ -737,17 +737,25 @@ def print_stacktraces(process, string_buffer = False): def expect_state_changes(test, listener, states, timeout = 5): """Listens for state changed events on the listener and makes sure they match what we expect. Stop-and-restart events (where GetRestartedFromEvent() returns true) are ignored.""" - event = lldb.SBEvent() - for expected_state in states: - if not listener.WaitForEvent(timeout, event): - test.fail("Timed out while waiting for a transition to state %s" % - lldb.SBDebugger.StateAsCString(expected_state)) - - got_state = lldb.SBProcess.GetStateFromEvent(event) - if got_state == lldb.eStateStopped and lldb.SBProcess.GetRestartedFromEvent(event): - continue - test.assertEqual(expected_state, got_state) + for expected_state in states: + def get_next_event(): + event = lldb.SBEvent() + if not listener.WaitForEvent(timeout, event): + test.fail("Timed out while waiting for a transition to state %s" % + lldb.SBDebugger.StateAsCString(expected_state)) + return event + + event = get_next_event() + while (lldb.SBProcess.GetStateFromEvent(event) == lldb.eStateStopped and + lldb.SBProcess.GetRestartedFromEvent(event)): + # Ignore restarted event and the subsequent running event. + event = get_next_event() + test.assertEqual(lldb.SBProcess.GetStateFromEvent(event), lldb.eStateRunning, + "Restarted event followed by a running event") + event = get_next_event() + + test.assertEqual(lldb.SBProcess.GetStateFromEvent(event), expected_state) # =================================== # Utility functions related to Frames |