eric7/Testing/Interfaces/UnittestRunner.py

branch
unittest
changeset 9070
eab09a1ab8ce
parent 9066
a219ade50f7c
child 9089
b48a6d0f6309
diff -r 938039ea15ca -r eab09a1ab8ce eric7/Testing/Interfaces/UnittestRunner.py
--- a/eric7/Testing/Interfaces/UnittestRunner.py	Tue May 17 14:21:13 2022 +0200
+++ b/eric7/Testing/Interfaces/UnittestRunner.py	Tue May 17 17:23:07 2022 +0200
@@ -286,12 +286,18 @@
     if failfast:
         argv.remove("--failfast")
     
-    coverage = "--cover" in argv
-    if coverage:
+    collectCoverage = "--cover" in argv
+    if collectCoverage:
         argv.remove("--cover")
     coverageErase = "--cover-erase" in argv
     if coverageErase:
         argv.remove("--cover-erase")
+    if "--cover-file" in argv:
+        index = argv.index("--cover-file")
+        covDataFile = argv[index + 1]
+        del argv[index:index + 2]
+    else:
+        covDataFile = ""
     
     if argv and argv[0] == "--failed-only":
         if discover:
@@ -315,6 +321,34 @@
     elif discoveryStart:
         sys.path.insert(1, os.path.abspath(discoveryStart))
     
+    # setup test coverage
+    if collectCoverage:
+        if not covDataFile:
+            if discover:
+                covname = os.path.join(discoveryStart, "test")
+            elif testFileName:
+                covname = os.path.splitext(
+                    os.path.abspath(testFileName))[0]
+            else:
+                covname = "test"
+            covDataFile = "{0}.coverage".format(covname)
+        if not os.path.isabs(covDataFile):
+            covDataFile = os.path.abspath(covDataFile)
+        
+        sys.path.insert(
+            2,
+            os.path.abspath(os.path.join(
+                os.path.dirname(__file__), "..", "..", "DebugClients", "Python"
+            ))
+        )
+        from DebugClients.Python.coverage import Coverage
+        cover = Coverage(data_file=covDataFile)
+        if coverageErase:
+            cover.erase()
+        cover.start()
+    else:
+        cover = None
+    
     try:
         testLoader = unittest.TestLoader()
         if discover and not failed:
@@ -354,33 +388,11 @@
     }
     writer.write(collectedTests)
     
-    # setup test coverage
-    if coverage:
-        if discover:
-            covname = os.path.join(discoveryStart, "unittest")
-        elif testFileName:
-            covname = os.path.splitext(
-                os.path.abspath(testFileName))[0]
-        else:
-            covname = "unittest"
-        covDataFile = "{0}.coverage".format(covname)
-        if not os.path.isabs(covDataFile):
-            covDataFile = os.path.abspath(covDataFile)
-        
-        from DebugClients.Python.coverage import coverage as cov
-        cover = cov(data_file=covDataFile)
-        if coverageErase:
-            cover.erase()
-    else:
-        cover = None
-    
     testResult = EricTestResult(writer, failfast)
     startTestRun = getattr(testResult, 'startTestRun', None)
     if startTestRun is not None:
         startTestRun()
     try:
-        if cover:
-            cover.start()
         test.run(testResult)
     finally:
         if cover:

eric ide

mercurial