grunt-parallelize
Version:
Parallelize your task.
121 lines (103 loc) • 3.35 kB
JavaScript
;
require('mocha');
var expect = require('expect.js');
var Parallelizer = require('../lib/parallelizer');
describe('Parallelizer', function() {
var sut, grunt, task;
beforeEach(function() {
grunt = {};
task = {};
sut = new Parallelizer(grunt, task);
});
it('constructor', function() {
expect(sut).to.be.ok();
});
describe('#filterOutput_', function() {
it('filter out its own log ', function() {
var output = [
'Running "parallelize:taskname:targetname" (parallelize) task',
'',
'Running "taskname:targetname" (taskname) task',
].join('\n');
var actual = sut.filterOutput_(output, 'taskname', 'targetname');
var expected = 'Running "taskname:targetname" (taskname) task';
expect(actual).to.be(expected);
});
it('filter out its own log (color)', function() {
var output = [
'\u001b[4mRunning "parallelize:taskname:targetname" (parallelize) task\u001b[24m',
'',
'\u001b[4mRunning "taskname:targetname" (taskname) task\u001b[24m'
].join('\n');
var actual = sut.filterOutput_(output, 'taskname', 'targetname');
var expected = '\u001b[4mRunning "taskname:targetname" (taskname) task\u001b[24m';
expect(actual).to.be(expected);
});
});
describe('#getSplittedFiles_', function() {
var filesSrc, processes;
beforeEach(function() {
sut.getNormalizedFiles_ = function() {
return filesSrc;
};
sut.getProcesses_ = function() {
return processes;
};
});
it('throws if "processes" option is negative', function() {
filesSrc = [{src: [1, 2, 3]}];
processes = -1;
expect(function() {
sut.getSplittedFiles_(null, null);
}).to.throwException();
});
describe('filesSrc has no items', function() {
beforeEach(function() {
filesSrc = [];
});
it('returns empty array', function() {
processes = 2;
expect(sut.getSplittedFiles_(null, null)).to.be.empty();
});
});
describe('filesSrc has 4 items', function() {
beforeEach(function() {
filesSrc = [{src: [1, 2, 3, 4]}];
});
it('splits into 0 []', function() {
processes = 0;
expect(sut.getSplittedFiles_(null, null)).to.be.empty();
});
it('splits into 1 [4]', function() {
processes = 1;
expect(sut.getSplittedFiles_(null, null)).to.eql([
{src: [1, 2, 3, 4]}
]);
});
it('splits into 2 [2, 2]', function() {
processes = 2;
expect(sut.getSplittedFiles_(null, null)).to.eql([
{src: [1, 2]}, {src: [3, 4]}
]);
});
it('splits into 3 [2, 1, 1]', function() {
processes = 3;
expect(sut.getSplittedFiles_(null, null)).to.eql([
{src: [1, 2]}, {src: [3]}, {src: [4]}
]);
});
it('splits into 4 [1, 1, 1, 1]', function() {
processes = 4;
expect(sut.getSplittedFiles_(null, null)).to.eql([
{src: [1]}, {src: [2]}, {src: [3]}, {src: [4]}
]);
});
it('splits into 5 [1, 1, 1, 1]', function() {
processes = 5;
expect(sut.getSplittedFiles_(null, null)).to.eql([
{src: [1]}, {src: [2]}, {src: [3]}, {src: [4]}
]);
});
});
});
});