node/test/parallel/test-fs-stream-destroy-emit-error.js
Robert Nagy f0d2df41f8 fs: change streams to always emit close by default
Previously due to compat reasons 'close' was only emitted if no 'error'.
This removes the compat behavior in order to properly follow expected
streams behavior.

PR-URL: https://github.com/nodejs/node/pull/31408
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
2020-01-20 21:47:29 -08:00

44 lines
955 B
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
{
const stream = fs.createReadStream(__filename);
stream.on('close', common.mustCall());
test(stream);
}
{
const stream = fs.createWriteStream(`${tmpdir.path}/dummy`);
stream.on('close', common.mustCall());
test(stream);
}
{
const stream = fs.createReadStream(__filename, { emitClose: true });
stream.on('close', common.mustCall());
test(stream);
}
{
const stream = fs.createWriteStream(`${tmpdir.path}/dummy2`,
{ emitClose: true });
stream.on('close', common.mustCall());
test(stream);
}
function test(stream) {
const err = new Error('DESTROYED');
stream.on('open', function() {
stream.destroy(err);
});
stream.on('error', common.mustCall(function(err_) {
assert.strictEqual(err_, err);
}));
}