mirror of https://github.com/lukechilds/node.git
Browse Source
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>process-exit-stdio-flushing
Calvin Metcalf
9 years ago
committed by
James M Snell
2 changed files with 66 additions and 4 deletions
@ -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); |
|||
}); |
|||
}); |
Loading…
Reference in new issue