diff options
Diffstat (limited to 'test/simple/test-fs-read-stream-err.js')
-rw-r--r-- | test/simple/test-fs-read-stream-err.js | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/test/simple/test-fs-read-stream-err.js b/test/simple/test-fs-read-stream-err.js index 2c285f183..54aa21799 100644 --- a/test/simple/test-fs-read-stream-err.js +++ b/test/simple/test-fs-read-stream-err.js @@ -23,28 +23,41 @@ var common = require('../common'); var assert = require('assert'); var fs = require('fs'); -var stream = fs.createReadStream(__filename, { bufferSize: 64 }); +var stream = fs.createReadStream(__filename, { + bufferSize: 64 +}); var err = new Error('BAM'); -stream.on('data', function(buf) { - var fd = stream.fd; +stream.on('error', common.mustCall(function errorHandler(err_) { + console.error('error event'); + process.nextTick(function() { + assert.equal(stream.fd, null); + assert.equal(err_, err); + }); +})); + +fs.close = common.mustCall(function(fd_, cb) { + assert.equal(fd_, stream.fd); + process.nextTick(cb); +}); +var read = fs.read; +fs.read = function() { + // first time is ok. + read.apply(fs, arguments); + // then it breaks fs.read = function() { var cb = arguments[arguments.length - 1]; process.nextTick(function() { cb(err); }); + // and should not be called again! + fs.read = function() { + throw new Error('BOOM!'); + }; }; +}; - fs.close = common.mustCall(function(fd_, cb) { - assert.equal(fd_, fd); - process.nextTick(cb); - }); - - stream.on('error', common.mustCall(function(err_) { - assert.equal(stream.fd, null); - assert.equal(err_, err); - })); - +stream.on('data', function(buf) { stream.on('data', assert.fail); // no more 'data' events should follow }); |