diff --git a/src/lib/utils.js b/src/lib/utils.js index 3386e44bd..1750b1335 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -397,25 +397,42 @@ _.createArray = function (input, transform) { * @return {string} - the remaining test to be written to the stream */ _.getUnwrittenFromStream = function (stream) { - if (stream && stream._writableState && stream._writableState.buffer) { - // flush the write buffer to disk - var writeBuffer = stream._writableState.buffer; - var out = ''; - if (writeBuffer.length) { - _.each(writeBuffer, function (writeReq) { - if (writeReq.chunk) { - // 0.9.12+ uses WriteReq objects with a chunk prop - out += '' + writeReq.chunk; - } else if (_.isArray(writeReq) && (typeof writeReq[0] === 'string' || Buffer.isBuffer(writeReq[0]))) { - // 0.9.4 - 0.9.9 buffers are arrays of arrays like [[chunk, cb], [chunk, undef], ...]. - out += '' + writeReq[0]; - } else { - return false; - } - }); - } - return out; + var writeBuffer = _.getStreamWriteBuffer(stream); + if (!writeBuffer || !writeBuffer.length) { + return ''; } + + // flush the write buffer + var out = ''; + _.each(writeBuffer, function (writeReq) { + if (writeReq.chunk) { + // 0.9.12+ uses WriteReq objects with a chunk prop + out += '' + writeReq.chunk; + } else if (_.isArray(writeReq) && (typeof writeReq[0] === 'string' || Buffer.isBuffer(writeReq[0]))) { + // 0.9.4 - 0.9.9 buffers are arrays of arrays like [[chunk, cb], [chunk, undef], ...]. + out += '' + writeReq[0]; + } else { + return false; + } + }); + return out; +}; + +_.getStreamWriteBuffer = function (stream) { + if (!stream || !stream._writableState) return; + + var writeState = stream._writableState; + + if (writeState.getBuffer) { + return writeState.getBuffer(); + } else if (writeState.buffer) { + return writeState.buffer; + } +}; + +_.clearWriteStreamBuffer = function (stream) { + var buffer = _.emptyWriteStreamBuffer(stream); + return buffer && buffer.splice(0); }; /** diff --git a/test/unit/specs/connection_pool.js b/test/unit/specs/connection_pool.js index c698e9ae7..76df25378 100644 --- a/test/unit/specs/connection_pool.js +++ b/test/unit/specs/connection_pool.js @@ -247,7 +247,6 @@ describe('Connection Pool', function () { var clock = sinon.useFakeTimers(); stub.autoRelease(clock); - debugger; connection.setStatus('dead'); expect(_.size(clock.timers)).to.eql(1); var id = _(clock.timers).keys().first(); diff --git a/test/unit/specs/file_logger.js b/test/unit/specs/file_logger.js index 3d6435496..90cd6a694 100644 --- a/test/unit/specs/file_logger.js +++ b/test/unit/specs/file_logger.js @@ -15,15 +15,7 @@ describe('File Logger', function () { afterEach(function () { parentLog.close(); - - if (logger - && logger.stream - && logger.stream._writableState - && logger.stream._writableState.buffer.length - ) { - // empty the buffer manually - logger.stream._writableState.buffer.splice(0); - } + logger && _.clearWriteStreamBuffer(logger.stream); }); function makeLogger(parent, levels) { diff --git a/test/unit/specs/stream_logger.js b/test/unit/specs/stream_logger.js index 50f940b2d..89c60e6b0 100644 --- a/test/unit/specs/stream_logger.js +++ b/test/unit/specs/stream_logger.js @@ -19,11 +19,7 @@ describe('Stream Logger', function () { afterEach(function () { parentLog.close(); - - if (stream._writableState && stream._writableState.buffer.length) { - // empty the buffer manually - stream._writableState.buffer.splice(0); - } + _.clearWriteStreamBuffer(stream); }); function makeLogger(parent, levels) {