diff --git a/lib/default_stream.js b/lib/default_stream.js index a1ffa884..ffc2ad11 100644 --- a/lib/default_stream.js +++ b/lib/default_stream.js @@ -9,6 +9,13 @@ module.exports = function () { return stream; function write(buf) { + if ( + buf == null // eslint-disable-line eqeqeq + || (Object(buf) !== buf && typeof buf !== 'string') + ) { + flush(); + return; + } for (var i = 0; i < buf.length; i++) { var c = typeof buf === 'string' ? buf.charAt(i) diff --git a/test/default_stream.js b/test/default_stream.js new file mode 100644 index 00000000..eb1435f9 --- /dev/null +++ b/test/default_stream.js @@ -0,0 +1,20 @@ +'use strict'; + +var tap = require('tap'); + +var getDefaultStream = require('../lib/default_stream'); + +tap.test('getDefaultStream', function (tt) { + tt.plan(5); + + var stream = getDefaultStream(); + + tt.doesNotThrow(function () { stream.write('# ok'); }, 'strings are fine'); + tt.doesNotThrow(function () { stream.write(123); }, 'numbers are fine'); + tt.doesNotThrow(function () { stream.write(undefined); }, 'undefined is fine'); + tt.doesNotThrow(function () { stream.write(); }, 'no args is fine'); + tt.doesNotThrow(function () { stream.write(null); }, 'null is fine'); + // TODO: figure out why writing to the stream after writing null fails tests + + tt.end(); +});