refactor(chart): enforce 400-line source limit
Some checks failed
Package component / package (push) Failing after 4m19s

This commit is contained in:
liqiyuan
2026-07-27 15:05:13 +08:00
parent dcc27a88be
commit 082462cf67
61 changed files with 9682 additions and 8407 deletions

View File

@@ -0,0 +1,56 @@
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { afterEach, describe, expect, it } from 'vitest'
import {
collectTextFiles,
findFileLengthViolations,
physicalLineCount,
} from './check-file-length.mjs'
const temporaryDirectories: string[] = []
function makeTemporaryDirectory() {
const directory = mkdtempSync(join(tmpdir(), 'waveform-file-length-'))
temporaryDirectories.push(directory)
return directory
}
afterEach(() => {
temporaryDirectories.splice(0).forEach((directory) => {
rmSync(directory, { recursive: true, force: true })
})
})
describe('file length check', () => {
it('counts physical lines with and without a trailing newline', () => {
expect(physicalLineCount('')).toBe(0)
expect(physicalLineCount('first')).toBe(1)
expect(physicalLineCount('first\nsecond')).toBe(2)
expect(physicalLineCount('first\nsecond\n')).toBe(2)
})
it('checks text files regardless of extension and skips binary files', () => {
const directory = makeTemporaryDirectory()
writeFileSync(join(directory, 'source.custom'), 'first\nsecond')
writeFileSync(join(directory, 'binary.data'), Buffer.from([0, 1, 2, 3]))
expect(collectTextFiles(directory).map(({ path }) => path)).toEqual([
join(directory, 'source.custom'),
])
})
it('reports the file, actual line count, and configured limit', () => {
const directory = makeTemporaryDirectory()
writeFileSync(join(directory, 'too-long.unknown'), 'first\nsecond\nthird')
expect(findFileLengthViolations(directory, 2)).toEqual([
{
path: expect.stringContaining('too-long.unknown'),
lineCount: 3,
limit: 2,
},
])
})
})