--- 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: