diff options
author | Pavel Labath <labath@google.com> | 2016-01-06 11:40:06 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2016-01-06 11:40:06 +0000 |
commit | e5c9808efd33e134118be701c2f78665fc4517d4 (patch) | |
tree | c24cd1a46b4dd1fa3fcc7c0dcf3cda0b4564058a /lldb/packages/Python/lldbsuite/test/lldbutil.py | |
parent | 070fac02c3c716769687c05531ec262bb92f6791 (diff) | |
download | bcm5719-llvm-e5c9808efd33e134118be701c2f78665fc4517d4.tar.gz bcm5719-llvm-e5c9808efd33e134118be701c2f78665fc4517d4.zip |
Fix a bug in lldbutil.expect_state_changes
The logic for skipping over the stop-and-restart events was incorrect as it was also skipping the
expectations. Implement it properly. No test is affected by this as they were not encountering
these events, but I encountered this issue when trying to use this function in a new test.
llvm-svn: 256928
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 |