mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
test: improve test coverage of fs.ReadStream with FileHandle
PR-URL: https://github.com/nodejs/node/pull/40018 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Zijian Liu <lxxyxzj@gmail.com>
This commit is contained in:
committed by
Node.js GitHub Bot
parent
eb65871ab4
commit
1d84e916d6
@@ -7,14 +7,14 @@ const tmpdir = require('../common/tmpdir');
|
||||
const file = path.join(tmpdir.path, 'read_stream_filehandle_test.txt');
|
||||
const input = 'hello world';
|
||||
|
||||
let output = '';
|
||||
tmpdir.refresh();
|
||||
fs.writeFileSync(file, input);
|
||||
|
||||
fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
handle.on('close', common.mustCall());
|
||||
const stream = fs.createReadStream(null, { fd: handle });
|
||||
|
||||
let output = '';
|
||||
stream.on('data', common.mustCallAtLeast((data) => {
|
||||
output += data;
|
||||
}));
|
||||
@@ -24,18 +24,18 @@ fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
}));
|
||||
|
||||
stream.on('close', common.mustCall());
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
handle.on('close', common.mustCall());
|
||||
const stream = fs.createReadStream(null, { fd: handle });
|
||||
stream.on('data', common.mustNotCall());
|
||||
stream.on('close', common.mustCall());
|
||||
|
||||
handle.close();
|
||||
}));
|
||||
return handle.close();
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
handle.on('close', common.mustCall());
|
||||
const stream = fs.createReadStream(null, { fd: handle });
|
||||
stream.on('close', common.mustCall());
|
||||
@@ -43,17 +43,17 @@ fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
stream.on('data', common.mustCall(() => {
|
||||
handle.close();
|
||||
}));
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
handle.on('close', common.mustCall());
|
||||
const stream = fs.createReadStream(null, { fd: handle });
|
||||
stream.on('close', common.mustCall());
|
||||
|
||||
stream.close();
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
assert.throws(() => {
|
||||
fs.createReadStream(null, { fd: handle, fs });
|
||||
}, {
|
||||
@@ -61,5 +61,23 @@ fs.promises.open(file, 'r').then(common.mustCall((handle) => {
|
||||
name: 'Error',
|
||||
message: 'The FileHandle with fs method is not implemented'
|
||||
});
|
||||
handle.close();
|
||||
}));
|
||||
return handle.close();
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'r').then((handle) => {
|
||||
const { read: originalReadFunction } = handle;
|
||||
handle.read = common.mustCallAtLeast(function read() {
|
||||
return Reflect.apply(originalReadFunction, this, arguments);
|
||||
});
|
||||
|
||||
const stream = fs.createReadStream(null, { fd: handle });
|
||||
|
||||
let output = '';
|
||||
stream.on('data', common.mustCallAtLeast((data) => {
|
||||
output += data;
|
||||
}));
|
||||
|
||||
stream.on('end', common.mustCall(() => {
|
||||
assert.strictEqual(output, input);
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
@@ -9,7 +9,7 @@ const input = 'hello world';
|
||||
|
||||
tmpdir.refresh();
|
||||
|
||||
fs.promises.open(file, 'w+').then(common.mustCall((handle) => {
|
||||
fs.promises.open(file, 'w+').then((handle) => {
|
||||
handle.on('close', common.mustCall());
|
||||
const stream = fs.createWriteStream(null, { fd: handle });
|
||||
|
||||
@@ -18,4 +18,27 @@ fs.promises.open(file, 'w+').then(common.mustCall((handle) => {
|
||||
const output = fs.readFileSync(file, 'utf-8');
|
||||
assert.strictEqual(output, input);
|
||||
}));
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
fs.promises.open(file, 'w+').then((handle) => {
|
||||
let calls = 0;
|
||||
const {
|
||||
write: originalWriteFunction,
|
||||
writev: originalWritevFunction
|
||||
} = handle;
|
||||
handle.write = function write() {
|
||||
calls++;
|
||||
return Reflect.apply(originalWriteFunction, this, arguments);
|
||||
};
|
||||
handle.writev = function writev() {
|
||||
calls++;
|
||||
return Reflect.apply(originalWritevFunction, this, arguments);
|
||||
};
|
||||
const stream = fs.createWriteStream(null, { fd: handle });
|
||||
|
||||
stream.end(input);
|
||||
stream.on('close', common.mustCall(() => {
|
||||
assert(calls > 0, 'expected at least one call to fileHandle.write or ' +
|
||||
'fileHandle.writev, got 0');
|
||||
}));
|
||||
}).then(common.mustCall());
|
||||
|
||||
Reference in New Issue
Block a user