Testing eric7

Wed, 20 Dec 2023 10:47:17 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 20 Dec 2023 10:47:17 +0100
branch
eric7
changeset 10425
0badf8f80d7c
parent 10424
1a64ad8acf9d
child 10426
1150e67efb5a

Testing
- Added code to only enable the coverage check box for 'unittest', the coverage package is available in the selected virtual environment.

src/eric7/Testing/Interfaces/UnittestExecutor.py file | annotate | diff | comparison | revisions
src/eric7/Testing/Interfaces/UnittestRunner.py file | annotate | diff | comparison | revisions
--- a/src/eric7/Testing/Interfaces/UnittestExecutor.py	Wed Dec 20 10:02:19 2023 +0100
+++ b/src/eric7/Testing/Interfaces/UnittestExecutor.py	Wed Dec 20 10:47:17 2023 +0100
@@ -82,15 +82,17 @@
 
     def hasCoverage(self, interpreter):  # noqa: U100
         """
-        Public method to get the test framework version and version information
-        of its installed plugins.
+        Public method to check, if the collection of coverage data is available.
 
         @param interpreter interpreter to be used for the test
         @type str
         @return flag indicating the availability of coverage functionality
         @rtype bool
         """
-        return True
+        proc = QProcess()
+        proc.start(interpreter, [UnittestExecutor.runner, "has_coverage"])
+        if proc.waitForFinished(3000):
+            return proc.exitCode() == 0
 
     def supportsPatterns(self, interpreter):  # noqa: U100
         """
--- a/src/eric7/Testing/Interfaces/UnittestRunner.py	Wed Dec 20 10:02:19 2023 +0100
+++ b/src/eric7/Testing/Interfaces/UnittestRunner.py	Wed Dec 20 10:47:17 2023 +0100
@@ -8,6 +8,7 @@
 """
 
 import importlib
+import importlib.util
 import json
 import os
 import sys
@@ -369,12 +370,15 @@
                 )
             ),
         )
-        from coverage import Coverage  # __IGNORE_WARNING_I10__
+        try:
+            from coverage import Coverage  # __IGNORE_WARNING_I10__
 
-        cover = Coverage(data_file=covDataFile)
-        if coverageErase:
-            cover.erase()
-        cover.start()
+            cover = Coverage(data_file=covDataFile)
+            if coverageErase:
+                cover.erase()
+            cover.start()
+        except ImportError:
+            cover = None
     else:
         cover = None
 
@@ -466,6 +470,14 @@
             print(json.dumps(versions))
             sys.exit(0)
 
+        elif command == "has_coverage":
+            if importlib.util.find_spec("coverage") is None:
+                # not available
+                sys.exit(1)
+            else:
+                # available
+                sys.exit(0)
+
         elif command == "runtest":
             runtest(sys.argv[2:])
             sys.exit(0)

eric ide

mercurial