import { expect } from 'chai'; import { rm } from 'fs/promises'; import { createFile } from '../../src/utils/file'; import { getFileHeadData, getFileMiddleData, getFileRowsNumber, getFileTailData, } from '../../src/utils/shell'; import { getTestPath, randomString } from './utils'; describe('utils/shell', () => { let inputFilePaths: string[]; beforeEach(async () => { const content = []; inputFilePaths = [ getTestPath(`${randomString()}.log`), getTestPath(`${randomString()}.log`), ]; for (let index = 1; index <= 98; index += 1) { content.push(`测试数据 ${index}`); } content.push(''); await createFile(inputFilePaths[0], content); await createFile(inputFilePaths[1], []); }); afterEach(async () => { await rm(inputFilePaths[0]); await rm(inputFilePaths[1]); }); it('获取文件行数', async () => { const rowCount = await getFileRowsNumber(inputFilePaths[0]); expect(rowCount).to.be.equal(98); }); it('获取文件头3行', async () => { const data = await getFileHeadData(inputFilePaths[0], 3); expect(data).to.deep.equals([ '测试数据 1', '测试数据 2', '测试数据 3', ]); }); it('获取文件中间3行', async () => { const data = await getFileMiddleData(inputFilePaths[0], 3); expect(data).to.deep.equals([ '测试数据 48', '测试数据 49', '测试数据 50', ]); }); it('获取文件尾3行', async () => { const data = await getFileTailData(inputFilePaths[0], 3); expect(data).to.deep.equals([ '测试数据 96', '测试数据 97', '测试数据 98', ]); }); it('获取文件头3行(文件总行数不足)', async () => { const data = await getFileHeadData(inputFilePaths[1], 3); expect(data).to.deep.equals([]); }); it('获取文件中间3行 (文件总行数不足)', async () => { const data = await getFileMiddleData(inputFilePaths[1], 3); expect(data).to.deep.equals([]); }); it('获取文件尾3行(文件总行数不足)', async () => { const data = await getFileHeadData(inputFilePaths[1], 3); expect(data).to.deep.equals([]); }); });