PyUnit/UnittestDialog.py

changeset 4582
3a1d1d4c6f4f
parent 4563
881340f4bd0c
child 4589
b648ccbdbef9
equal deleted inserted replaced
4581:76999ca7bbf1 4582:3a1d1d4c6f4f
19 from PyQt5.QtGui import QColor 19 from PyQt5.QtGui import QColor
20 from PyQt5.QtWidgets import QWidget, QDialog, QApplication, QDialogButtonBox, \ 20 from PyQt5.QtWidgets import QWidget, QDialog, QApplication, QDialogButtonBox, \
21 QListWidgetItem 21 QListWidgetItem
22 22
23 from E5Gui.E5Application import e5App 23 from E5Gui.E5Application import e5App
24 from E5Gui.E5Completers import E5FileCompleter 24 from E5Gui import E5MessageBox
25 from E5Gui import E5MessageBox, E5FileDialog
26 from E5Gui.E5MainWindow import E5MainWindow 25 from E5Gui.E5MainWindow import E5MainWindow
26 from E5Gui.E5PathPicker import E5PathPickerModes
27 27
28 from .Ui_UnittestDialog import Ui_UnittestDialog 28 from .Ui_UnittestDialog import Ui_UnittestDialog
29 29
30 import UI.PixmapCache 30 import UI.PixmapCache
31 31
61 super(UnittestDialog, self).__init__(parent) 61 super(UnittestDialog, self).__init__(parent)
62 if name: 62 if name:
63 self.setObjectName(name) 63 self.setObjectName(name)
64 self.setupUi(self) 64 self.setupUi(self)
65 65
66 self.fileDialogButton.setIcon(UI.PixmapCache.getIcon("open.png")) 66 self.testsuitePicker.setMode(E5PathPickerModes.OpenFileMode)
67 67
68 self.startButton = self.buttonBox.addButton( 68 self.startButton = self.buttonBox.addButton(
69 self.tr("Start"), QDialogButtonBox.ActionRole) 69 self.tr("Start"), QDialogButtonBox.ActionRole)
70 self.startButton.setToolTip(self.tr( 70 self.startButton.setToolTip(self.tr(
71 "Start the selected testsuite")) 71 "Start the selected testsuite"))
104 self.localCheckBox.hide() 104 self.localCheckBox.hide()
105 self.__setProgressColor("green") 105 self.__setProgressColor("green")
106 self.progressLed.setDarkFactor(150) 106 self.progressLed.setDarkFactor(150)
107 self.progressLed.off() 107 self.progressLed.off()
108 108
109 self.testSuiteCompleter = E5FileCompleter(self.testsuiteComboBox)
110
111 self.fileHistory = [] 109 self.fileHistory = []
112 self.testNameHistory = [] 110 self.testNameHistory = []
113 self.running = False 111 self.running = False
114 self.savedModulelist = None 112 self.savedModulelist = None
115 self.savedSysPath = sys.path 113 self.savedSysPath = sys.path
153 """ 151 """
154 self.progressLed.setColor(QColor(color)) 152 self.progressLed.setColor(QColor(color))
155 153
156 def insertProg(self, prog): 154 def insertProg(self, prog):
157 """ 155 """
158 Public slot to insert the filename prog into the testsuiteComboBox 156 Public slot to insert the filename prog into the testsuitePicker
159 object. 157 object.
160 158
161 @param prog filename to be inserted (string) 159 @param prog filename to be inserted (string)
162 """ 160 """
163 # prepend the selected file to the testsuite combobox 161 # prepend the selected file to the testsuite picker
164 if prog is None: 162 if prog is None:
165 prog = "" 163 prog = ""
166 if prog in self.fileHistory: 164 if prog in self.fileHistory:
167 self.fileHistory.remove(prog) 165 self.fileHistory.remove(prog)
168 self.fileHistory.insert(0, prog) 166 self.fileHistory.insert(0, prog)
169 self.testsuiteComboBox.clear() 167 self.testsuitePicker.clear()
170 self.testsuiteComboBox.addItems(self.fileHistory) 168 self.testsuitePicker.addItems(self.fileHistory)
171 169
172 def insertTestName(self, testName): 170 def insertTestName(self, testName):
173 """ 171 """
174 Public slot to insert a test name into the testComboBox object. 172 Public slot to insert a test name into the testComboBox object.
175 173
183 self.testNameHistory.insert(0, testName) 181 self.testNameHistory.insert(0, testName)
184 self.testComboBox.clear() 182 self.testComboBox.clear()
185 self.testComboBox.addItems(self.testNameHistory) 183 self.testComboBox.addItems(self.testNameHistory)
186 184
187 @pyqtSlot() 185 @pyqtSlot()
188 def on_fileDialogButton_clicked(self): 186 def on_testsuitePicker_aboutToShowPathPickerDialog(self):
189 """ 187 """
190 Private slot to open a file dialog. 188 Private slot called before the test suite selection dialog is shown.
191 """ 189 """
192 if self.dbs: 190 if self.dbs:
193 py2Extensions = \ 191 py2Extensions = \
194 ' '.join(["*{0}".format(ext) 192 ' '.join(["*{0}".format(ext)
195 for ext in self.dbs.getExtensions('Python2')]) 193 for ext in self.dbs.getExtensions('Python2')])
199 filter = self.tr( 197 filter = self.tr(
200 "Python3 Files ({1});;Python2 Files ({0});;All Files (*)")\ 198 "Python3 Files ({1});;Python2 Files ({0});;All Files (*)")\
201 .format(py2Extensions, py3Extensions) 199 .format(py2Extensions, py3Extensions)
202 else: 200 else:
203 filter = self.tr("Python Files (*.py);;All Files (*)") 201 filter = self.tr("Python Files (*.py);;All Files (*)")
204 prog = E5FileDialog.getOpenFileName( 202 self.testsuitePicker.setFilters(filter)
205 self,
206 "",
207 self.testsuiteComboBox.currentText(),
208 filter)
209
210 if not prog:
211 return
212
213 self.insertProg(Utilities.toNativeSeparators(prog))
214 203
215 @pyqtSlot(str) 204 @pyqtSlot(str)
216 def on_testsuiteComboBox_editTextChanged(self, txt): 205 def on_testsuitePicker_pathSelected(self, suite):
206 """
207 Private slot called after a test suite has been selected.
208
209 @param suite file name of the test suite
210 @type str
211 """
212 self.insertProg(suite)
213
214 @pyqtSlot(str)
215 def on_testsuitePicker_editTextChanged(self, txt):
217 """ 216 """
218 Private slot to handle changes of the test file name. 217 Private slot to handle changes of the test file name.
219 218
220 @param txt name of the test file (string) 219 @param txt name of the test file (string)
221 """ 220 """
255 @keyparam failedOnly flag indicating to run only failed tests (boolean) 254 @keyparam failedOnly flag indicating to run only failed tests (boolean)
256 """ 255 """
257 if self.running: 256 if self.running:
258 return 257 return
259 258
260 prog = self.testsuiteComboBox.currentText() 259 prog = self.testsuitePicker.currentText()
261 if not prog: 260 if not prog:
262 E5MessageBox.critical( 261 E5MessageBox.critical(
263 self, 262 self,
264 self.tr("Unittest"), 263 self.tr("Unittest"),
265 self.tr("You must enter a test suite file.")) 264 self.tr("You must enter a test suite file."))
619 # get the error info 618 # get the error info
620 test, tracebackText = lbitem.data(Qt.UserRole) 619 test, tracebackText = lbitem.data(Qt.UserRole)
621 620
622 # now build the dialog 621 # now build the dialog
623 from .Ui_UnittestStacktraceDialog import Ui_UnittestStacktraceDialog 622 from .Ui_UnittestStacktraceDialog import Ui_UnittestStacktraceDialog
624 self.dlg = QDialog() 623 self.dlg = QDialog(self)
625 ui = Ui_UnittestStacktraceDialog() 624 ui = Ui_UnittestStacktraceDialog()
626 ui.setupUi(self.dlg) 625 ui.setupUi(self.dlg)
627 self.dlg.traceback = ui.traceback 626 self.dlg.traceback = ui.traceback
628 627
629 ui.showButton = ui.buttonBox.addButton( 628 ui.showButton = ui.buttonBox.addButton(

eric ide

mercurial