From 874dd590cf385baa534556eadee0fa5c2f985519 Mon Sep 17 00:00:00 2001 From: Brian White Date: Thu, 9 Oct 2014 16:07:50 -0400 Subject: [PATCH] streams: make setDefaultEncoding() throw PR-URL: https://github.com/joyent/node/pull/8529 Fixes: f04f3a0 "streams: set default encoding for writable streams" [trev.norris@gmail.com: update tests to check if throws] Signed-off-by: Trevor Norris --- lib/_stream_writable.js | 8 +++----- ...test-stream-writable-change-default-encoding.js | 14 +++++--------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index 11b57c78cd0682..92984eb08eb24b 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -222,14 +222,12 @@ Writable.prototype.uncork = function() { }; Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - if (typeof encoding !== 'string') - return false; // node::ParseEncoding() requires lower case. - encoding = encoding.toLowerCase(); + if (typeof encoding === 'string') + encoding = encoding.toLowerCase(); if (!Buffer.isEncoding(encoding)) - return false; + throw new TypeError('Unknown encoding: ' + encoding); this._writableState.defaultEncoding = encoding; - return true; }; function decodeChunk(state, chunk, encoding) { diff --git a/test/simple/test-stream-writable-change-default-encoding.js b/test/simple/test-stream-writable-change-default-encoding.js index c242b247d3d000..eb71cf2b4a6917 100644 --- a/test/simple/test-stream-writable-change-default-encoding.js +++ b/test/simple/test-stream-writable-change-default-encoding.js @@ -49,28 +49,24 @@ MyWritable.prototype._write = function (chunk, encoding, callback) { var m = new MyWritable(function(isBuffer, type, enc) { assert.equal(enc, 'ascii'); }, { decodeStrings: false }); - var status = m.setDefaultEncoding('ascii'); - assert.equal(status, true); + m.setDefaultEncoding('ascii'); m.write('bar'); m.end(); }()); -(function changeDefaultEncodingToInvalidValue() { +assert.throws(function changeDefaultEncodingToInvalidValue() { var m = new MyWritable(function(isBuffer, type, enc) { - assert.equal(enc, 'utf8'); }, { decodeStrings: false }); - var status = m.setDefaultEncoding({}); - assert.equal(status, false); + m.setDefaultEncoding({}); m.write('bar'); m.end(); -}()); +}, TypeError); (function checkVairableCaseEncoding() { var m = new MyWritable(function(isBuffer, type, enc) { assert.equal(enc, 'ascii'); }, { decodeStrings: false }); - var status = m.setDefaultEncoding('AsCii'); - assert.equal(status, true); + m.setDefaultEncoding('AsCii'); m.write('bar'); m.end(); }());