You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a parametrized run-loop liveness test to MultiProcessesExecutionTest
covering 6 adversarial scenarios (all-succeed, one-fails, one-throws,
one-times-out, fail-fast-triggered, all-fail-no-fail-fast). The test
guards the do-while in runProcesses() with an iteration cap of 200 ticks
via an anonymous fake that overrides hasPendingWork(). When the loop
diverges, the cap throws an \Error that escapes to the OUTER catch on
line 55 (the inner catch on line 51 cannot snare it because the while
condition is evaluated outside the inner try) and gets registered as
'General' in the returned Errors object. The test then asserts the key
is absent.
This converts the 6 timed-out mutants Infection currently reports against
this file (lines 38-41 catch removal, 131-134 hasPendingWork) into clean
kills with a precise diagnostic that points at the regression site.
SIGALRM is not viable here because the inner catch (Throwable) on line 51
swallows AssertionFailedError and the loop just keeps spinning.
Manually verified with two mutations:
- addProcessToQueue removed (T14): all 6 cases hit the cap.
- hasPendingWork failFastTriggered branch flipped to true (T17):
the fail_fast_triggered case hits the cap as expected.
Both reverted after confirming.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments