Skip to content

Commit bedb949

Browse files
committed
build: nicer messages from igor when combining, but kind of crazy
1 parent 7190147 commit bedb949

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

igor.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,19 +226,40 @@ def run_tests_with_coverage(core, *runner_args):
226226
return status
227227

228228

229+
class CombiningMessageFilter:
230+
"""Coverage.combine() is all-or-nothing on messages. Summarize them."""
231+
232+
def __init__(self) -> None:
233+
self.combined = 0
234+
self.skipped = 0
235+
236+
def message(self, msg: str) -> None:
237+
"""All messages come through here, keep the data we want."""
238+
if re.match(r"Combined data file", msg):
239+
self.combined += 1
240+
elif re.match(r"Skipping duplicate data", msg):
241+
self.skipped += 1
242+
else:
243+
print(msg)
244+
245+
def combining_summary(self) -> None:
246+
"""Show the final combination total"""
247+
print(f"Combined {self.combined} files, skipped {self.skipped}")
248+
249+
229250
def do_combine_html():
230251
"""Combine data from a meta-coverage run, and make the HTML report."""
231252
import coverage
232253

233254
os.environ["COVERAGE_HOME"] = os.getcwd()
255+
# Get all messages but filter them ourselves. Better would be to have
256+
# tighter control over message verbosity...
234257
cov = coverage.Coverage(config_file="metacov.ini", messages=True)
235-
cov.load()
258+
message_filter = CombiningMessageFilter()
259+
cov._message = message_filter.message
236260
cov.combine()
261+
message_filter.combining_summary()
237262
cov.save()
238-
# A new Coverage to turn on messages. Better would be to have tighter
239-
# control over message verbosity...
240-
cov = coverage.Coverage(config_file="metacov.ini", messages=True)
241-
cov.load()
242263
show_contexts = bool(
243264
os.getenv("COVERAGE_DYNCTX") or os.getenv("COVERAGE_CONTEXT"),
244265
)

0 commit comments

Comments
 (0)