1ac16094

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Mutation-test Centjes.Report.Balance

Opt Centjes.Report.Balance into mutation testing (remove its
DisableMutations annotation) and cover every mutation:

* lastEntryState: use the transaction's own cumulative balance/price
  graph directly instead of looking up the last posting (they are equal
  for a non-empty transaction, so the lookup only added an equivalent,
  unkillable mutant and a partial 'V.last'); extract the with/without-
  virtual choice into 'selectVirtual' so it can be tested directly.
* Validity (BalanceReport): combine the checks with '<>' instead of
  'mconcat [..]' so there is no list-literal mutant; test rejection of a
  total/balances mismatch.
* Tests: selectVirtual, the total-mismatch validity case, and a
  price-terminated ledger fixture exercising lastEntryState's price branch.
* mutation.yaml: skip ConstEmptyList on String literals (description text).
* Disable the ConstEmptyList mutant on the unreachable balance-sum-overflow
  error path.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 2s 0s
Eval 2s 1m26s 1m26s 1m28s 0s
Build 35s 10m22s 4m00s 4m36s 6s
Suite 0s 11m50s 4m36s 4m36s 6s

Timeline

0s20s40s1m1m20s1m40s2m2m20s2m40s3m3m20s3m40s4m4m20s