refactor: centralize query tools error construction in factory

This commit is contained in:
Tom Boucher
2026-05-04 20:09:20 -04:00
parent abf7779088
commit 9a469fa05c
4 changed files with 64 additions and 26 deletions

View File

@@ -0,0 +1,25 @@
import { describe, expect, it } from 'vitest';
import { ErrorClassification, GSDError } from './errors.js';
import {
failureToolsError,
timeoutToolsError,
toToolsErrorFromUnknown,
} from './query-tools-error-factory.js';
describe('query tools error factory', () => {
it('builds timeout and failure tools errors', () => {
expect(timeoutToolsError('t', 'state', ['load'], '', 10).classification).toEqual({ kind: 'timeout', timeoutMs: 10 });
expect(failureToolsError('f', 'state', ['load'], 1).classification).toEqual({ kind: 'failure' });
});
it('maps GSDError to failure with semantic exit code', () => {
const err = toToolsErrorFromUnknown('state', ['load'], new GSDError('bad', ErrorClassification.Validation));
expect(err.exitCode).toBe(10);
expect(err.classification).toEqual({ kind: 'failure' });
});
it('maps timeout-like unknown errors to timeout classification', () => {
const err = toToolsErrorFromUnknown('state', ['load'], new Error('gsd-tools timed out after 50ms: state load'));
expect(err.classification).toEqual({ kind: 'timeout', timeoutMs: 50 });
});
});