diff --git a/CLAUDE.md b/CLAUDE.md index e8fd694..f9c899c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,6 +33,17 @@ Releases are managed by the human maintainer. Never: These are human decisions, not automated ones. +## Code coverage + +CI runs [Codecov](https://app.codecov.io/gh/cpan-authors/XML-Parser) on every PR via the `coverage` job in `.github/workflows/testsuite.yml`. It uploads two coverage flags: + +- **perl** — Perl statement/branch/condition/subroutine coverage via `Devel::Cover` +- **xs** — C/XS line and branch coverage via `gcov`/`lcov` + +Codecov posts a coverage diff comment on each PR (example: [PR #248 comment](https://github.com/cpan-authors/XML-Parser/pull/248#issuecomment-4217761944)). Use the [Codecov dashboard](https://app.codecov.io/gh/cpan-authors/XML-Parser) to review current coverage, identify uncovered lines, and track coverage trends across commits. + +As of April 2025, project coverage is **72.71%** (794/1092 lines hit, 224 partial, 74 missed). + ## cpanfile vs Makefile.PL dependency semantics The `cpanfile` is used for CI testing, so dependencies there must use `requires` to ensure they are installed and tested. Even if a dependency like `LWP::UserAgent` is optional at runtime (and listed as `recommends` in `Makefile.PL`), it must remain `requires` in `cpanfile` so CI covers it.