UI/UserInterface.py

changeset 1499
b4d0457afb15
parent 1490
ed6f2208297d
child 1509
c0b5e693b0eb
diff -r 94f27ede4186 -r b4d0457afb15 UI/UserInterface.py
--- a/UI/UserInterface.py	Sat Dec 17 16:03:53 2011 +0100
+++ b/UI/UserInterface.py	Sat Dec 17 19:13:19 2011 +0100
@@ -1764,6 +1764,20 @@
         self.utRestartAct.setEnabled(False)
         self.actions.append(self.utRestartAct)
         
+        self.utRerunFailedAct = E5Action(self.trUtf8('Unittest Rerun Failed'),
+            UI.PixmapCache.getIcon("unittestRerunFailed.png"),
+            self.trUtf8('Rerun Failed Tests...'),
+            0, 0, self.utActGrp, 'unittest_rerun_failed')
+        self.utRerunFailedAct.setStatusTip(self.trUtf8(
+            'Rerun failed tests of the last run'))
+        self.utRerunFailedAct.setWhatsThis(self.trUtf8(
+            """<b>Rerun Failed Tests</b>"""
+            """<p>Rerun all tests that failed during the last unittest run.</p>"""
+        ))
+        self.utRerunFailedAct.triggered[()].connect(self.__unittestRerunFailed)
+        self.utRerunFailedAct.setEnabled(False)
+        self.actions.append(self.utRerunFailedAct)
+        
         self.utScriptAct = E5Action(self.trUtf8('Unittest Script'),
             UI.PixmapCache.getIcon("unittestScript.png"),
             self.trUtf8('Unittest &Script...'),
@@ -2268,6 +2282,8 @@
         self.__menus["unittest"].addAction(self.utDialogAct)
         self.__menus["unittest"].addSeparator()
         self.__menus["unittest"].addAction(self.utRestartAct)
+        self.__menus["unittest"].addAction(self.utRerunFailedAct)
+        self.__menus["unittest"].addSeparator()
         self.__menus["unittest"].addAction(self.utScriptAct)
         self.__menus["unittest"].addAction(self.utProjectAct)
         
@@ -2431,6 +2447,8 @@
         unittesttb.addAction(self.utDialogAct)
         unittesttb.addSeparator()
         unittesttb.addAction(self.utRestartAct)
+        unittesttb.addAction(self.utRerunFailedAct)
+        unittesttb.addSeparator()
         unittesttb.addAction(self.utScriptAct)
         unittesttb.addAction(self.utProjectAct)
         self.toolbarManager.addToolBar(unittesttb, unittesttb.windowTitle())
@@ -3993,6 +4011,14 @@
             self.unittestDialog = UnittestDialog(
                 None, self.debuggerUI.debugServer, self, fromEric=True)
             self.unittestDialog.unittestFile.connect(self.viewmanager.setFileLine)
+            self.unittestDialog.unittestStopped.connect(self.__unittestStopped)
+    
+    def __unittestStopped(self):
+        """
+        Private slot to handle the end of a unit test run.
+        """
+        self.utRerunFailedAct.setEnabled(self.unittestDialog.hasFailedTests())
+        self.utRestartAct.setEnabled(True)
     
     def __unittest(self):
         """
@@ -4021,7 +4047,8 @@
         self.unittestDialog.insertProg(prog)
         self.unittestDialog.show()
         self.unittestDialog.raise_()
-        self.utRestartAct.setEnabled(True)
+        self.utRestartAct.setEnabled(False)
+        self.utRerunFailedAct.setEnabled(False)
         
     def __unittestProject(self):
         """
@@ -4045,17 +4072,28 @@
         self.unittestDialog.insertProg(prog)
         self.unittestDialog.show()
         self.unittestDialog.raise_()
-        self.utRestartAct.setEnabled(True)
+        self.utRestartAct.setEnabled(False)
+        self.utRerunFailedAct.setEnabled(False)
         
     def __unittestRestart(self):
         """
-        Private slot to display the unittest dialog and rerun the last test.
+        Private slot to display the unittest dialog and rerun the last unit test.
         """
         self.__createUnitTestDialog()
         self.unittestDialog.show()
         self.unittestDialog.raise_()
         self.unittestDialog.on_startButton_clicked()
         
+    def __unittestRerunFailed(self):
+        """
+        Private slot to display the unittest dialog and rerun all failed tests
+        of the last run.
+        """
+        self.__createUnitTestDialog()
+        self.unittestDialog.show()
+        self.unittestDialog.raise_()
+        self.unittestDialog.on_startButton_clicked(failedOnly=True)
+        
     def __designer(self, fn=None, version=0):
         """
         Private slot to start the Qt-Designer executable.
@@ -5136,6 +5174,7 @@
         self.utProjectAct.setEnabled(False)
         if not self.utEditorOpen:
             self.utRestartAct.setEnabled(False)
+            self.utRerunFailedAct.setEnabled(False)
         self.utProjectOpen = False
         
     def __programChange(self, fn):
@@ -5161,6 +5200,7 @@
         self.utEditorOpen = False
         if not self.utProjectOpen:
             self.utRestartAct.setEnabled(False)
+            self.utRerunFailedAct.setEnabled(False)
         self.__setWindowCaption(editor="")
         
     def __editorOpened(self, fn):

eric ide

mercurial