streams: make setDefaultEncoding() throw
authorBrian White <mscdex@mscdex.net>
Thu, 9 Oct 2014 20:07:50 +0000 (16:07 -0400)
committerTrevor Norris <trev.norris@gmail.com>
Thu, 9 Oct 2014 23:48:59 +0000 (16:48 -0700)
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 <trev.norris@gmail.com>
lib/_stream_writable.js
test/simple/test-stream-writable-change-default-encoding.js

index 11b57c7..92984eb 100644 (file)
@@ -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) {
index c242b24..eb71cf2 100644 (file)
@@ -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();
 }());