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(); }); }