From 6c068d8c13997acc4aa679725a28f9aadc877817 Mon Sep 17 00:00:00 2001 From: David Salvisberg Date: Wed, 21 Aug 2024 10:30:59 +0200 Subject: [PATCH] pytest-cov no longer populates `cov_total` when there is no report We no longer skip when `cov_total` is `None`, but we put an additional guard in when we generate the XML report, so we catch potential errors there instead. --- src/pytest_codecov/__init__.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/pytest_codecov/__init__.py b/src/pytest_codecov/__init__.py index 2dfe037..228d111 100644 --- a/src/pytest_codecov/__init__.py +++ b/src/pytest_codecov/__init__.py @@ -97,7 +97,19 @@ def upload_report(self, terminalreporter, config, cov): token=config.option.codecov_token, ) uploader.write_network_files(git.ls_files()) - uploader.add_coverage_report(cov) + from coverage.misc import CoverageException + try: + uploader.add_coverage_report(cov) + except CoverageException as exc: + terminalreporter.section('Codecov.io payload') + terminalreporter.write_line( + f'ERROR: Failed to generate XML report: {exc}', + red=True, + bold=True, + ) + terminalreporter.line('') + return + if config.option.codecov_dump: terminalreporter.section('Prepared Codecov.io payload') terminalreporter.write_line(uploader.get_payload()) @@ -155,9 +167,6 @@ def pytest_terminal_summary(self, terminalreporter, exitstatus, config): if cov_plugin.cov_controller is None: return - if cov_plugin.cov_total is None: - return - cov = cov_plugin.cov_controller.cov if cov is None: return