fix(test): eval-list CLI spawns from neutral cwd so slug detection can't dodge the fixture store

getProjectEvalDir() probes cwd-relative .claude/skills/gstack/bin/gstack-slug;
with cwd=ROOT on a dev machine the self-symlink makes it succeed, routing reads
to an empty project-scoped dir instead of the seeded legacy ~/.gstack-dev/evals.
Neutral cwd + absolute script path fails both probes deterministically — same
behavior as CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan 2026-08-07 13:29:33 -07:00
parent a3259400a3
commit 8b850986b2
No known key found for this signature in database
GPG Key ID: C1F69E85C74EFE1D
1 changed files with 8 additions and 2 deletions

View File

@ -51,8 +51,14 @@ function writeEvalRun(evalDir: string, filename: string, timestamp: string, turn
}
function runEvalList(...args: string[]): { stdout: string; stderr: string; status: number } {
const result = spawnSync('bun', ['run', 'scripts/eval-list.ts', ...args], {
cwd: ROOT,
// cwd is the temp HOME, NOT the repo root: getProjectEvalDir() probes the
// cwd-relative .claude/skills/gstack/bin/gstack-slug, and on dev machines
// with the self-symlink that probe succeeds, routing reads to an (empty)
// project-scoped dir instead of the legacy ~/.gstack-dev/evals this test
// seeds. A neutral cwd makes both slug probes fail deterministically, so
// the CLI always uses the seeded legacy dir — same behavior as CI.
const result = spawnSync('bun', ['run', path.join(ROOT, 'scripts', 'eval-list.ts'), ...args], {
cwd: tmpHome,
env: {
...process.env,
HOME: tmpHome,