Squish: Support more than one breakpoint per file

Change-Id: Ic33e039fe5aea9caed5a3e992a74938e331e2a4b
Reviewed-by: Robert Löhning <robert.loehning@nokia.com>
This commit is contained in:
Christian Stenger
2012-05-03 11:47:35 +02:00
parent 1f435bcbce
commit 525cf2353e
3 changed files with 30 additions and 26 deletions

View File

@@ -35,7 +35,7 @@ def takeDebuggerLog():
return debuggerLog return debuggerLog
# function to set breakpoints for the current project # function to set breakpoints for the current project
# on the given file,line pairs inside the given dict # on the given file,line pairs inside the given list of dicts
# the lines are treated as regular expression # the lines are treated as regular expression
def setBreakpointsForCurrentProject(filesAndLines): def setBreakpointsForCurrentProject(filesAndLines):
# internal helper for setBreakpointsForCurrentProject # internal helper for setBreakpointsForCurrentProject
@@ -52,18 +52,19 @@ def setBreakpointsForCurrentProject(filesAndLines):
switchViewTo(ViewConstants.DEBUG) switchViewTo(ViewConstants.DEBUG)
removeOldBreakpoints() removeOldBreakpoints()
if not filesAndLines or not isinstance(filesAndLines, dict): if not filesAndLines or not isinstance(filesAndLines, (list,tuple)):
test.fatal("This function only takes a non-empty dict.") test.fatal("This function only takes a non-empty list/tuple holding dicts.")
return False return False
navTree = waitForObject("{type='Utils::NavigationTreeView' unnamed='1' visible='1' " navTree = waitForObject("{type='Utils::NavigationTreeView' unnamed='1' visible='1' "
"window=':Qt Creator_Core::Internal::MainWindow'}", 20000) "window=':Qt Creator_Core::Internal::MainWindow'}", 20000)
for curFile,curLine in filesAndLines.iteritems(): for current in filesAndLines:
fName = __doubleClickFile__(navTree, curFile) for curFile,curLine in current.iteritems():
editor = getEditorForFileSuffix(curFile) fName = __doubleClickFile__(navTree, curFile)
if not placeCursorToLine(editor, curLine, True): editor = getEditorForFileSuffix(curFile)
return False if not placeCursorToLine(editor, curLine, True):
invokeMenuItem("Debug", "Toggle Breakpoint") return False
test.log('Set breakpoint in %s' % fName, curLine) invokeMenuItem("Debug", "Toggle Breakpoint")
test.log('Set breakpoint in %s' % fName, curLine)
try: try:
breakPointTreeView = waitForObject("{type='Debugger::Internal::BreakWindow' visible='1' " breakPointTreeView = waitForObject("{type='Debugger::Internal::BreakWindow' visible='1' "
"windowTitle='Breakpoints' name='Debugger.Docks.Break'}") "windowTitle='Breakpoints' name='Debugger.Docks.Break'}")

View File

@@ -375,7 +375,8 @@ def checkDebuggingLibrary(targVersion, targets):
# param keepOptionsOpen set to True if the Options dialog should stay open when # param keepOptionsOpen set to True if the Options dialog should stay open when
# leaving this function # leaving this function
# param additionalFunction pass a function or name of a defined function to execute # param additionalFunction pass a function or name of a defined function to execute
# for each item on the list of Qt versions # for each correctly configured item on the list of Qt versions
# (Qt versions having no assigned toolchain, failing qmake,... will be skipped)
# this function must take at least 2 parameters - the first is the target name # this function must take at least 2 parameters - the first is the target name
# and the second the version of the current selected Qt version item # and the second the version of the current selected Qt version item
# param argsForAdditionalFunc you can specify as much parameters as you want to pass # param argsForAdditionalFunc you can specify as much parameters as you want to pass
@@ -411,17 +412,19 @@ def iterateQtVersions(keepOptionsOpen=False, additionalFunction=None, *argsForAd
target = matches.group("target").strip() target = matches.group("target").strip()
version = matches.group("version").strip() version = matches.group("version").strip()
result.append({target:version}) result.append({target:version})
if additionalFunction: if additionalFunction:
try: try:
if isinstance(additionalFunction, (str, unicode)): if isinstance(additionalFunction, (str, unicode)):
currResult = globals()[additionalFunction](target, version, *argsForAdditionalFunc) currResult = globals()[additionalFunction](target, version, *argsForAdditionalFunc)
else: else:
currResult = additionalFunction(target, version, *argsForAdditionalFunc) currResult = additionalFunction(target, version, *argsForAdditionalFunc)
except: except:
currResult = None import sys
test.fatal("Function to additionally execute on Options Dialog could not be found or " t,v,tb = sys.exc_info()
"an exception occured while executing it.") currResult = None
additionalResult.append(currResult) test.fatal("Function to additionally execute on Options Dialog could not be found or "
"an exception occured while executing it.", "%s(%s)" % (str(t), str(v)))
additionalResult.append(currResult)
if not keepOptionsOpen: if not keepOptionsOpen:
clickButton(waitForObject(":Options.Cancel_QPushButton")) clickButton(waitForObject(":Options.Cancel_QPushButton"))
if additionalFunction: if additionalFunction:

View File

@@ -25,10 +25,10 @@ def main():
'running: true', 'running: true',
'onTriggered: console.log("Break here")']) 'onTriggered: console.log("Break here")'])
invokeMenuItem("File", "Save All") invokeMenuItem("File", "Save All")
filesAndLines = { filesAndLines = [
"%s.QML.qml/%s.main\\.qml" % (projectName,projectName) : 'onTriggered:.*', { "%s.QML.qml/%s.main\\.qml" % (projectName,projectName) : 'onTriggered.*' },
"%s.Sources.main\\.cpp" % projectName : "viewer.setOrientation\\(.+\\);" { "%s.Sources.main\\.cpp" % projectName : "viewer.setOrientation\\(.+\\);" }
} ]
test.log("Setting breakpoints") test.log("Setting breakpoints")
result = setBreakpointsForCurrentProject(filesAndLines) result = setBreakpointsForCurrentProject(filesAndLines)
if result: if result: