Improve QtScriptEngineDebugger test behavior

The extra ContinueAction after evaluate() was crashing
on MacOS X.

Reviewer: Hugo Lima <hugo.lima@openbossa.org>
Reviewer: Renato Araujo <renator.filho@openbossa.org>
This commit is contained in:
Lauro Neto 2010-12-28 21:18:26 -03:00
commit bc9ddff514

View file

@ -1,7 +1,7 @@
import unittest import unittest
from PySide.QtCore import SIGNAL from PySide.QtCore import SIGNAL, QTimer
from PySide.QtScript import QScriptEngine from PySide.QtScript import QScriptEngine
from PySide.QtScriptTools import QScriptEngineDebugger from PySide.QtScriptTools import QScriptEngineDebugger
@ -13,29 +13,32 @@ class DebuggerTest(UsesQApplication):
UsesQApplication.setUp(self) UsesQApplication.setUp(self)
self.engine = QScriptEngine() self.engine = QScriptEngine()
self.debugger = QScriptEngineDebugger() self.debugger = QScriptEngineDebugger()
self.has_suspended = False self.has_suspended = 0
self.has_resumed = False self.has_resumed = 0
self.count = 3
def suspended(self): def suspended(self):
self.has_suspended = True self.has_suspended += 1
self.debugger.action(QScriptEngineDebugger.ContinueAction).trigger() # Will emit evaluationResumed until there are more instructions to be run
QTimer.singleShot(100, self.debugger.action(QScriptEngineDebugger.StepIntoAction).trigger)
def resumed(self): def resumed(self):
self.has_resumed = True # Will be called when debugger.state() change from Suspended to Running
# except for the first time.
self.has_resumed += 1
def testBasic(self): def testBasic(self):
'''Interrupt and resume evaluation with QScriptEngineDebugger''' '''Interrupt and resume evaluation with QScriptEngineDebugger'''
self.debugger.attachTo(self.engine) self.debugger.attachTo(self.engine)
self.debugger.setAutoShowStandardWindow(False) self.debugger.setAutoShowStandardWindow(False)
self.debugger.connect(SIGNAL('evaluationSuspended()'), self.suspended) self.debugger.connect(SIGNAL('evaluationSuspended()'), self.suspended)
self.debugger.connect(SIGNAL('evaluationResumed()'), self.resumed) self.debugger.connect(SIGNAL('evaluationResumed()'), self.resumed)
self.debugger.action(QScriptEngineDebugger.InterruptAction).trigger() self.debugger.action(QScriptEngineDebugger.InterruptAction).trigger()
self.engine.evaluate("3+4") self.engine.evaluate("3+4\n2+1\n5+1")
self.debugger.action(QScriptEngineDebugger.ContinueAction).trigger() self.assertEqual(self.has_resumed, 2)
self.assert_(self.has_resumed) self.assertEqual(self.has_suspended, 3)
self.assert_(self.has_suspended)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()