78 lines
1.6 KiB
JavaScript
78 lines
1.6 KiB
JavaScript
'use strict';
|
|
/* eslint-env mocha */
|
|
var assert = require('assert');
|
|
var execFile = require('child_process').execFile;
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var BinBuild = require('bin-build');
|
|
var binCheck = require('bin-check');
|
|
var compareSize = require('compare-size');
|
|
var mkdirp = require('mkdirp');
|
|
var rimraf = require('rimraf');
|
|
|
|
var tmp = path.join(__dirname, 'tmp');
|
|
|
|
beforeEach(function () {
|
|
mkdirp.sync(tmp);
|
|
});
|
|
|
|
afterEach(function () {
|
|
rimraf.sync(tmp);
|
|
});
|
|
|
|
it('rebuild the jpegtran binaries', function (cb) {
|
|
var cfg = [
|
|
'./configure --disable-shared',
|
|
'--prefix="' + tmp + '" --bindir="' + tmp + '"'
|
|
].join(' ');
|
|
|
|
new BinBuild()
|
|
.src('https://downloads.sourceforge.net/project/libjpeg-turbo/1.5.1/libjpeg-turbo-1.5.1.tar.gz')
|
|
.cmd(cfg)
|
|
.cmd('make install')
|
|
.run(function (err) {
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
|
|
assert(fs.statSync(path.join(tmp, 'jpegtran')).isFile());
|
|
cb();
|
|
});
|
|
});
|
|
|
|
it('return path to binary and verify that it is working', function () {
|
|
var args = [
|
|
'-outfile', path.join(tmp, 'test.jpg'),
|
|
path.join(__dirname, 'fixtures/test.jpg')
|
|
];
|
|
|
|
return binCheck(require('../'), args).then(assert);
|
|
});
|
|
|
|
it('minify a JPG', function (cb) {
|
|
var src = path.join(__dirname, 'fixtures/test.jpg');
|
|
var dest = path.join(tmp, 'test.jpg');
|
|
var args = [
|
|
'-outfile', dest,
|
|
src
|
|
];
|
|
|
|
execFile(require('../'), args, function (err) {
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
|
|
compareSize(src, dest, function (err, res) {
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
|
|
assert(res[dest] < res[src]);
|
|
cb();
|
|
});
|
|
});
|
|
});
|