fix: eliminate resource-collision race in ship-notes-wedged-pr jq() mock
Unrelated defect surfaced by a real gsd-test failure while verifying #3339 (test/3339-fold-state-model-profile diffs zero files this fix touches -- confirmed via `git diff <this-branch> origin/next -- ...` returning empty for this file, ship.md, and gsd-core/bin/lib/*.cjs). Fixed inline per this repo's no-defer policy for defects found while building, rather than deferred. The test's jq() mock shelled out to a full new Node.js process for every mocked `jq -r .field` call inside the extracted track_shipping bash script. The "exhausts the polling bound" test hits up to 24 cold Node spawns in one spawnSync call (6 polling iterations x 4 jq calls), racing a hardcoded 10s timeout -- under CI contention this tipped over on the linux-node22 lane specifically while linux-node24 had headroom, producing spawnSync's signal-killed `status: null` instead of the process's real exit code, asserted against the expected 0. Replaced the Node-subprocess jq() mock with a pure-shell sed -nE field extractor that never forks a process, eliminating the variable-cost operation rather than just widening the timeout. Verified extraction correctness against sample JSON (head/status/checks/review, including empty-string and non-matching-field cases). Locally verified (scoped per session policy): all 9 tests in the file pass; the previously- marginal test dropped from ~617ms to ~198ms. The underlying track_shipping polling logic in ship.md was confirmed correct and untouched -- this was a test-fixture race, not a product bug.
This commit is contained in:
@@ -62,7 +62,11 @@ function runTrackShipping(responses) {
|
||||
' sed -n "${_call}p" "$GH_RESPONSES"',
|
||||
'}',
|
||||
'jq() {',
|
||||
' "$NODE_BIN" -e "let d=\'\';process.stdin.on(\'data\',c=>d+=c);process.stdin.on(\'end\',()=>{const o=JSON.parse(d);process.stdout.write(String(o[process.argv[1].slice(1)] ?? \'\'));});" "$2"',
|
||||
' _field="${2#.}"',
|
||||
' _raw=$(sed -nE \'s/.*"\'"$_field"\'":("[^"]*"|[^,}]*).*/\\1/p\')',
|
||||
' _raw="${_raw%\\"}"',
|
||||
' _raw="${_raw#\\"}"',
|
||||
' printf \'%s\' "$_raw"',
|
||||
'}',
|
||||
].join('\n');
|
||||
|
||||
@@ -77,7 +81,6 @@ function runTrackShipping(responses) {
|
||||
GH_CALLS: ghCallsPath,
|
||||
GH_RESPONSES: responsesPath,
|
||||
GIT_CALLS: gitCallsPath,
|
||||
NODE_BIN: process.execPath,
|
||||
PHASE_NUMBER: '1',
|
||||
PR_NUMBER: '123',
|
||||
padded_phase: '01',
|
||||
|
||||
Reference in New Issue
Block a user