Files
ServerKit/frontend/scripts/lint-inventory.test.mjs

24 lines
1.3 KiB
JavaScript

import assert from 'node:assert/strict';
import { resolve } from 'node:path';
import test from 'node:test';
import { warningInventory, warningRegressions } from './lint-inventory.mjs';
test('warning baseline excludes installed copies but includes newly added source', () => {
const root = resolve('fixture');
const file = resolve(root, 'src/new.jsx');
const installed = resolve(root, 'src/plugins/installed.jsx');
const messages = [{ severity: 1, ruleId: 'no-unused-vars' }, { severity: 2, ruleId: 'no-undef' }];
assert.deepEqual(warningInventory([{ filePath: file, messages }, { filePath: installed, messages }], root, new Set([file])), {
'src/new.jsx': { 'no-unused-vars': 1 },
});
});
test('new files, new rules, and growing counts fail; reductions pass', () => {
const baseline = { 'src/page.jsx': { 'no-unused-vars': 2 } };
assert.equal(warningRegressions({ 'src/page.jsx': { 'no-unused-vars': 3 } }, baseline).length, 1);
assert.equal(warningRegressions({ 'src/page.jsx': { 'react-hooks/exhaustive-deps': 1 } }, baseline).length, 1);
assert.equal(warningRegressions({ 'src/new.jsx': { 'no-unused-vars': 1 } }, baseline).length, 1);
assert.deepEqual(warningRegressions({ 'src/page.jsx': { 'no-unused-vars': 1 } }, baseline), []);
assert.deepEqual(warningRegressions({}, baseline), []);
});