ccppccpp home
Browse the documentation

Plugins · CCPP Tester

Reports and contests

What ccpp-tester reports to the main agent, and how a disputed test is decided by a fresh tester, or by you.

The report

The tester's final message goes to the main agent. Its first two lines are machine-readable:

CCPP-TESTER kind=write result=red tests=src/quote.test.ts
MUTATION tool=@stryker-mutator/core@x.y.z score=87 killed=52 timeout=0 survived=8 nocoverage=0 errors=0 ignored=0

kind is write, contest or handover; result is red, green or not-run. Then:

  1. Tests: each file and the command that ran it.
  2. Expectations: each asserted value and its source.
  3. Findings: each red test, its input, expected against returned. Fix the code, not the test.
  4. Refused from the task message: what, and why.
  5. Mutation: the command, scope and versions, the integrity checks, every open survivor with the reason, the tests added because of mutants, the probes, and what could not run.
  6. Contest, if any.

A count alone ("12 pass") is never a summary, and a red test the tester wrote stays red in its report.

When the main agent disagrees

The main agent may believe a test is wrong. It cannot change the test (CPO refuses it), and it must not resume the tester that wrote it. It launches a fresh cpo:ccpp-tester with its argument, and that tester decides:

  1. It finds the author's transcript and report, and recovers what the test was for.
  2. It counts the earlier contests of this test. Two or more: it does not decide. It changes nothing and reports kind=handover, with both positions and their sources: you decide.
  3. Otherwise it changes the test only if a source other than the code backs the new expectation, and the test stays as strict: same inputs or more, same assertion strength. An input that exposes a defect is never dropped.

"The test is fragile", "the code is right", "I tested it wrong", arriving seconds after a red run, is the signature of cheating, not an argument. The tester keeps the test and says which source would change its mind.

Deleting a test

Only the tester deletes test-side files. When another agent removes one, CPO restores it and refuses the call; an obsolete test goes to a fresh ccpp-tester like any other contest.

Edit this page on GitHub