Author: labath Date: Wed Jan 6 05:40:06 2016 New Revision: 256928 URL: http://llvm.org/viewvc/llvm-project?rev=256928&view=rev Log: 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. Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbutil.py Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbutil.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbutil.py?rev=256928&r1=256927&r2=256928&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lldbutil.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lldbutil.py Wed Jan 6 05:40:06 2016 @@ -737,17 +737,25 @@ def print_stacktraces(process, string_bu 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)) + 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 - got_state = lldb.SBProcess.GetStateFromEvent(event) - if got_state == lldb.eStateStopped and lldb.SBProcess.GetRestartedFromEvent(event): - continue + 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(expected_state, got_state) + test.assertEqual(lldb.SBProcess.GetStateFromEvent(event), expected_state) # =================================== # Utility functions related to Frames _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits