store: tests for mutation survivors; drop pre-checks the rehearsal covers
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
From the first store mutation run (324 caught of 396 viable): - receive_payment and pay_bill repeated the engine's refusals by hand after rehearsing the engine itself, so those checks could never fire (their mutants survived). Removed: the rehearsal is the check. - New hand-computed tests: a disposal's final catch-up after some depreciation was posted (200 of 300, gain 100); a disposal on the purchase date (allowed) or the day before (refused); a retained earnings close with a sweep replays it; a float inside an array is refused; the viewer's journal and head hash. - The concurrency test's reader stops when the writer thread ends, not only when it says it's done, so a mutant that kills the writer fails the test at once instead of spinning to the five-minute timeout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GWVo7x3UHw5kwCUaWxiejX
This commit is contained in:
1 parent
db00b74e82
commit
0cf8fb842f
3 files changed
+160
-48
No files matched your search
@@ -79,7 +79,8 @@ fn a_viewer_reading_while_the_books_are_written_sees_only_whole_books() {
|
||||
start.wait();
|
||||
let (mut last_seq, mut last_posted, mut refreshes) = (0u64, 0usize, 0u64);
|
||||
loop {
|
||||
let finished = done.load(Ordering::SeqCst);
|
||||
// Done, or the writer died (its panic surfaces at the join below).
|
||||
let finished = done.load(Ordering::SeqCst) || writer.is_finished();
|
||||
snapshot.refresh().unwrap();
|
||||
refreshes += 1;
|
||||
let l = snapshot.ledger();
|
||||
|
||||
Reference in new issue
Block a user