src/runner.sh spawns each parallel worker as call_test_functions … 2>/dev/null &, so every diagnostic a test writes to stderr is dropped under --parallel but shown under --no-parallel. A user debugging a failure sees different output depending on the run mode, with nothing indicating output was suppressed.
Dates back to #358, where the redirect was added to keep worker noise out of the progress line.
This is not a small fix: simply removing the redirect interleaves every worker's stderr into the progress output and will break acceptance snapshots. It needs a per-worker capture-and-attribute design — each worker's stderr collected to its own file and rendered with the owning test's failure block, like TEST_OUTPUT already is.
Found during the #862 audit; deliberately not fixed there because it is a feature, not a cleanup.
src/runner.shspawns each parallel worker ascall_test_functions … 2>/dev/null &, so every diagnostic a test writes to stderr is dropped under--parallelbut shown under--no-parallel. A user debugging a failure sees different output depending on the run mode, with nothing indicating output was suppressed.Dates back to #358, where the redirect was added to keep worker noise out of the progress line.
This is not a small fix: simply removing the redirect interleaves every worker's stderr into the progress output and will break acceptance snapshots. It needs a per-worker capture-and-attribute design — each worker's stderr collected to its own file and rendered with the owning test's failure block, like
TEST_OUTPUTalready is.Found during the #862 audit; deliberately not fixed there because it is a feature, not a cleanup.