diff --git a/.gitignore b/.gitignore index 837f8325..e7f89dee 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ vendor .nyc_output .vscode/ package-lock.json +.idea diff --git a/lib/output.js b/lib/output.js index dae7badc..0f0fcf71 100644 --- a/lib/output.js +++ b/lib/output.js @@ -92,6 +92,8 @@ function toFile (fileOut, callback) { function toBuffer (options, callback) { if (is.object(options)) { this._setBooleanOption('resolveWithObject', options.resolveWithObject); + } else if (this.options.resolveWithObject) { + this.options.resolveWithObject = false; } return this._pipeline(is.fn(options) ? options : callback); } diff --git a/test/unit/toBuffer.js b/test/unit/toBuffer.js new file mode 100644 index 00000000..3e5a07db --- /dev/null +++ b/test/unit/toBuffer.js @@ -0,0 +1,19 @@ +'use strict'; + +const assert = require('assert'); + +const sharp = require('../../'); +const fixtures = require('../fixtures'); + +describe('toBuffer', () => { + it('reusing same sharp object does not reset previously passed parameters to toBuffer', (done) => { + let image = sharp(fixtures.inputJpg); + image.toBuffer({ resolveWithObject: true }).then((obj) => { + image.toBuffer().then((buff) => { + assert.strict.equal(Buffer.isBuffer(buff), true); + assert.strict.equal(typeof obj, 'object'); + done(); + }); + }); + }); +});