mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-10 06:58:59 +02:00
Merge origin/main (v1.60.2.0) into garrytan/gstack-fix-wave
Main's #2470 fixes the three free-suite dev-machine drift failures this branch had independently diagnosed and receipted (eval-list dev-symlink cwd escape, benchmark-cli case-brittle regex, observability floor). Union merge: VERSION/package.json stay at this branch's 1.61.0.0 (> main's 1.60.2.0, allocator-consistent); CHANGELOG keeps 1.61.0.0 on top of main's 1.60.2.0; TODOS unions both waves' filings (incl. main's new P1 on force-exit-0 masking suite failures). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -133,7 +133,7 @@ describe('gstack-model-benchmark --dry-run', () => {
|
||||
const notReadyLines = out.split('\n').filter(l => l.includes('NOT READY'));
|
||||
expect(notReadyLines.length).toBeGreaterThanOrEqual(2);
|
||||
for (const line of notReadyLines) {
|
||||
expect(line).toMatch(/(install|Install|login|export|Run|Log in)/);
|
||||
expect(line).toMatch(/(install|login|export|run|log in)/i);
|
||||
}
|
||||
} finally {
|
||||
fs.rmSync(emptyHome, { recursive: true, force: true });
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -92,9 +92,10 @@ describe('session-runner observability', () => {
|
||||
);
|
||||
// Count non-fatal comments — should be present for each new I/O path
|
||||
const nonFatalCount = (src.match(/\/\* non-fatal \*\//g) || []).length;
|
||||
// Original had 2 (promptFile unlink + failure transcript), we added 4 more
|
||||
// (runDir creation, progress.log, heartbeat, NDJSON append)
|
||||
expect(nonFatalCount).toBeGreaterThanOrEqual(6);
|
||||
// Five wrapped I/O sites: runDir creation, progress.log append, heartbeat
|
||||
// write, per-test NDJSON append, failure-transcript write. (Was 6 until
|
||||
// the shell-free spawn removed the promptFile unlink and its marker.)
|
||||
expect(nonFatalCount).toBeGreaterThanOrEqual(5);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user