Problem: `mutation_in_progress` and `buffers_locked` are module-level locals in `mutator/init.lua` and `view.lua`. When a trash test times out mid-mutation, these flags stay true and `reset_editor()` never clears them. Subsequent tests' `save()` calls bail on `mutation_in_progress`, silently skipping mutations so `OilMutationComplete` never fires — causing cascading 10s timeouts. Solution: Add `mutator.reset()` to clear leaked mutation state, and call it from `reset_editor()` when `is_mutating()` is true. A 50ms event loop drain lets in-flight libuv callbacks settle before the reset. Baseline: 4/10 sequential passes. After fix: 49/50 parallel passes with zero timing overhead on the happy path (~2.4s). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| confirmation.lua | ||
| init.lua | ||
| parser.lua | ||
| progress.lua | ||
| trie.lua | ||