diff options
author | Kohei Hiraga <white.line.oar@gmail.com> | 2018-04-02 01:58:16 +0900 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-04-10 01:16:42 +0200 |
commit | 6e2d5af0e4164d4b1a827a86b8eafa3b5fcaebe0 (patch) | |
tree | a88c73439fa6c915b8cce56cd221578a12c79485 | |
parent | 9c06770443313d1b79b5dc1749ad0063dd97193c (diff) | |
download | android-node-v8-6e2d5af0e4164d4b1a827a86b8eafa3b5fcaebe0.tar.gz android-node-v8-6e2d5af0e4164d4b1a827a86b8eafa3b5fcaebe0.tar.bz2 android-node-v8-6e2d5af0e4164d4b1a827a86b8eafa3b5fcaebe0.zip |
fs: fix missing 'error' event in (Read|Write)Stream#destroy
fs.ReadStream / fs.WriteStream destroy([error]) function
should emit 'error' event if `error` is set.
PR-URL: https://github.com/nodejs/node/pull/19735
Fixes: https://github.com/nodejs/node/issues/19727
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
-rw-r--r-- | lib/fs.js | 2 | ||||
-rw-r--r-- | test/parallel/test-fs-stream-destroy-emit-error.js | 20 |
2 files changed, 21 insertions, 1 deletions
@@ -2128,7 +2128,7 @@ ReadStream.prototype._destroy = function(err, cb) { return; } - closeFsStream(this, cb); + closeFsStream(this, cb, err); this.fd = null; }; diff --git a/test/parallel/test-fs-stream-destroy-emit-error.js b/test/parallel/test-fs-stream-destroy-emit-error.js new file mode 100644 index 0000000000..c0405ce5f1 --- /dev/null +++ b/test/parallel/test-fs-stream-destroy-emit-error.js @@ -0,0 +1,20 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const fs = require('fs'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +test(fs.createReadStream(__filename)); +test(fs.createWriteStream(`${tmpdir.path}/dummy`)); + +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); + })); +} |