Wed, 20 Dec 2023 10:47:17 +0100
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)