summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lldbutil.py
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2016-01-06 11:40:06 +0000
committerPavel Labath <labath@google.com>2016-01-06 11:40:06 +0000
commite5c9808efd33e134118be701c2f78665fc4517d4 (patch)
treec24cd1a46b4dd1fa3fcc7c0dcf3cda0b4564058a /lldb/packages/Python/lldbsuite/test/lldbutil.py
parent070fac02c3c716769687c05531ec262bb92f6791 (diff)
downloadbcm5719-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.py28
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
OpenPOWER on IntegriCloud