| 291 | |
| 292 | |
| 293 | def _report_coverage(current_dir: Path) -> bool: |
| 294 | coverage_data_file = current_dir / ".coverage" |
| 295 | cov_config = current_dir / ".coveragerc" |
| 296 | try: |
| 297 | import coverage |
| 298 | |
| 299 | cov = coverage.Coverage( |
| 300 | data_file=str(coverage_data_file), |
| 301 | config_file=str(cov_config) if cov_config.exists() else True, |
| 302 | ) |
| 303 | cov.load() |
| 304 | total_coverage = cov.report(show_missing=True) |
| 305 | logger.info("\nTotal Coverage: %.1f%%", total_coverage) |
| 306 | html_dir = current_dir / "coverage_html" |
| 307 | cov.html_report(directory=str(html_dir)) |
| 308 | logger.info("\nHTML coverage report generated in: %s", html_dir) |
| 309 | xml_file = current_dir / "coverage.xml" |
| 310 | cov.xml_report(outfile=str(xml_file)) |
| 311 | logger.info("XML coverage report generated: %s", xml_file) |
| 312 | except Exception as exc: |
| 313 | logger.error("Coverage report failed: %s", exc) |
| 314 | return False |
| 315 | return True |
| 316 | |
| 317 | |
| 318 | def run_tests() -> bool: |