Files
msd-core/sdk/src/query/query-fallback-output-classifier.test.ts
Tom Boucher b6c401dc90 refactor(query): deepen command/dispatch seams and resolve coderabbit findings
* refactor(query): deepen command definition seam and fold fallback mapping cleanup

* refactor(query): add shared dispatch formatting module seam

* fix(query): restore QueryResult type import in dispatch deps

* test/query: align raw-output policy and definition normalization contracts

* refactor(query): deepen diagnosis, invariant report, and error taxonomy seams

* refactor(query): deepen dispatch plan, fallback bridge, policy snapshot, and hints seams

* refactor(query): deepen validation, fallback policy, capability, and result builder seams

* refactor(query): deepen resolution strategy, output classifier, observability, and policy-capability seams

* refactor(query): finalize deep strategy/classifier/observability/capability seams

* test/query: address coderabbit inline and out-of-diff dispatch nits

* fix(query): address remaining coderabbit input-validation and bridge stderr threads

* fix(query): address remaining coderabbit dispatch and strategy/output nits
2026-05-03 15:29:34 -04:00

37 lines
1.3 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { tmpdir } from 'node:os';
import { classifyFallbackOutput } from './query-fallback-output-classifier.js';
describe('query-fallback-output-classifier', () => {
it('classifies json output', async () => {
const out = await classifyFallbackOutput('{"ok":true}', process.cwd());
expect(out.mode).toBe('json');
});
it('classifies text output on invalid json', async () => {
const out = await classifyFallbackOutput('USAGE', process.cwd());
expect(out.mode).toBe('text');
});
it('resolves @file json output', async () => {
const dir = await mkdtemp(join(tmpdir(), 'classifier-'));
try {
const file = join(dir, 'payload.json');
await writeFile(file, '{"from":"file"}', 'utf-8');
const out = await classifyFallbackOutput('@file:payload.json', dir);
expect(out.mode).toBe('json');
expect(out.output).toEqual({ from: 'file' });
} finally {
await rm(dir, { recursive: true, force: true });
}
});
it('classifies empty output as text', async () => {
const out = await classifyFallbackOutput(' ', process.cwd());
expect(out.mode).toBe('text');
expect(out.output).toBe(' ');
});
});