diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py index 491c4bb7df2b4cc386d7edd0d7b790d7914d2151..c99a62b0ec6630e914fdab0a4403e9b6dccc7624 100644 --- a/tests/system/shared/build_utils.py +++ b/tests/system/shared/build_utils.py @@ -50,29 +50,20 @@ def checkLastBuild(expectedToFail=False): except LookupError: test.log("checkLastBuild called without a build") return - # get labels for errors and warnings - children = object.children(buildProg) - if len(children)<4: - test.fatal("Leaving checkLastBuild()", "Referred code seems to have changed - method has to get adjusted") - return - errors = children[2].text - if errors == "": - errors = "none" - warnings = children[4].text - if warnings == "": - warnings = "none" - gotErrors = errors != "none" and errors != "0" + ensureChecked(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton") + model = waitForObject(":Qt Creator.Issues_QListView").model() + buildIssues = dumpBuildIssues(model) + errors = len(filter(lambda i: i[5] == "1", buildIssues)) + warnings = len(filter(lambda i: i[5] == "2", buildIssues)) + gotErrors = errors != 0 if not (gotErrors ^ expectedToFail): test.passes("Errors: %s | Warnings: %s" % (errors, warnings)) else: test.fail("Errors: %s | Warnings: %s" % (errors, warnings)) # additional stuff - could be removed... or improved :) - ensureChecked(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton") - list=waitForObject(":Qt Creator.Issues_QListView") - model = list.model() test.log("Rows inside issues: %d" % model.rowCount()) if gotErrors and createTasksFileOnError: - createTasksFile(list) + createTasksFile(buildIssues) return not gotErrors # helper function to check the compilation when build wasn't successful @@ -93,10 +84,17 @@ def compileSucceeded(compileOutput): return None != re.match(".*exited normally\.\n\d\d:\d\d:\d\d: Elapsed time: " "(\d:)?\d{2}:\d\d\.$", str(compileOutput), re.S) -# helper method that parses the Issues output and writes a tasks file -def createTasksFile(list): +def dumpBuildIssues(listModel): + issueDump = [] + for row in range(listModel.rowCount()): + index = listModel.index(row, 0) + issueDump.extend([map(lambda role: index.data(role).toString(), + range(Qt.UserRole, Qt.UserRole + 6))]) + return issueDump + +# helper method that writes a tasks file +def createTasksFile(buildIssues): global tasksFileDir, tasksFileCount - model = list.model() if tasksFileDir == None: tasksFileDir = os.getcwd() + "/tasks" tasksFileDir = os.path.abspath(tasksFileDir) @@ -111,18 +109,17 @@ def createTasksFile(list): outfile = os.path.join(tasksFileDir, os.path.basename(squishinfo.testCase)+"_%d.tasks" % tasksFileCount) file = codecs.open(outfile, "w", "utf-8") test.log("Writing tasks file - can take some time (according to number of issues)") - rows = model.rowCount() + rows = len(buildIssues) if os.environ.get("SYSTEST_DEBUG") == "1": firstrow = 0 else: firstrow = max(0, rows - 100) - for row in range(firstrow, rows): - index = model.index(row,0) + for issue in buildIssues[firstrow:rows]: # the following is currently a bad work-around - fData = index.data(Qt.UserRole).toString() # file - lData = index.data(Qt.UserRole + 1).toString() # line -> linenumber or empty - tData = index.data(Qt.UserRole + 5).toString() # type -> 1==error 2==warning - dData = index.data(Qt.UserRole + 3).toString() # description + fData = issue[0] # file + lData = issue[1] # line -> linenumber or empty + tData = issue[5] # type -> 1==error 2==warning + dData = issue[3] # description if lData == "": lData = "-1" if tData == "1":