Skip to content

Commit

Permalink
fix slow test properly fot dot reporter
Browse files Browse the repository at this point in the history
Signed-off-by: Outsider <outsideris@gmail.com>
  • Loading branch information
outsideris committed Oct 1, 2018
1 parent 04469bf commit 3a3c8d7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 38 deletions.
9 changes: 4 additions & 5 deletions lib/reporters/dot.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

var Base = require('./base');
var inherits = require('../utils').inherits;
var color = Base.color;

/**
* Expose `Dot`.
Expand Down Expand Up @@ -41,25 +40,25 @@ function Dot(runner) {
if (++n % width === 0) {
process.stdout.write('\n ');
}
process.stdout.write(color('pending', Base.symbols.comma));
process.stdout.write(Base.color('pending', Base.symbols.comma));
});

runner.on('pass', function(test) {
if (++n % width === 0) {
process.stdout.write('\n ');
}
if (test.speed === 'slow') {
process.stdout.write(color('bright yellow', Base.symbols.dot));
process.stdout.write(Base.color('bright yellow', Base.symbols.dot));
} else {
process.stdout.write(color(test.speed, Base.symbols.dot));
process.stdout.write(Base.color(test.speed, Base.symbols.dot));
}
});

runner.on('fail', function() {
if (++n % width === 0) {
process.stdout.write('\n ');
}
process.stdout.write(color('fail', Base.symbols.bang));
process.stdout.write(Base.color('fail', Base.symbols.bang));
});

runner.once('end', function() {
Expand Down
86 changes: 53 additions & 33 deletions test/reporters/dot.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,50 @@ var createMockRunner = require('./helpers.js').createMockRunner;

describe('Dot reporter', function() {
var stdout;
var stdoutWrite;
var runner;
var useColors;
var windowWidth;
var color;

beforeEach(function() {
stdout = [];
stdoutWrite = process.stdout.write;
function runReporter(stubSelf, runner) {
// Reassign stream in order to make a copy of all reporter output
var stdoutWrite = process.stdout.write;
process.stdout.write = function(string, enc, callback) {
stdout.push(string);
stdoutWrite.call(process.stdout, string, enc, callback);
};

// Invoke reporter
Dot.call(stubSelf, runner);

// Revert stream reassignment here so reporter output
// can't be corrupted if any test assertions throw
process.stdout.write = stdoutWrite;
}

beforeEach(function() {
stdout = [];
useColors = Base.useColors;
windowWidth = Base.window.width;
color = Base.color;
Base.useColors = false;
Base.window.width = 0;
Base.color = function(type, str) {
return type.replace(/ /g, '-') + '_' + str;
};
});

afterEach(function() {
Base.useColors = useColors;
Base.window.width = windowWidth;
process.stdout.write = stdoutWrite;
Base.color = color;
runner = undefined;
});

describe('on start', function() {
it('should return a new line', function() {
runner = createMockRunner('start', 'start');
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
runReporter({epilogue: function() {}}, runner);
var expectedArray = ['\n'];
expect(stdout, 'to equal', expectedArray);
});
Expand All @@ -48,18 +63,16 @@ describe('Dot reporter', function() {
});
it('should return a new line and then a coma', function() {
runner = createMockRunner('pending', 'pending');
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = ['\n ', Base.symbols.comma];
runReporter({epilogue: function() {}}, runner);
var expectedArray = ['\n ', 'pending_' + Base.symbols.comma];
expect(stdout, 'to equal', expectedArray);
});
});
describe('if window width is equal to or less than 1', function() {
it('should return a coma', function() {
runner = createMockRunner('pending', 'pending');
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = [Base.symbols.comma];
runReporter({epilogue: function() {}}, runner);
var expectedArray = ['pending_' + Base.symbols.comma];
expect(stdout, 'to equal', expectedArray);
});
});
Expand All @@ -78,30 +91,40 @@ describe('Dot reporter', function() {
describe('if test speed is fast', function() {
it('should return a new line and then a dot', function() {
runner = createMockRunner('pass', 'pass', null, null, test);
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = ['\n ', Base.symbols.dot];
runReporter({epilogue: function() {}}, runner);
expect(test.speed, 'to equal', 'fast');
var expectedArray = ['\n ', 'fast_' + Base.symbols.dot];
expect(stdout, 'to equal', expectedArray);
});
});
});
describe('if window width is equal to or less than 1', function() {
describe('if test speed is fast', function() {
it('should return a dot', function() {
it('should return a grey dot', function() {
runner = createMockRunner('pass', 'pass', null, null, test);
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = [Base.symbols.dot];
runReporter({epilogue: function() {}}, runner);
expect(test.speed, 'to equal', 'fast');
var expectedArray = ['fast_' + Base.symbols.dot];
expect(stdout, 'to equal', expectedArray);
});
});
describe('if test speed is slow', function() {
it('should return a dot', function() {
describe('if test speed is medium', function() {
it('should return a yellow dot', function() {
test.duration = 2;
runner = createMockRunner('pass', 'pass', null, null, test);
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = [Base.symbols.dot];
runReporter({epilogue: function() {}}, runner);
expect(test.speed, 'to equal', 'medium');
var expectedArray = ['medium_' + Base.symbols.dot];
expect(stdout, 'to equal', expectedArray);
});
});
describe('if test speed is slow', function() {
it('should return a bright yellow dot', function() {
test.duration = 3;
runner = createMockRunner('pass', 'pass', null, null, test);
runReporter({epilogue: function() {}}, runner);
expect(test.speed, 'to equal', 'slow');
var expectedArray = ['bright-yellow_' + Base.symbols.dot];
expect(stdout, 'to equal', expectedArray);
});
});
Expand All @@ -119,18 +142,16 @@ describe('Dot reporter', function() {
});
it('should return a new line and then an exclamation mark', function() {
runner = createMockRunner('fail', 'fail', null, null, test);
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = ['\n ', Base.symbols.bang];
runReporter({epilogue: function() {}}, runner);
var expectedArray = ['\n ', 'fail_' + Base.symbols.bang];
expect(stdout, 'to equal', expectedArray);
});
});
describe('if window width is equal to or less than 1', function() {
it('should return an exclamation mark', function() {
runner = createMockRunner('fail', 'fail', null, null, test);
Dot.call({epilogue: function() {}}, runner);
process.stdout.write = stdoutWrite;
var expectedArray = [Base.symbols.bang];
runReporter({epilogue: function() {}}, runner);
var expectedArray = ['fail_' + Base.symbols.bang];
expect(stdout, 'to equal', expectedArray);
});
});
Expand All @@ -142,8 +163,7 @@ describe('Dot reporter', function() {
var epilogue = function() {
epilogueCalled = true;
};
Dot.call({epilogue: epilogue}, runner);
process.stdout.write = stdoutWrite;
runReporter({epilogue: epilogue}, runner);
expect(epilogueCalled, 'to be', true);
});
});
Expand Down

0 comments on commit 3a3c8d7

Please sign in to comment.