feat(worker): in-box process-group marker + kill helpers for agent turns
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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"');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user