Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Loading