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 """ |
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( |