eric7/Unittest/Interfaces/UnittestRunner.py

branch
unittest
changeset 9064
339bb8c8007d
parent 9063
f1d7dd7ae471
diff -r f1d7dd7ae471 -r 339bb8c8007d eric7/Unittest/Interfaces/UnittestRunner.py
--- a/eric7/Unittest/Interfaces/UnittestRunner.py	Sat May 14 18:56:52 2022 +0200
+++ b/eric7/Unittest/Interfaces/UnittestRunner.py	Sun May 15 18:08:31 2022 +0200
@@ -293,13 +293,22 @@
     if coverageErase:
         argv.remove("--cover-erase")
     
-    if not discover:
-        testFileName, testName = argv[:2]
-        del argv[:2]
+    if argv and argv[0] == "--failed-only":
+        if discover:
+            testFileName = ""
+            failed = argv[1:]
+        else:
+            testFileName = argv[1]
+            failed = argv[2:]
     else:
-        testFileName = testName = ""
-    
-    testCases = argv[:]
+        failed = []
+        if discover:
+            testFileName = testName = ""
+        else:
+            testFileName, testName = argv[:2]
+            del argv[:2]
+        
+        testCases = argv[:]
     
     if testFileName:
         sys.path.insert(1, os.path.dirname(os.path.abspath(testFileName)))
@@ -308,7 +317,7 @@
     
     try:
         testLoader = unittest.TestLoader()
-        if discover:
+        if discover and not failed:
             if testCases:
                 test = testLoader.loadTestsFromNames(testCases)
             else:
@@ -319,18 +328,15 @@
                     os.path.basename(testFileName))[0])
             else:
                 module = None
-            # TODO: implement 'failed only'
-#            if failedOnly and self.__failedTests:
-#                if module:
-#                    failed = [t.split(".", 1)[1]
-#                              for t in self.__failedTests]
-#                else:
-#                    failed = list(self.__failedTests)
-#                test = testLoader.loadTestsFromNames(
-#                    failed, module)
-#            else:
-            test = testLoader.loadTestsFromName(
-                testName, module)
+            if failed:
+                if module:
+                    failed = [t.split(".", 1)[1]
+                              for t in failed]
+                test = testLoader.loadTestsFromNames(
+                    failed, module)
+            else:
+                test = testLoader.loadTestsFromName(
+                    testName, module)
     except Exception as err:
         print("Exception:", str(err))
         writer.write({

eric ide

mercurial