• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

valkyrjaio / valkyrja-php / 30322797340 / 1
100%
26.x: 100%

Build:
DEFAULT BRANCH: 26.x
Ran 28 Jul 2026 02:22AM UTC
Files 1138
Run time 41s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Jul 2026 02:19AM UTC coverage: 100.0%. Remained the same
30322797340.1

push

github

web-flow
[CI] Run branch and path coverage as parallel shards (#933)

# Description

`composer phpunit-path-coverage` runs the entire suite (4963 tests, 554
classes) serially in a
single process under xdebug branch/path instrumentation. That takes
**~32 minutes** locally and
blows Composer's default 300s process timeout, so it is effectively
never run — branch and path
coverage are not part of any gate today, and the branch-coverage gap has
been invisible.

This adds a parallel-shard harness for path/branch coverage. One PHPUnit
process runs per
component testsuite, concurrently; each writes its own serialized
coverage; `phpcov` merges them
and a small reporter prints line/branch/path totals and can assert
thresholds. Wall-clock drops to
roughly the slowest single shard.

**Measured, same machine (PHP 8.5, Xdebug 3.5, 10 cores):**

| | Before (serial) | After (parallel shards) |
|---|---|---|
| Wall-clock | **1942s (~32 min)** | **190s (~3.2 min)** |
| Speedup | — | **10.2x** |
| Floor | whole suite | slowest shard (Http, 171s) |

All 26 shards pass. The suites are disjoint and together cover the whole
`tests/` tree — a run with
no testsuite filter still collects all 4963 tests, exactly as before.

**The existing gate is deliberately untouched.** `phpunit.xml.dist`,
`composer phpunit` and
`composer phpunit-coverage` are unchanged, and the enforced fast
line-coverage gate still reports
100% classes / methods / lines. This PR only *adds* tooling; nothing in
`ci.yml` runs the shards
yet, so CI behavior is unchanged. Wiring it into CI and gating on branch
coverage are deliberate
follow-ups (see below).

### Coverage integrity

Every shard shares the identical `<source>` denominator (all of `src`),
and the merged report is
the union of all shards, so **no shard can drop classes from the
denominator**. The reporter
asserts an exact `100` threshold as `executed === executable`, so a
rounded 99.99% cannot pass a
"100%" gate.

### Two things worth knowing

**1. Merged ... (continued)

12591 of 12591 relevant lines covered (100.0%)

23.5 hits per line

Source Files on job 30322797340.1
  • Tree
  • List 1138
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 30322797340
  • 564a1b1a on github
  • Prev Job for on 26.x (#30322719953.1)
  • Next Job for on 26.x (#30323235461.1)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc