forked from qt-creator/qt-creator
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:
@@ -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'}")
|
||||||
|
@@ -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:
|
||||||
|
@@ -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:
|
||||||
|
Reference in New Issue
Block a user