import { describe, expect, test } from 'vitest'; const loadDocker = async () => { process.env.SPOON_WORKER_TOKEN = 'test-worker-token'; process.env.GITHUB_APP_ID = '123'; process.env.GITHUB_APP_PRIVATE_KEY = '-----BEGIN PRIVATE KEY-----\\ntest\\n-----END PRIVATE KEY-----'; return await import('../../src/runtime/docker'); }; describe('in-box process-group marker + kill helpers', () => { test('buildMarkedCommand wraps argv as a setsid bash session carrying the marker', async () => { const { buildMarkedCommand } = await loadDocker(); const argv = buildMarkedCommand('spoon-turn-abc', [ 'codex', 'exec', '--json', 'hi', ]); expect(argv[0]).toBe('setsid'); expect(argv[1]).toBe('bash'); expect(argv[2]).toBe('-lc'); const script = argv[3] ?? ''; expect(script).toContain('# spoon-turn-abc'); expect(script.split('\n').at(-1)).toBe("'codex' 'exec' '--json' 'hi'"); }); test('buildKillScript TERM-then-KILLs every group matching the marker', async () => { const { buildKillScript } = await loadDocker(); const script = buildKillScript('spoon-turn-abc'); expect(script).toContain("pgrep -f 'spoon-turn-abc'"); expect(script).toContain('kill -TERM -"$pid"'); expect(script).toContain('kill -KILL -"$pid"'); }); });