Skip to content

Commit ade7272

Browse files
committed
update coverage percent retrieval
if there is a change in the source files, coverage process fails recreate the coverage report if the error occurs
1 parent d5a1f44 commit ade7272

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

docs/scripts/coverage_status.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import anybadge
77
import pytest
88
from coverage import Coverage
9+
from coverage.exceptions import NoSource
910
from interrogate import badge_gen
1011
from interrogate.coverage import InterrogateCoverage
1112

@@ -30,10 +31,14 @@ def on_pre_build(config):
3031
else:
3132
log.info("Using existing coverage data.")
3233

33-
cov = Coverage()
34-
cov.load()
35-
cov_percent = int(cov.report(file=StringIO()))
36-
log.info(f"Test Coverage: {cov_percent}%, generating badge.")
34+
cov_percent = 0
35+
try:
36+
cov_percent = get_coverage_percentage()
37+
except NoSource:
38+
# Source file is either deleted or moved, so we can't generate a badge, rerun the tests
39+
log.info("Change in the source files, running pytest to collect.")
40+
pytest.main(["--cov", "--cov-report=html"])
41+
cov_percent = get_coverage_percentage()
3742

3843
badge = anybadge.Badge(
3944
"coverage",
@@ -52,3 +57,13 @@ def on_pre_build(config):
5257
doc_cov = InterrogateCoverage(paths=["src"]).get_coverage()
5358
log.info(f"Docs Coverage: {doc_cov.perc_covered}%, generating badge.")
5459
badge_gen.create("docs", doc_cov)
60+
61+
62+
def get_coverage_percentage():
63+
"""Return the coverage percentage from the .coverage file."""
64+
cov = Coverage()
65+
cov.load()
66+
cov_percent = cov.report(file=StringIO())
67+
log.info(f"Test Coverage: {cov_percent}%, generating badge.")
68+
69+
return cov_percent

0 commit comments

Comments
 (0)