fix(fixtures): repair the cancel-fixture abort error placement; exempt pwsh-local coverage on pwsh-less hosts

The hand-edit in 348ab41151 put the seq-17 abort error inside the tool-result
message and dropped a closing brace, breaking every JSONL consumer; tool-calls.ts
appends 'error' as a data-level sibling of 'message' (the seq-19 shape), so the
fixture now matches the emitter.

Coverage: pwsh-local's executor suites self-skip without a real pwsh, which left
per-file 100% unreachable on pwsh-less contributor hosts (mirror of the existing
windowsCoverageExclusions contract). A PATH-only probe exempts only
pwsh-local/src/index.ts; CI runners ship pwsh and still enforce the full bar.
docs/testing.md (+zh, pairing re-recorded) names the prerequisite; the testing.md
budget rises 1120->1150 because the coverage-gate contract genuinely grew.
This commit is contained in:
Huanqi Cao
2026-08-02 21:28:22 +08:00
parent 6ae0f78c2a
commit 7b7525c091
6 changed files with 20 additions and 6 deletions

View File

@@ -1,3 +1,4 @@
import { spawnSync } from 'node:child_process'
import tsconfigPaths from 'vite-tsconfig-paths'
import { defineConfig } from 'vitest/config'
import { vitestExecArgv } from './vitest.shared.ts'
@@ -39,6 +40,18 @@ const windowsCoverageExclusions = process.platform === 'win32'
]
: []
// Mirrors windowsCoverageExclusions: pwsh-local's run/start/lifecycle suites
// self-skip without a real pwsh (executor.spec.ts hasPwsh), leaving this file
// far below per-file 100% on pwsh-less hosts; the exemption keeps those hosts
// green while CI runners ship pwsh and still enforce the full bar. The probe
// is deliberately PATH-only (narrower than the suites' resolvePwshPath): a
// win32 host where only install-location pwsh or 5.1 resolves forfeits the
// exemption while the suites still run, so the gate can only get stricter,
// never falsely green.
const pwshCoverageExclusions = spawnSync('pwsh', ['-NoLogo', '-NoProfile', '-NonInteractive', '-Command', '$true'], { encoding: 'utf8' }).status === 0
? []
: ['packages/bash/pwsh-local/src/index.ts']
const testIncludes = [
'packages/*/*/tests/**/*.spec.{ts,tsx}',
'apps/*/tests/**/*.spec.ts',
@@ -203,6 +216,7 @@ export default defineConfig({
'packages/ui/tui/src/index.ts',
...windowsUnsupportedPackages.map(path => `${path}/src/**/*.ts`),
...windowsCoverageExclusions,
...pwshCoverageExclusions,
],
// 100% or it doesn't merge (docs/testing.md: excessive tests are welcome).
// Per-file so a well-covered big file can't subsidize a bare one.