mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-12 03:30:28 +01:00
* test(free): split files over the 60 s seed ceiling and the Windows doctor file Eight free test files the fresh recordings put over the seed ratchet's 60 s ceiling, and test/gstack-doctor.test.ts (343 s on Windows), are split by describe block or test with shared helpers moved to test/helpers/. Test bodies are unchanged. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(todos): note the GSTA-151 seed-ceiling splits Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(free): reseed both duration seeds at this head Recorded by free-durations-record.yml (open_pr=false) run 40818261447 atec6faf1: 1,416 Linux files on ubicloud-standard-8 and the 795 curated Windows files on windows-latest. test/setup-codex-scope.test.ts fell to 49 s and leaves the seed allowlist. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: changelog entry for the GSTA-151 seed-ceiling splits (unreleased) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(free): split test/ubicloud-runner.test.ts over the 60 s seed ceiling; keep setup-codex-scope allowlisted The reseed at the main merge (free-durations-record run 41226501374,221320e) put test/ubicloud-runner.test.ts, which main added after this branch's first reseed, at 127 s and test/setup-codex-scope.test.ts back at 66 s. The fake-API cases move into four parts by describe topic with their shared fake VM in test/helpers/ubi-runner-fake-vm.ts (46 tests before and after). The allowlist keeps main's setup-codex-scope entry. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(free): reseed both duration seeds at the main merge; changelog fragment Recorded by free-durations-record.yml (open_pr=false) run 41229924108 at4f5bd2d: 1,470 Linux files on ubicloud-standard-8 and 822 curated Windows files. The Windows recorder was red on browse/test/cookie-import-native-job.test.ts (known Edge leak) and test/hook-scripts.test.ts, plus test/free-seed-ratchet.test.ts on both OSes against the pre-reseed seed; their durations are kept. The CHANGELOG entry moves to changelog.d/ now that main runs on fragments. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: correct the seed-ceiling TODO and the ubicloud-runner test paths after the split Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
42 lines
2.3 KiB
TypeScript
42 lines
2.3 KiB
TypeScript
/**
|
|
* W7 Claude overlay opt-in (`./setup --claude-model <id>`): a project install keeps its own per-install render. Split from test/claude-overlay-setup-installs.test.ts so the free-suite packer can balance it (60 s seed ceiling). Shared fixture and overlay helpers: test/helpers/claude-overlay-fixture.ts.
|
|
*/
|
|
import { afterAll, afterEach, describe, expect, test } from 'bun:test';
|
|
import { join } from 'node:path';
|
|
import { MARKER, failableBun, setup, record, served } from './helpers/claude-overlay-fixture';
|
|
import { cleanupFixtures, cleanupSeed, makeFixture, makeSource, put, registryRows } from './helpers/install-fixture';
|
|
|
|
afterEach(cleanupFixtures);
|
|
afterAll(cleanupSeed);
|
|
|
|
describe.skipIf(process.platform === 'win32')('nondefault installs, refresh and status', () => {
|
|
test('a project install keeps its own per-install render: pinned, back to claude, failure keeps the previous render', () => {
|
|
const f = makeFixture();
|
|
failableBun(f);
|
|
const project = join(f.home, 'proj');
|
|
const vendored = makeSource(f, join(project, '.claude/skills/gstack'));
|
|
const skills = join(project, '.claude/skills');
|
|
const renderOf = () => registryRows(f).find(row => row[0] === 'claude')?.[8] ?? '';
|
|
|
|
expect(setup(f, vendored, ['--claude-model', 'claude-opus-4-7'], project).status).toBe(0);
|
|
const render = renderOf();
|
|
expect(render).toContain('/render/installs/claude-');
|
|
expect(record(render)).toMatchObject({ overlay: 'opus-4-7', source: 'explicit' });
|
|
expect(served(skills)).toContain(MARKER);
|
|
expect(served(skills)).toContain(`${vendored}/bin/gstack-skill-start`);
|
|
|
|
expect(setup(f, vendored, ['--claude-model', 'claude'], project).status).toBe(0);
|
|
expect(renderOf()).toBe(render);
|
|
expect(record(render).overlay).toBe('claude');
|
|
expect(served(skills)).not.toContain(MARKER);
|
|
expect(served(skills)).toContain(`${vendored}/bin/gstack-skill-start`);
|
|
|
|
put(join(f.home, 'fail-render'), '1');
|
|
const failed = setup(f, vendored, ['--claude-model', 'claude-opus-4-8'], project);
|
|
expect(failed.status, failed.out).toBe(0);
|
|
expect(failed.out).toContain('the previous render stays in use');
|
|
expect(served(skills)).toContain(`${vendored}/bin/gstack-skill-start`);
|
|
expect(served(skills)).not.toContain(MARKER);
|
|
}, 240_000);
|
|
});
|