diff --git a/.gitignore b/.gitignore index 688e56d5..761d3d84 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,6 @@ logs results build node_modules -tests/output.* +tests/fixtures/output.* npm-debug.log diff --git a/tests/2569067123_aca715a2ee_o.jpg b/tests/fixtures/2569067123_aca715a2ee_o.jpg similarity index 100% rename from tests/2569067123_aca715a2ee_o.jpg rename to tests/fixtures/2569067123_aca715a2ee_o.jpg diff --git a/tests/4.webp b/tests/fixtures/4.webp similarity index 100% rename from tests/4.webp rename to tests/fixtures/4.webp diff --git a/tests/50020484-00001.png b/tests/fixtures/50020484-00001.png similarity index 100% rename from tests/50020484-00001.png rename to tests/fixtures/50020484-00001.png diff --git a/tests/fixtures/Crash_test.gif b/tests/fixtures/Crash_test.gif new file mode 100644 index 00000000..a7a9abae Binary files /dev/null and b/tests/fixtures/Crash_test.gif differ diff --git a/tests/G31D.TIF b/tests/fixtures/G31D.TIF similarity index 100% rename from tests/G31D.TIF rename to tests/fixtures/G31D.TIF diff --git a/tests/parallel.js b/tests/parallel.js index 06843118..c7c395cc 100755 --- a/tests/parallel.js +++ b/tests/parallel.js @@ -1,9 +1,10 @@ var sharp = require("../index"); var fs = require("fs"); +var path = require("path"); var assert = require("assert"); var async = require("async"); -var inputJpg = __dirname + "/2569067123_aca715a2ee_o.jpg"; // http://www.flickr.com/photos/grizdave/2569067123/ +var inputJpg = path.join(__dirname, "fixtures/2569067123_aca715a2ee_o.jpg"); // http://www.flickr.com/photos/grizdave/2569067123/ var width = 720; var height = 480; diff --git a/tests/perf.js b/tests/perf.js index a94897a5..7529db74 100755 --- a/tests/perf.js +++ b/tests/perf.js @@ -1,22 +1,27 @@ var sharp = require("../index"); var fs = require("fs"); +var path = require("path"); var imagemagick = require("imagemagick"); var gm = require("gm"); var async = require("async"); var assert = require("assert"); var Benchmark = require("benchmark"); -var inputJpg = __dirname + "/2569067123_aca715a2ee_o.jpg"; // http://www.flickr.com/photos/grizdave/2569067123/ -var outputJpg = __dirname + "/output.jpg"; +var fixturesPath = path.join(__dirname, "fixtures"); -var inputPng = __dirname + "/50020484-00001.png"; // http://c.searspartsdirect.com/lis_png/PLDM/50020484-00001.png -var outputPng = __dirname + "/output.png"; +var inputJpg = path.join(fixturesPath, "2569067123_aca715a2ee_o.jpg"); // http://www.flickr.com/photos/grizdave/2569067123/ +var outputJpg = path.join(fixturesPath, "output.jpg"); -var inputWebp = __dirname + "/4.webp"; // http://www.gstatic.com/webp/gallery/4.webp -var outputWebp = __dirname + "/output.webp"; +var inputPng = path.join(fixturesPath, "50020484-00001.png"); // http://c.searspartsdirect.com/lis_png/PLDM/50020484-00001.png +var outputPng = path.join(fixturesPath, "output.png"); -var inputTiff = __dirname + "/G31D.TIF"; // http://www.fileformat.info/format/tiff/sample/e6c9a6e5253348f4aef6d17b534360ab/index.htm -var outputTiff = __dirname + "/output.tiff"; +var inputWebp = path.join(fixturesPath, "4.webp"); // http://www.gstatic.com/webp/gallery/4.webp +var outputWebp = path.join(fixturesPath, "output.webp"); + +var inputTiff = path.join(fixturesPath, "G31D.TIF"); // http://www.fileformat.info/format/tiff/sample/e6c9a6e5253348f4aef6d17b534360ab/index.htm +var outputTiff = path.join(fixturesPath, "output.tiff"); + +var inputGif = path.join(fixturesPath, "Crash_test.gif"); // http://upload.wikimedia.org/wikipedia/commons/e/e3/Crash_test.gif var width = 720; var height = 480; @@ -398,6 +403,46 @@ async.series({ }).on("complete", function() { callback(null, this.filter("fastest").pluck("name")); }).run(); + }, + gif: function(callback) { + (new Benchmark.Suite("gif")).add("sharp-file-file", { + defer: true, + fn: function(deferred) { + sharp(inputGif).resize(width, height).write(outputTiff, function(err) { + if (err) { + throw err; + } else { + deferred.resolve(); + } + }); + } + }).add("sharp-file-file-sharpen", { + defer: true, + fn: function(deferred) { + sharp(inputGif).resize(width, height).sharpen().write(outputTiff, function(err) { + if (err) { + throw err; + } else { + deferred.resolve(); + } + }); + } + }).add("sharp-file-file-sequentialRead", { + defer: true, + fn: function(deferred) { + sharp(inputGif).sequentialRead().resize(width, height).write(outputTiff, function(err) { + if (err) { + throw err; + } else { + deferred.resolve(); + } + }); + } + }).on("cycle", function(event) { + console.log("gif " + String(event.target)); + }).on("complete", function() { + callback(null, this.filter("fastest").pluck("name")); + }).run(); } }, function(err, results) { assert(!err, err); diff --git a/tests/random.js b/tests/random.js index 0dd30606..4df63bca 100755 --- a/tests/random.js +++ b/tests/random.js @@ -1,13 +1,15 @@ var sharp = require("../index"); var fs = require("fs"); +var path = require("path"); var imagemagick = require("imagemagick"); var gm = require("gm"); var async = require("async"); var assert = require("assert"); var Benchmark = require("benchmark"); -var inputJpg = __dirname + "/2569067123_aca715a2ee_o.jpg"; // http://www.flickr.com/photos/grizdave/2569067123/ -var outputJpg = __dirname + "/output.jpg"; +var fixturesPath = path.join(__dirname, "fixtures"); +var inputJpg = path.join(fixturesPath, "2569067123_aca715a2ee_o.jpg"); // http://www.flickr.com/photos/grizdave/2569067123/ +var outputJpg = path.join(fixturesPath, "output.jpg"); var min = 320; var max = 960; diff --git a/tests/unit.js b/tests/unit.js index ea611ad9..05222755 100755 --- a/tests/unit.js +++ b/tests/unit.js @@ -1,10 +1,13 @@ var sharp = require("../index"); +var path = require("path"); var imagemagick = require("imagemagick"); var assert = require("assert"); var async = require("async"); -var inputJpg = __dirname + "/2569067123_aca715a2ee_o.jpg"; // http://www.flickr.com/photos/grizdave/2569067123/ -var outputJpg = __dirname + "/output.jpg"; +var fixturesPath = path.join(__dirname, "fixtures"); + +var inputJpg = path.join(fixturesPath, "2569067123_aca715a2ee_o.jpg"); // http://www.flickr.com/photos/grizdave/2569067123/ +var outputJpg = path.join(fixturesPath, "output.jpg"); async.series([ // Resize with exact crop