c50ac7c915
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.5 KiB
JavaScript
43 lines
2.5 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import { parseVitestJson } from './run-test-json.mjs';
|
|
|
|
describe('parseVitestJson (анти-вакуум SE-LB-1/11)', () => {
|
|
it('зелёный прогон с тестами → allGreen true, numPassed>0', () => {
|
|
const json = JSON.stringify({ numTotalTests: 3, numPassedTests: 3, numFailedTests: 0, testResults: [{ status: 'passed' }] });
|
|
expect(parseVitestJson(json)).toEqual({ allGreen: true, numTests: 3, numPassed: 3, numFailed: 0, loadError: false });
|
|
});
|
|
it('0 собранных тестов → allGreen FALSE (вакуум не считается зелёным)', () => {
|
|
const json = JSON.stringify({ numTotalTests: 0, numPassedTests: 0, numFailedTests: 0, testResults: [] });
|
|
expect(parseVitestJson(json)).toEqual({ allGreen: false, numTests: 0, numPassed: 0, numFailed: 0, loadError: false });
|
|
});
|
|
it('провал ассерта → allGreen false, numFailed>0, loadError false', () => {
|
|
const json = JSON.stringify({ numTotalTests: 2, numPassedTests: 1, numFailedTests: 1, testResults: [{ status: 'failed' }] });
|
|
const r = parseVitestJson(json);
|
|
expect(r.allGreen).toBe(false);
|
|
expect(r.numFailed).toBe(1);
|
|
expect(r.loadError).toBe(false);
|
|
});
|
|
it('битый/пустой json (ошибка сборки модуля) → loadError true, allGreen false', () => {
|
|
expect(parseVitestJson('not json')).toEqual({ allGreen: false, numTests: 0, numPassed: 0, numFailed: 0, loadError: true });
|
|
expect(parseVitestJson('')).toEqual({ allGreen: false, numTests: 0, numPassed: 0, numFailed: 0, loadError: true });
|
|
});
|
|
});
|
|
|
|
import { buildVitestJsonArgs } from './run-test-json.mjs';
|
|
|
|
describe('buildVitestJsonArgs (конфиг от корня репо, без хардкода app/)', () => {
|
|
const norm = (s) => String(s).replace(/\\/g, '/');
|
|
it('есть app/vitest.config.tools.mjs → root=app', () => {
|
|
const a = buildVitestJsonArgs('t.mjs', '/repo', (p) => norm(p).endsWith('app/vitest.config.tools.mjs'));
|
|
expect(norm(a[a.indexOf('--root') + 1])).toBe('/repo/app');
|
|
expect(norm(a[a.indexOf('--config') + 1])).toBe('/repo/app/vitest.config.tools.mjs');
|
|
});
|
|
it('нет app/-конфига → root=корень репо + базовая форма аргументов', () => {
|
|
const a = buildVitestJsonArgs('t.mjs', '/repo', () => false);
|
|
expect(a[a.indexOf('--root') + 1]).toBe('/repo');
|
|
expect(a[0]).toBe('vitest');
|
|
expect(a).toContain('t.mjs');
|
|
expect(a).toContain('json');
|
|
});
|
|
});
|