diff options
author | Calvin Metcalf <cmetcalf@appgeo.com> | 2016-04-12 15:42:23 -0400 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2016-04-20 13:28:35 -0700 |
commit | e7c077c610afa371430180fbd447bfef60ebc5ea (patch) | |
tree | d3f20ccfaa7b0919a7c5a472e344b7de8829b30c /test | |
parent | ec2822adaad76b126b5cccdeaa1addf2376c9aa6 (diff) | |
download | android-node-v8-e7c077c610afa371430180fbd447bfef60ebc5ea.tar.gz android-node-v8-e7c077c610afa371430180fbd447bfef60ebc5ea.tar.bz2 android-node-v8-e7c077c610afa371430180fbd447bfef60ebc5ea.zip |
stream: make null an invalid chunk to write in object mode
this harmonizes behavior between readable, writable, and transform
streams so that they all handle nulls in object mode the same way by
considering them invalid chunks.
PR-URL: https://github.com/nodejs/node/pull/6170
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-stream-writable-null.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/parallel/test-stream-writable-null.js b/test/parallel/test-stream-writable-null.js new file mode 100644 index 0000000000..2cc396bd91 --- /dev/null +++ b/test/parallel/test-stream-writable-null.js @@ -0,0 +1,56 @@ +'use strict'; +require('../common'); +const assert = require('assert'); + +const stream = require('stream'); +const util = require('util'); + +function MyWritable(options) { + stream.Writable.call(this, options); +} + +util.inherits(MyWritable, stream.Writable); + +MyWritable.prototype._write = function(chunk, encoding, callback) { + assert.notStrictEqual(chunk, null); + callback(); +}; + +assert.throws(() => { + var m = new MyWritable({objectMode: true}); + m.write(null, (err) => assert.ok(err)); +}, TypeError, 'May not write null values to stream'); +assert.doesNotThrow(() => { + var m = new MyWritable({objectMode: true}).on('error', (e) => { + assert.ok(e); + }); + m.write(null, (err) => { + assert.ok(err); + }); +}); + +assert.throws(() => { + var m = new MyWritable(); + m.write(false, (err) => assert.ok(err)); +}, TypeError, 'Invalid non-string/buffer chunk'); +assert.doesNotThrow(() => { + var m = new MyWritable().on('error', (e) => { + assert.ok(e); + }); + m.write(false, (err) => { + assert.ok(err); + }); +}); + +assert.doesNotThrow(() => { + var m = new MyWritable({objectMode: true}); + m.write(false, (err) => assert.ifError(err)); +}); +assert.doesNotThrow(() => { + var m = new MyWritable({objectMode: true}).on('error', (e) => { + assert.ifError(e || new Error('should not get here')); + }); + m.write(false, (err) => { + assert.ifError(err); + }); +}); |