eric7/Testing/TestResultsTree.py

Sun, 05 Jun 2022 17:17:44 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Jun 2022 17:17:44 +0200
branch
eric7-maintenance
changeset 9131
bc0c1b6d6adb
child 9192
a763d57e23bc
permissions
-rw-r--r--

Corrected the VCS tracing state of the recently merged files.

9131
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a tree view and associated model to show the test result
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 data.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import contextlib
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import copy
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import locale
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from collections import Counter
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from operator import attrgetter
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from PyQt6.QtCore import (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 pyqtSignal, pyqtSlot, Qt, QAbstractItemModel, QCoreApplication,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 QModelIndex, QPoint
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from PyQt6.QtGui import QBrush, QColor
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from PyQt6.QtWidgets import QMenu, QTreeView
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from EricWidgets.EricApplication import ericApp
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 import Preferences
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 from .Interfaces.TestExecutorBase import TestResultCategory
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 TopLevelId = 2 ** 32 - 1
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 class TestResultsModel(QAbstractItemModel):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Class implementing the item model containing the test data.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @signal summary(str) emitted whenever the model data changes. The element
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 is a summary of the test results of the model.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 summary = pyqtSignal(str)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Headers = [
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 QCoreApplication.translate("TestResultsModel", "Status"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 QCoreApplication.translate("TestResultsModel", "Name"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 QCoreApplication.translate("TestResultsModel", "Message"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 QCoreApplication.translate("TestResultsModel", "Duration [ms]"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 ]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 StatusColumn = 0
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 NameColumn = 1
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 MessageColumn = 2
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 DurationColumn = 3
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def __init__(self, parent=None):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Constructor
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @param parent reference to the parent object (defaults to None)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @type QObject (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 super().__init__(parent)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 if ericApp().usesDarkPalette():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__backgroundColors = {
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 TestResultCategory.RUNNING: None,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 TestResultCategory.FAIL: QBrush(QColor("#880000")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 TestResultCategory.OK: QBrush(QColor("#005500")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 TestResultCategory.SKIP: QBrush(QColor("#3f3f3f")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 TestResultCategory.PENDING: QBrush(QColor("#004768")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 }
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__backgroundColors = {
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 TestResultCategory.RUNNING: None,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 TestResultCategory.FAIL: QBrush(QColor("#ff8080")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 TestResultCategory.OK: QBrush(QColor("#c1ffba")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 TestResultCategory.SKIP: QBrush(QColor("#c5c5c5")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 TestResultCategory.PENDING: QBrush(QColor("#6fbaff")),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 }
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__testResults = []
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def index(self, row, column, parent=QModelIndex()):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 Public method to generate an index for the given row and column to
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 identify the item.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param row row for the index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @param column column for the index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 @param parent index of the parent item (defaults to QModelIndex())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 @type QModelIndex (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 @return index for the item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 @rtype QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 if not self.hasIndex(row, column, parent): # check bounds etc.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 return QModelIndex()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if not parent.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 # top level item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 return self.createIndex(row, column, TopLevelId)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 testResultIndex = parent.row()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 return self.createIndex(row, column, testResultIndex)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 def data(self, index, role):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 Public method to get the data for the various columns and roles.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @param index index of the data to be returned
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @param role role designating the data to return
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @type Qt.ItemDataRole
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @return requested data item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @rtype Any
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 if not index.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 return None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 row = index.row()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 column = index.column()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 idx = index.internalId()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 if role == Qt.ItemDataRole.DisplayRole:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 if idx != TopLevelId:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 if bool(self.__testResults[idx].extra):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 return self.__testResults[idx].extra[index.row()]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 return None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 elif column == TestResultsModel.StatusColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 return self.__testResults[row].status
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 elif column == TestResultsModel.NameColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 return self.__testResults[row].name
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 elif column == TestResultsModel.MessageColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 return self.__testResults[row].message
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 elif column == TestResultsModel.DurationColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 duration = self.__testResults[row].duration
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 ""
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if duration is None else
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 locale.format_string("%.2f", duration, grouping=True)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 elif role == Qt.ItemDataRole.ToolTipRole:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 if idx == TopLevelId and column == TestResultsModel.NameColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 return self.__testResults[row].name
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 elif role == Qt.ItemDataRole.FontRole:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if idx != TopLevelId:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 return Preferences.getEditorOtherFonts("MonospacedFont")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 elif role == Qt.ItemDataRole.BackgroundRole:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 if idx == TopLevelId:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 testResult = self.__testResults[row]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 with contextlib.suppress(KeyError):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 return self.__backgroundColors[testResult.category]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 elif role == Qt.ItemDataRole.TextAlignmentRole:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if idx == TopLevelId and column == TestResultsModel.DurationColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 return Qt.AlignmentFlag.AlignRight
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 elif role == Qt.ItemDataRole.UserRole: # __IGNORE_WARNING_Y102__
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 if idx == TopLevelId:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 testresult = self.__testResults[row]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 return (testresult.filename, testresult.lineno)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 return None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 def headerData(self, section, orientation,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 role=Qt.ItemDataRole.DisplayRole):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Public method to get the header string for the various sections.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param section section number
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @param orientation orientation of the header
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @type Qt.Orientation
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @param role data role (defaults to Qt.ItemDataRole.DisplayRole)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @type Qt.ItemDataRole (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 @return header string of the section
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 @rtype str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 orientation == Qt.Orientation.Horizontal and
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 role == Qt.ItemDataRole.DisplayRole
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 ):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 return TestResultsModel.Headers[section]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 return None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 def parent(self, index):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 Public method to get the parent of the item pointed to by index.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 @param index index of the item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @return index of the parent item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 @rtype QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 if not index.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 return QModelIndex()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 idx = index.internalId()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 if idx == TopLevelId:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 return QModelIndex()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 return self.index(idx, 0)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def rowCount(self, parent=QModelIndex()):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 Public method to get the number of row for a given parent index.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 @param parent index of the parent item (defaults to QModelIndex())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 @type QModelIndex (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 @return number of rows
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @rtype int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 if not parent.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 return len(self.__testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 if (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 parent.internalId() == TopLevelId and
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 parent.column() == 0 and
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.__testResults[parent.row()].extra is not None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 ):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 return len(self.__testResults[parent.row()].extra)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 return 0
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 def columnCount(self, parent=QModelIndex()):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 Public method to get the number of columns.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 @param parent index of the parent item (defaults to QModelIndex())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 @type QModelIndex (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 @return number of columns
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 @rtype int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 if not parent.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 return len(TestResultsModel.Headers)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 return 1
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 def clear(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 Public method to clear the model data.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.beginResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.__testResults.clear()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.endResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.summary.emit("")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def sort(self, column, order):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Public method to sort the model data by column in order.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @param column sort column number
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 @param order sort order
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 @type Qt.SortOrder
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """ # __IGNORE_WARNING_D234r__
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 def durationKey(result):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 Function to generate a key for duration sorting
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 @param result result object
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 @type TestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 @return sort key
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 @rtype float
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 return result.duration or -1.0
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.beginResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 reverse = order == Qt.SortOrder.DescendingOrder
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 if column == TestResultsModel.StatusColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.__testResults.sort(key=attrgetter('category', 'status'),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 reverse=reverse)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 elif column == TestResultsModel.NameColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.__testResults.sort(key=attrgetter('name'), reverse=reverse)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 elif column == TestResultsModel.MessageColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.__testResults.sort(key=attrgetter('message'), reverse=reverse)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 elif column == TestResultsModel.DurationColumn:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 self.__testResults.sort(key=durationKey, reverse=reverse)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 self.endResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 def getTestResults(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 Public method to get the list of test results managed by the model.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 @return list of test results managed by the model
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 @rtype list of TestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 return copy.deepcopy(self.__testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 def setTestResults(self, testResults):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 Public method to set the list of test results of the model.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 @param testResults test results to be managed by the model
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 @type list of TestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self.beginResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 self.__testResults = copy.deepcopy(testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 self.endResetModel()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 self.summary.emit(self.__summary())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 def addTestResults(self, testResults):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 Public method to add test results to the ones already managed by the
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 model.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 @param testResults test results to be added to the model
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 @type list of TestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 firstRow = len(self.__testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 lastRow = firstRow + len(testResults) - 1
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 self.beginInsertRows(QModelIndex(), firstRow, lastRow)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 self.__testResults.extend(testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 self.endInsertRows()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 self.summary.emit(self.__summary())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 def updateTestResults(self, testResults):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 Public method to update the data of managed test result items.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 @param testResults test results to be updated
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 @type list of TestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 minIndex = None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 maxIndex = None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 testResultsToBeAdded = []
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 for testResult in testResults:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 for (index, currentResult) in enumerate(self.__testResults):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 if currentResult.id == testResult.id:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 self.__testResults[index] = testResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 if minIndex is None:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 minIndex = index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 maxIndex = index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 minIndex = min(minIndex, index)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 maxIndex = max(maxIndex, index)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 break
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 # Test result with given id was not found.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 # Just add it to the list (could be a sub test)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 testResultsToBeAdded.append(testResult)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 if minIndex is not None:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 self.dataChanged.emit(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 self.index(minIndex, 0),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 self.index(maxIndex, len(TestResultsModel.Headers) - 1)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 self.summary.emit(self.__summary())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 if testResultsToBeAdded:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 self.addTestResults(testResultsToBeAdded)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 def getFailedTests(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 Public method to extract the test ids of all failed tests.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 @return test ids of all failed tests
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 @rtype list of str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 failedIds = [
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 res.id for res in self.__testResults if (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 res.category == TestResultCategory.FAIL and
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 not res.subtestResult
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 ]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 return failedIds
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 def __summary(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 Private method to generate a test results summary text.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 @return test results summary text
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 @rtype str
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 if len(self.__testResults) == 0:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 return self.tr("No results to show")
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 counts = Counter(res.category for res in self.__testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 if all(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 counts[category] == 0
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 for category in (TestResultCategory.FAIL, TestResultCategory.OK,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 TestResultCategory.SKIP)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 ):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 return self.tr("Collected %n test(s)", "", len(self.__testResults))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 return self.tr(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 "%n test(s)/subtest(s) total, {0} failed, {1} passed,"
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 " {2} skipped, {3} pending",
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 "", len(self.__testResults)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 ).format(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 counts[TestResultCategory.FAIL],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 counts[TestResultCategory.OK],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 counts[TestResultCategory.SKIP],
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 counts[TestResultCategory.PENDING]
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 class TestResultsTreeView(QTreeView):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 Class implementing a tree view to show the test result data.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 @signal goto(str, int) emitted to go to the position given by file name
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 and line number
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 goto = pyqtSignal(str, int)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 def __init__(self, parent=None):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 Constructor
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 @param parent reference to the parent widget (defaults to None)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 @type QWidget (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 super().__init__(parent)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 self.setItemsExpandable(True)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 self.setExpandsOnDoubleClick(False)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 self.setSortingEnabled(True)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 self.header().setDefaultAlignment(Qt.AlignmentFlag.AlignCenter)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 self.header().setSortIndicatorShown(False)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 # connect signals and slots
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 self.doubleClicked.connect(self.__gotoTestDefinition)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 self.customContextMenuRequested.connect(self.__showContextMenu)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 self.header().sortIndicatorChanged.connect(self.sortByColumn)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 self.header().sortIndicatorChanged.connect(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 lambda column, order: self.header().setSortIndicatorShown(True))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 def reset(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 Public method to reset the internal state of the view.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 super().reset()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 self.resizeColumns()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 self.spanFirstColumn(0, self.model().rowCount() - 1)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 def rowsInserted(self, parent, startRow, endRow):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 Public method called when rows are inserted.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 @param parent model index of the parent item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 @param startRow first row been inserted
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 @param endRow last row been inserted
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 @type int
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 super().rowsInserted(parent, startRow, endRow)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 self.resizeColumns()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 self.spanFirstColumn(startRow, endRow)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 def dataChanged(self, topLeft, bottomRight, roles=[]):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 Public method called when the model data has changed.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 @param topLeft index of the top left element
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 @param bottomRight index of the bottom right element
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 @param roles list of roles changed (defaults to [])
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 @type list of Qt.ItemDataRole (optional)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 super().dataChanged(topLeft, bottomRight, roles)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 self.resizeColumns()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 while topLeft.parent().isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 topLeft = topLeft.parent()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 while bottomRight.parent().isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 bottomRight = bottomRight.parent()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 self.spanFirstColumn(topLeft.row(), bottomRight.row())
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 def resizeColumns(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 Public method to resize the columns to their contents.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 for column in range(self.model().columnCount()):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 self.resizeColumnToContents(column)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 def spanFirstColumn(self, startRow, endRow):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 Public method to make the first column span the row for second level
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 items.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 These items contain the test results.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @param startRow index of the first row to span
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 @param endRow index of the last row (including) to span
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 model = self.model()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 for row in range(startRow, endRow + 1):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 index = model.index(row, 0)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 for i in range(model.rowCount(index)):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 self.setFirstColumnSpanned(i, index, True)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 def __canonicalIndex(self, index):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 Private method to create the canonical index for a given index.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 The canonical index is the index of the first column of the test
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 result entry (i.e. the top-level item). If the index is invalid,
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 None is returned.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 @param index index to determine the canonical index for
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 @return index of the firt column of the associated top-level item index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 @rtype QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 if not index.isValid():
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 return None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 while index.parent().isValid(): # find the top-level node
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 index = index.parent()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 index = index.sibling(index.row(), 0) # go to first column
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 return index
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 @pyqtSlot(QModelIndex)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 def __gotoTestDefinition(self, index):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 Private slot to show the test definition.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 @param index index for the double-clicked item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 cindex = self.__canonicalIndex(index)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 filename, lineno = self.model().data(cindex, Qt.ItemDataRole.UserRole)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 if filename is not None:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 if lineno is None:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 lineno = 1
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 self.goto.emit(filename, lineno)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 @pyqtSlot(QPoint)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 def __showContextMenu(self, pos):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 Private slot to show the context menu.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 @param pos relative position for the context menu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 @type QPoint
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 index = self.indexAt(pos)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 cindex = self.__canonicalIndex(index)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 contextMenu = (
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 self.__createContextMenu(cindex)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 if cindex else
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 self.__createBackgroundContextMenu()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 contextMenu.exec(self.mapToGlobal(pos))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 def __createContextMenu(self, index):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 Private method to create a context menu for the item pointed to by the
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 given index.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 @param index index of the item
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 @type QModelIndex
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 @return created context menu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 @rtype QMenu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 menu = QMenu(self)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 if self.isExpanded(index):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 menu.addAction(self.tr("Collapse"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 lambda: self.collapse(index))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 else:
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 act = menu.addAction(self.tr("Expand"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 lambda: self.expand(index))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 act.setEnabled(self.model().hasChildren(index))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 menu.addSeparator()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 act = menu.addAction(self.tr("Show Source"),
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 lambda: self.__gotoTestDefinition(index))
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 act.setEnabled(
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 self.model().data(index, Qt.ItemDataRole.UserRole) is not None
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 )
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 menu.addSeparator()
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 menu.addAction(self.tr("Collapse All"), self.collapseAll)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 menu.addAction(self.tr("Expand All"), self.expandAll)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 return menu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 def __createBackgroundContextMenu(self):
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 Private method to create a context menu for the background.
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 @return created context menu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 @rtype QMenu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 """
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 menu = QMenu(self)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 menu.addAction(self.tr("Collapse All"), self.collapseAll)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 menu.addAction(self.tr("Expand All"), self.expandAll)
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 return menu
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 #
bc0c1b6d6adb Corrected the VCS tracing state of the recently merged files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 # eflag: noqa = M821, M822

eric ide

mercurial