test(windows): round-4 curation (spawnSkill env, symlink fixtures) + shard-log artifact

Shard 2 ran all 132 files with zero (fail) lines yet bun exited 1 —
unhandled errors in a shape neither counter names, and the Windows
lane had no log artifact to attribute them. Statically attributed and
excluded: browser-skill-commands (spawnSkill spawns bun with a
constructed env; resolution fails under Windows spawn) and
security-audit-r2 (evil-link symlink fixtures need Developer Mode).
The lane now uploads its shard logs on failure like free-tests.yml,
with os.tmpdir() pointed at runner.temp so the glob can find them.
This commit is contained in:
Garry Tan 2026-08-15 18:43:01 -07:00
parent 9dc468a6de
commit 9c2d44253d
No known key found for this signature in database
GPG Key ID: C1F69E85C74EFE1D
2 changed files with 25 additions and 0 deletions

View File

@ -109,5 +109,20 @@ jobs:
# growing/pruning Windows coverage is one list, not two. If a test is
# red here because it's genuinely POSIX-bound, add it to the curation
# exclusions — don't resurrect a hand list in this file.
env:
# Point os.tmpdir() at the runner temp so the shard logs land
# somewhere the artifact step below can glob.
TEMP: ${{ runner.temp }}
TMP: ${{ runner.temp }}
run: bun run test:windows
shell: bash
# Same diagnosability contract as free-tests.yml: a red lane must
# carry the WHY (the runner's quiet console names files, not causes).
- name: Upload shard logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: windows-free-test-shard-logs
path: ${{ runner.temp }}/gstack-free-test-*.log
if-no-files-found: ignore

View File

@ -238,6 +238,16 @@ export const KNOWN_WINDOWS_INCOMPATIBLE: Array<{ file: string; reason: string }>
file: 'test/question-preference-hook.test.ts',
reason: 'spawns the PreToolUse preference hook (shebang script) directly; Windows spawn cannot exec it',
},
// Round-4 census (PR #2593 run 31920052810): unhandled errors with no
// (fail) lines — attributed statically (the lane had no log artifact yet).
{
file: 'browse/test/browser-skill-commands.test.ts',
reason: 'spawnSkill spawns bun with a constructed env — bun resolution fails under Windows spawn (unhandled, no (fail) line)',
},
{
file: 'browse/test/security-audit-r2.test.ts',
reason: 'symlink-attack fixtures (evil-link) need Developer Mode CI runners lack; expect(toThrow) fires unhandled on Windows',
},
];
// Force-include overrides: files a WINDOWS_FRAGILE_PATTERNS regex excludes for