← 1.0.0 backlogs ISS-25 Done

The PHP client had no CI, so a skipped test and a passing test read the same

Type
Process gap — a claim that was true once and had nothing keeping it true
Found while
SAPE-24
Triage
Fix in 1.0.0
Status
Done
Version
1.0.0

Description

SAPE-24 claims three clients, each run against a real daemon. For the PHP client that was verified once, by hand, and then left with nothing to hold it: the repository had no CI at all, and its thirteen end-to-end tests are gated on SAPEDB_TEST_HOST. Set it and they run; leave it unset and every one of them skips.

A skipped test and a passing test produce the same summary line. So "the suite is green" and "nobody ever set the variable" were the same observation from outside the one terminal somebody happened to run it in. The claim was not false. It was unguarded, which is a different failure and a slower one.

What was done

A workflow with two jobs: one that runs the unit suite anywhere, and one that builds the server from source, seeds a database, starts a real sapedbd, and runs everything — then fails if anything was skipped, rather than trusting a summary.

It also compares the daemon's pid before and after the suite, not merely whether something answers on the port. A supervisor silently restarting a crashed daemon would still leave something listening; the pid is what tells that apart from the one process that ran the whole job. That check is the point: the suite establishes a collection and declares operations over the wire, and the thing being proved is that no restart was needed.

Two traps paid for on the way

Result

90 tests, 238 assertions, 0 skipped against a real daemon, and the pid unchanged across the run. The 13 end-to-end tests now run on every push instead of on every push where somebody remembered.