Parse testlog.txt and write per-test failure logs. Args: build_dir: Meson build directory (contains meson-logs/testlog.txt) log_dir: Directory to write failure logs to
(build_dir: Path, log_dir: Path)
| 331 | |
| 332 | |
| 333 | def _write_testlog_failures(build_dir: Path, log_dir: Path) -> None: |
| 334 | """Parse testlog.txt and write per-test failure logs. |
| 335 | |
| 336 | Args: |
| 337 | build_dir: Meson build directory (contains meson-logs/testlog.txt) |
| 338 | log_dir: Directory to write failure logs to |
| 339 | """ |
| 340 | from ci.meson.testlog_parser import parse_testlog |
| 341 | |
| 342 | testlog = build_dir / "meson-logs" / "testlog.txt" |
| 343 | entries = parse_testlog(testlog) |
| 344 | for entry in entries: |
| 345 | if "exit status 0" in entry.result: |
| 346 | continue |
| 347 | content = f"# Test: {entry.test_name}\n" |
| 348 | content += f"# Result: {entry.result}\n" |
| 349 | content += f"# Duration: {entry.duration}\n\n" |
| 350 | if entry.stdout: |
| 351 | content += "--- stdout ---\n" + entry.stdout + "\n\n" |
| 352 | if entry.stderr: |
| 353 | content += "--- stderr ---\n" + entry.stderr + "\n" |
| 354 | safe_name = entry.test_name.replace(":", "_").replace("/", "_") |
| 355 | _write_failure_log(log_dir, safe_name, "run", content) |
| 356 | |
| 357 | |
| 358 | def _start_zccache_session(build_dir: Path) -> None: |
no test coverage detected