From df7b8ba73808fc494be413e88cfb621b6279218c Mon Sep 17 00:00:00 2001 From: Florian Busch <72664648+florian-busch@users.noreply.github.com> Date: Wed, 17 Feb 2021 21:46:13 +0100 Subject: [PATCH] Add support for non lower case extensions with toFormat --- lib/output.js | 2 +- test/unit/toFormat.js | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/unit/toFormat.js diff --git a/lib/output.js b/lib/output.js index 6458c05c..6d309105 100644 --- a/lib/output.js +++ b/lib/output.js @@ -188,7 +188,7 @@ function withMetadata (options) { * @throws {Error} unsupported format or options */ function toFormat (format, options) { - const actualFormat = formats.get(is.object(format) && is.string(format.id) ? format.id : format); + const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase()); if (!actualFormat) { throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format); } diff --git a/test/unit/toFormat.js b/test/unit/toFormat.js new file mode 100644 index 00000000..bc253d03 --- /dev/null +++ b/test/unit/toFormat.js @@ -0,0 +1,26 @@ +'use strict'; + +const assert = require('assert'); +const sharp = require('../../'); +const fixtures = require('../fixtures'); + +describe('toFormat', () => { + it('accepts upper case characters as format parameter (string)', function (done) { + sharp(fixtures.inputJpg) + .toFormat('PNG') + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual('png', info.format); + done(); + }); + }); + it('accepts upper case characters as format parameter (object)', function (done) { + sharp(fixtures.inputJpg) + .toFormat({ id: 'PNG' }) + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual('png', info.format); + done(); + }); + }); +});