test: add failing test for readline with carriage return

PR-URL: https://github.com/nodejs/node/pull/46075
Refs: https://github.com/nodejs/node/issues/45992
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
This commit is contained in:
Alec Mev 2023-01-22 11:21:48 +02:00 committed by GitHub
parent 863a41694c
commit de6c0e6779
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,42 @@
'use strict';
// Context: https://github.com/nodejs/node/issues/45992
require('../common');
const assert = require('assert');
const fs = require('fs');
const readline = require('readline');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
fs.mkdtempSync(`${tmpdir.path}/`);
const path = `${tmpdir.path}/foo`;
const writeStream = fs.createWriteStream(path);
function write(iteration, callback) {
for (; iteration < 16384; iteration += 1) {
if (!writeStream.write('foo\r\n')) {
writeStream.once('drain', () => write(iteration + 1, callback));
return;
}
}
writeStream.end();
callback();
}
write(0, () => {
const input = fs.createReadStream(path);
const rl = readline.createInterface({ input, crlfDelay: Infinity });
let carriageReturns = 0;
rl.on('line', (x) => {
if (x.includes('\r')) carriageReturns += 1;
});
rl.on('close', () => {
assert.strictEqual(carriageReturns, 0);
});
});