From cfdb0f2278e2467a4fc6de0f35349e8e869a5359 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Mon, 19 Dec 2016 10:58:25 +0100 Subject: [PATCH] Refactors batch-test.js. Why: * Wasn't too DRY anymore. --- test/batch-test.js | 81 +++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/test/batch-test.js b/test/batch-test.js index 3bb6d933..44000605 100644 --- a/test/batch-test.js +++ b/test/batch-test.js @@ -1,76 +1,74 @@ +var assert = require('assert'); var exec = require('child_process').exec; -var vows = require('vows'); -var path = require('path'); var fs = require('fs'); -var assert = require('assert'); +var path = require('path'); + var CleanCSS = require('../index'); +var vows = require('vows'); var lineBreak = require('os').EOL; -if (process.platform == 'win32') +if (process.platform == 'win32') { return; +} + +function assertEqualLineByLine(expected, actual) { + var expectedLines = expected.split(lineBreak); + var actualLines = actual.split(lineBreak); -var batchContexts = function () { + expectedLines.forEach(function (line, i) { + assert.equal(line, actualLines[i]); + }); +} + +function batchContexts() { var context = {}; var dir = path.join(__dirname, 'fixtures'); + fs.readdirSync(dir).forEach(function (filename) { - if (filename.indexOf('.css') == -1 || /min.css$/.exec(filename) || !fs.statSync(path.join(dir, filename)).isFile()) - return; var testName = filename.split('.')[0]; + var isIE7Mode = filename.indexOf('ie7') > 0; + + if (filename.indexOf('.css') == -1 || /min.css$/.exec(filename) || !fs.statSync(path.join(dir, filename)).isFile()) { + return; + } context[testName] = { topic: function () { - var plainPath = path.join('test', 'fixtures', testName + '.css'); + var inputPath = path.join('test', 'fixtures', testName + '.css'); var minPath = path.join(__dirname, 'fixtures', testName + '-min.css'); return { - plain: '@import "' + plainPath + '";', - preminified: fs.readFileSync(minPath, 'utf8').trim() + input: '@import "' + inputPath + '";', + preoptimized: fs.readFileSync(minPath, 'utf8').trim() }; }, 'minifying': { topic: function (data) { - var self = this; - new CleanCSS({ - keepBreaks: true - }).minify(data.plain, function (errors, minified) { - self.callback(errors, minified.styles, data); - }); + compatibility: isIE7Mode ? 'ie7' : '*', + keepBreaks: true, + sourceMap: true + }).minify(data.input, this.callback.bind(null, data)); }, - 'should output right content': function (errors, minified, data) { - var minifiedRules = minified.split(lineBreak); - var preminifiedRules = data.preminified.split(lineBreak); - - minifiedRules.forEach(function (line, i) { - assert.equal(line, preminifiedRules[i]); - }); + 'outputs right content': function (data, error, output) { + assertEqualLineByLine(data.preoptimized, output.styles); } }, 'minifying with source maps': { topic: function (data) { - var self = this; - new CleanCSS({ + compatibility: isIE7Mode ? 'ie7' : '*', keepBreaks: true, sourceMap: true - }).minify(data.plain, function (errors, minified) { - self.callback(errors, minified.styles, data); - }); + }).minify(data.input, this.callback.bind(null, data)); }, - 'should output right content': function (errors, minified, data) { - var minifiedTokens = minified.split(lineBreak); - var preminifiedTokens = data.preminified.split(lineBreak); - - minifiedTokens.forEach(function (line, i) { - assert.equal(line, preminifiedTokens[i]); - }); + 'outputs right content': function (data, error, output) { + assertEqualLineByLine(data.preoptimized, output.styles); } }, 'minifying via CLI': { 'topic': function (data) { - var isIE7Mode = filename.indexOf('ie7') > 0; - exec( '__DIRECT__=1 ./bin/cleancss -b ' + (isIE7Mode ? '-c ie7 ' : '') + path.join(dir, filename), { maxBuffer: 500 * 1024 }, @@ -78,19 +76,14 @@ var batchContexts = function () { ); }, 'outputs right content': function (data, error, stdout) { - var optimizedLines = stdout.split(lineBreak); - var preoptimizedLines = data.preminified.split(lineBreak); - - optimizedLines.forEach(function (line, i) { - assert.equal(line, preoptimizedLines[i]); - }); + assertEqualLineByLine(data.preoptimized, stdout); } } }; }); return context; -}; +} vows.describe('clean-batch') .addBatch(batchContexts()) -- 2.34.1