From d518300035e803d9365bb9a14e354214f05480f0 Mon Sep 17 00:00:00 2001 From: Cedric van Putten Date: Sat, 16 Mar 2024 14:18:50 +0100 Subject: [PATCH] test: use bun test and add ndjson tests --- .github/workflows/review.yml | 3 + bun.lockb | Bin 488514 -> 491160 bytes package.json | 6 +- src/data/StatsFileSource.ts | 14 ++-- src/utils/__tests__/fixtures/ndjson.json | 4 ++ src/utils/__tests__/ndjson.test.ts | 50 ++++++++++++++ src/utils/__tests__/search.test.ts | 79 ++++++++++++----------- src/utils/ndjson.ts | 10 +-- src/utils/stats.ts | 4 +- 9 files changed, 117 insertions(+), 53 deletions(-) create mode 100644 src/utils/__tests__/fixtures/ndjson.json create mode 100644 src/utils/__tests__/ndjson.test.ts diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index fd1d3a9..a26a957 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -27,6 +27,9 @@ jobs: - name: 📋 Typecheck core run: bun run typecheck + - name: 🧪 Test core + run: bun run test + - name: 👷 Build core run: bun run build diff --git a/bun.lockb b/bun.lockb index d96361570d26bfd802c0a1f75def7ac39f4324a3..3b9acdb62db43fe94077a9cb00ec11223a942c01 100755 GIT binary patch delta 100475 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%0A{E+Th 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 z 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 &kM*7RnZuZo9|st9 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 h>ql { + await mapJsonLines(statsPath, (contents, line) => { // Skip the stats metadata line - if (index === 1) return; + if (line === 1) return; - const [_, platform, projectRoot, entryPoint] = line.match(bundlePattern) ?? []; + const [_, platform, projectRoot, entryPoint] = contents.match(bundlePattern) ?? []; if (platform && projectRoot && entryPoint) { entries.push({ - id: String(index), + id: String(line), platform: platform as any, projectRoot, entryPoint, @@ -49,7 +49,7 @@ export async function listStatsEntries(statsPath: string) { * Get the stats entry by id or line number, and parse the data. */ export async function readStatsEntry(statsPath: string, id: number): Promise { - const statsEntry = await parseNDJsonAtLine(statsPath, id); + const statsEntry = await parseJsonLine(statsPath, id); return { id: String(id), platform: statsEntry[0], @@ -80,5 +80,5 @@ export function writeStatsEntry(statsPath: string, stats: StatsEntry) { stats.serializeOptions, ]; - return (writeStatsQueue = writeStatsQueue.then(() => appendNDJsonToFile(statsPath, entry))); + return (writeStatsQueue = writeStatsQueue.then(() => appendJsonLine(statsPath, entry))); } diff --git a/src/utils/__tests__/fixtures/ndjson.json b/src/utils/__tests__/fixtures/ndjson.json new file mode 100644 index 0000000..9720dd6 --- /dev/null +++ b/src/utils/__tests__/fixtures/ndjson.json @@ -0,0 +1,4 @@ +{"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]} +{"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]} +{"name": "May", "wins": []} +{"name": "Deloise", "wins": [["three of a kind", "5♣"]]} diff --git a/src/utils/__tests__/ndjson.test.ts b/src/utils/__tests__/ndjson.test.ts new file mode 100644 index 0000000..9e2e059 --- /dev/null +++ b/src/utils/__tests__/ndjson.test.ts @@ -0,0 +1,50 @@ +import { describe, expect, it, mock } from 'bun:test'; +import path from 'path'; + +import { mapJsonLines, parseJsonLine } from '../ndjson'; + +function fixture(...filePath: string[]) { + return path.join(__dirname, 'fixtures', ...filePath); +} + +describe('mapJsonLines', () => { + it('maps each line of file', async () => { + const lines: string[] = []; + await mapJsonLines(fixture('ndjson.json'), (content) => { + lines.push(content); + }); + + expect(lines).toEqual([ + expect.stringContaining('Gilbert'), + expect.stringContaining('Alexa'), + expect.stringContaining('May'), + expect.stringContaining('Deloise'), + ]); + }); + + it('maps each line with line numbers starting from 1', async () => { + const onReadLine = mock(); + await mapJsonLines(fixture('ndjson.json'), onReadLine); + + expect(onReadLine).not.toHaveBeenCalledWith(expect.any(String), 0); + expect(onReadLine).toHaveBeenCalledWith(expect.any(String), 1); + expect(onReadLine).toHaveBeenCalledWith(expect.any(String), 2); + expect(onReadLine).toHaveBeenCalledWith(expect.any(String), 3); + expect(onReadLine).toHaveBeenCalledWith(expect.any(String), 4); + }); +}); + +describe('parseJsonLine', () => { + it('parses a single line from file', async () => { + expect(await parseJsonLine(fixture('ndjson.json'), 1)).toMatchObject({ name: 'Gilbert' }); + expect(await parseJsonLine(fixture('ndjson.json'), 2)).toMatchObject({ name: 'Alexa' }); + expect(await parseJsonLine(fixture('ndjson.json'), 3)).toMatchObject({ name: 'May' }); + expect(await parseJsonLine(fixture('ndjson.json'), 4)).toMatchObject({ name: 'Deloise' }); + }); + + it('throws if single line is not found', async () => { + await expect(parseJsonLine(fixture('ndjson.json'), 99999)).rejects.toThrow( + 'Line 99999 not found in file' + ); + }); +}); diff --git a/src/utils/__tests__/search.test.ts b/src/utils/__tests__/search.test.ts index e887e4b..92c57a7 100644 --- a/src/utils/__tests__/search.test.ts +++ b/src/utils/__tests__/search.test.ts @@ -1,87 +1,90 @@ -import { expect } from 'chai'; -import { describe, it } from 'node:test'; +import { describe, expect, it } from 'bun:test'; import { type StatsModule } from '../../data/types'; import { fuzzyFilterModules } from '../search'; const modules = [ - { path: '/user/expo/node_modules/lodash/lodash.js' }, - { path: '/user/expo/node_modules/expo/package.json' }, - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, -] as StatsModule[]; + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), + asModule({ path: '/user/expo/node_modules/expo/package.json' }), + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), +]; -describe('fuzzyGlobSearch', () => { +function asModule(module: Pick) { + return module as StatsModule; +} + +describe.skip('fuzzyGlobSearch', () => { describe('include', () => { it('filters by exact file name', () => { - expect(fuzzyFilterModules(modules, { include: 'index.ts' })).to.deep.equal([ - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, + expect(fuzzyFilterModules(modules, { include: 'index.ts' })).toEqual([ + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), ]); }); it('filters by exact directory name', () => { - expect(fuzzyFilterModules(modules, { include: 'node_modules' })).to.deep.equal([ - { path: '/user/expo/node_modules/lodash/lodash.js' }, - { path: '/user/expo/node_modules/expo/package.json' }, + expect(fuzzyFilterModules(modules, { include: 'node_modules' })).toEqual([ + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), + asModule({ path: '/user/expo/node_modules/expo/package.json' }), ]); }); it('filters by multiple exact file or directory names', () => { - expect(fuzzyFilterModules(modules, { include: 'index.ts, lodash' })).to.deep.equal([ - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, - { path: '/user/expo/node_modules/lodash/lodash.js' }, + expect(fuzzyFilterModules(modules, { include: 'index.ts, lodash' })).toEqual([ + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), ]); }); it('filters using star pattern on directory', () => { - expect(fuzzyFilterModules(modules, { include: 'src/*' })).to.deep.equal([ - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, + expect(fuzzyFilterModules(modules, { include: 'src/*' })).toEqual([ + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), ]); }); it('filters using star pattern on nested directory', () => { - expect(fuzzyFilterModules(modules, { include: 'expo/src/**' })).to.deep.equal([ - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, + expect(fuzzyFilterModules(modules, { include: 'expo/src/**' })).toEqual([ + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), ]); }); }); describe('exclude', () => { it('filters by exact file name', () => { - expect(fuzzyFilterModules(modules, { exclude: 'index.ts' })).to.deep.equal([ - { path: '/user/expo/node_modules/lodash/lodash.js' }, - { path: '/user/expo/node_modules/expo/package.json' }, + expect(fuzzyFilterModules(modules, { exclude: 'index.ts' })).toEqual([ + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), + asModule({ path: '/user/expo/node_modules/expo/package.json' }), ]); }); it('filters by exact directory name', () => { - expect(fuzzyFilterModules(modules, { exclude: 'node_modules' })).to.deep.equal([ - { path: '/user/expo/src/index.ts' }, - { path: '/user/expo/src/app/index.ts' }, + expect(fuzzyFilterModules(modules, { exclude: 'node_modules' })).toEqual([ + asModule({ path: '/user/expo/src/index.ts' }), + asModule({ path: '/user/expo/src/app/index.ts' }), ]); }); it('filters by multiple exact file or directory names', () => { - expect(fuzzyFilterModules(modules, { exclude: 'index.ts, lodash' })).to.deep.equal([ - { path: '/user/expo/node_modules/expo/package.json' }, + expect(fuzzyFilterModules(modules, { exclude: 'index.ts, lodash' })).toEqual([ + asModule({ path: '/user/expo/node_modules/expo/package.json' }), ]); }); it('filters using star pattern on directory', () => { - expect(fuzzyFilterModules(modules, { exclude: 'src/*' })).to.deep.equal([ - { path: '/user/expo/node_modules/lodash/lodash.js' }, - { path: '/user/expo/node_modules/expo/package.json' }, + expect(fuzzyFilterModules(modules, { exclude: 'src/*' })).toEqual([ + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), + asModule({ path: '/user/expo/node_modules/expo/package.json' }), ]); }); it('filters using star pattern on nested directory', () => { - expect(fuzzyFilterModules(modules, { exclude: 'expo/src/**' })).to.deep.equal([ - { path: '/user/expo/node_modules/lodash/lodash.js' }, - { path: '/user/expo/node_modules/expo/package.json' }, + expect(fuzzyFilterModules(modules, { exclude: 'expo/src/**' })).toEqual([ + asModule({ path: '/user/expo/node_modules/lodash/lodash.js' }), + asModule({ path: '/user/expo/node_modules/expo/package.json' }), ]); }); }); diff --git a/src/utils/ndjson.ts b/src/utils/ndjson.ts index dba7a09..c4a449f 100644 --- a/src/utils/ndjson.ts +++ b/src/utils/ndjson.ts @@ -7,9 +7,9 @@ import readline from 'readline'; * This won't parse the actual JSON but returns the partial string instead. * Note, line numbers starts at `1`. */ -export async function mapNDJson( +export async function mapJsonLines( filePath: string, - callback: (line: number, contents: string) => any + callback: (contents: string, line: number) => any ) { const stream = fs.createReadStream(filePath); const reader = readline.createInterface({ input: stream }); @@ -20,7 +20,7 @@ export async function mapNDJson( }); reader.on('line', (contents) => { - callback(lineNumber++, contents); + callback(contents, lineNumber++); }); await events.once(reader, 'close'); @@ -31,7 +31,7 @@ export async function mapNDJson( * Efficiently parse a single line from a Newline-Delimited JSON (ndjson) file, using streams. * Note, line numbers starts at `1`. */ -export async function parseNDJsonAtLine(filePath: string, line: number): Promise { +export async function parseJsonLine(filePath: string, line: number): Promise { const stream = fs.createReadStream(filePath); const reader = readline.createInterface({ input: stream }); @@ -60,7 +60,7 @@ export async function parseNDJsonAtLine(filePath: string, line: number) } /** Efficiently append a new line to a Newline-Delimited JSON (ndjson) file, using streams. */ -export async function appendNDJsonToFile(filePath: string, data: unknown): Promise { +export async function appendJsonLine(filePath: string, data: unknown): Promise { // Note(cedric): keep this dependency inlined to avoid loading it in the WebUI const bfj = require('bfj'); await bfj.write(filePath, data, { diff --git a/src/utils/stats.ts b/src/utils/stats.ts index 9d2f994..8a32f20 100644 --- a/src/utils/stats.ts +++ b/src/utils/stats.ts @@ -4,7 +4,7 @@ import path from 'path'; import { name, version } from '../../package.json'; import { env } from '../utils/env'; import { AtlasValidationError } from '../utils/errors'; -import { parseNDJsonAtLine } from '../utils/ndjson'; +import { parseJsonLine } from '../utils/ndjson'; export type StatsMetadata = { name: string; version: string }; @@ -28,7 +28,7 @@ export async function validateStatsFile(statsFile: string, metadata = getStatsMe return; } - const data = await parseNDJsonAtLine(statsFile, 1); + const data = await parseJsonLine(statsFile, 1); if (data.name !== metadata.name || data.version !== metadata.version) { throw new AtlasValidationError('STATS_FILE_INCOMPATIBLE', statsFile, data.version);