From 31136d8409f42cc16e02761b84faf3497d546bdd Mon Sep 17 00:00:00 2001 From: SukkaW Date: Fri, 20 Sep 2024 16:19:35 +0800 Subject: [PATCH] Fix: write file properly --- Build/lib/create-file.test.ts | 6 ++++++ Build/lib/create-file.ts | 15 +++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Build/lib/create-file.test.ts b/Build/lib/create-file.test.ts index 2c436868..5df73964 100644 --- a/Build/lib/create-file.test.ts +++ b/Build/lib/create-file.test.ts @@ -50,4 +50,10 @@ describe('fileEqual', () => { ['A', 'B'], false )); + + it('eol', () => test( + ['A', 'B'], + ['A', 'B', ''], + true + )); }); diff --git a/Build/lib/create-file.ts b/Build/lib/create-file.ts index e6aec276..9d557d61 100644 --- a/Build/lib/create-file.ts +++ b/Build/lib/create-file.ts @@ -17,16 +17,21 @@ export const fileEqual = async (linesA: string[], source: AsyncIterable) return false; } - let index = 0; + let index = -1; for await (const lineB of source) { - const lineA = linesA[index] as string | undefined; index++; - if (lineA == null) { + if (index > linesA.length - 1) { + if (index === linesA.length && lineB === '') { + index--; + continue; + } // The file becomes smaller return false; } + const lineA = linesA[index]; + if (lineA[0] === '#' && lineB[0] === '#') { continue; } @@ -46,7 +51,7 @@ export const fileEqual = async (linesA: string[], source: AsyncIterable) } } - if (index !== linesA.length) { + if (index !== linesA.length - 1) { // The file becomes larger return false; } @@ -84,7 +89,9 @@ export async function compareAndWriteFile(span: Span, linesA: string[], filePath // eslint-disable-next-line no-await-in-loop -- stream high water mark if (p) await p; } + await asyncWriteToStream(writeStream, '\n'); + writeStream.end(); }); }