PyUnit/UnittestDialog.py

changeset 6897
701256697721
parent 6896
3716c4af48bb
child 6899
8c4cf9c405c7
diff -r 3716c4af48bb -r 701256697721 PyUnit/UnittestDialog.py
--- a/PyUnit/UnittestDialog.py	Sun Mar 24 16:11:19 2019 +0100
+++ b/PyUnit/UnittestDialog.py	Sun Mar 24 16:37:44 2019 +0100
@@ -137,6 +137,7 @@
         self.running = False
         self.savedModulelist = None
         self.savedSysPath = sys.path
+        self.savedCwd = os.getcwd()
         if prog:
             self.insertProg(prog)
         
@@ -317,8 +318,8 @@
         @param checked state of the checkbox
         @type bool
         """
-        self.startFailedButton.setEnabled(
-            bool(self.__failedTests) and not checked)
+        # TODO: enable this code once the discover button is available
+#        self.discoverButton.setEnabled(checked)
     
     def on_buttonBox_clicked(self, button):
         """
@@ -340,7 +341,6 @@
         
         @keyparam failedOnly flag indicating to run only failed tests (boolean)
         """
-        # TODO: run only failed test ignoring test parameters when failedOnly is set
         if self.running:
             return
         
@@ -438,8 +438,11 @@
                         # assume Python 3
                         clientType = "Python3"
                 sysPath = []
-            if not discover and failedOnly and self.__failedTests:
+            if failedOnly and self.__failedTests:
                 failed = self.__failedTests[:]
+                if discover:
+                    workdir = discoveryStart
+                    discover = False
             else:
                 failed = []
             self.__failedTests = []
@@ -452,6 +455,14 @@
                 discover=discover, discoveryStart=discoveryStart)
         else:
             # we are running as an application
+            if discover and not discoveryStart:
+                E5MessageBox.critical(
+                    self,
+                    self.tr("Unittest"),
+                    self.tr("You must enter a start directory for"
+                            " auto-discovery."))
+                return
+            
             if testFileName:
                 sys.path = [os.path.dirname(os.path.abspath(testFileName))] + \
                     self.savedSysPath
@@ -465,17 +476,18 @@
                         del(sys.modules[modname])
             self.savedModulelist = sys.modules.copy()
             
+            os.chdir(self.savedCwd)
+            
             # now try to generate the testsuite
             try:
+                if failedOnly and self.__failedTests:
+                    failed = self.__failedTests[:]
+                    if discover:
+                        os.chdir(discoveryStart)
+                        discover = False
+                else:
+                    failed = []
                 if discover:
-                    if not discoveryStart:
-                        E5MessageBox.critical(
-                            self,
-                            self.tr("Unittest"),
-                            self.tr("You must enter a start directory for"
-                                    " auto-discovery."))
-                        return
-                    
                     test = unittest.defaultTestLoader.discover(discoveryStart)
 #                    testsList = self.__assembleTestCasesList(test)
                 else:
@@ -659,8 +671,7 @@
         self.timeTaken = float(self.stopTime - self.startTime)
         self.running = False
         
-        failedAvailable = bool(self.__failedTests) and \
-            not self.discoverCheckBox.isChecked()
+        failedAvailable = bool(self.__failedTests)
         self.startButton.setEnabled(True)
         self.startFailedButton.setEnabled(failedAvailable)
         self.stopButton.setEnabled(False)

eric ide

mercurial