Skip to content

Commit

Permalink
Add test for Runner event order (#3642)
Browse files Browse the repository at this point in the history
* runner: basic events test

* tests basic, bail, retries

* delete first test
  • Loading branch information
juergba authored and boneskull committed Jan 4, 2019
1 parent fc0507e commit cb1c6b0
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 0 deletions.
59 changes: 59 additions & 0 deletions test/integration/events.spec.js
@@ -0,0 +1,59 @@
'use strict';

var helpers = require('./helpers');
var runMochaJSON = helpers.runMochaJSON;

describe('event order', function() {
describe('trivial test case', function() {
it('should assert trivial event order', function(done) {
runMochaJSON('runner/events-basic.fixture.js', [], function(err, res) {
if (err) {
done(err);
return;
}
expect(res, 'to have passed')
.and('to have passed test count', 2)
.and('to have passed test order', 'test A', 'test B')
.and('to have failed test count', 0);
done();
});
});
});

describe('--bail test case', function() {
it('should assert --bail event order', function(done) {
runMochaJSON('runner/events-bail.fixture.js', ['--bail'], function(
err,
res
) {
if (err) {
done(err);
return;
}
expect(res, 'to have failed with error', 'error test A')
.and('to have failed test count', 1)
.and('to have passed test count', 0);
done();
});
});
});

describe('--retries test case', function() {
it('should assert --retries event order', function(done) {
runMochaJSON(
'runner/events-retries.fixture.js',
['--retries', '1'],
function(err, res) {
if (err) {
done(err);
return;
}
expect(res, 'to have failed with error', 'error test A')
.and('to have failed test count', 1)
.and('to have passed test count', 0);
done();
}
);
});
});
});
29 changes: 29 additions & 0 deletions test/integration/fixtures/runner/events-bail.fixture.js
@@ -0,0 +1,29 @@
'use strict';
var Runner = require('../../../../lib/runner.js');
var assert = require('assert');

var emitOrder = [
'suite'/* incorrect order*/, 'start', 'suite',
'hook', 'hook end', 'test', 'hook', 'hook end', 'fail', 'test end', 'hook', 'hook end',
'hook', 'hook end', 'suite end', 'suite end', 'end'
];

var realEmit = Runner.prototype.emit;
Runner.prototype.emit = function(event, ...args) {
// console.log(`emit: ${event}`);
assert.strictEqual(event, emitOrder.shift());
return realEmit.call(this, event, ...args);
};

describe('suite A', function() {
before('before', function() {});
beforeEach('beforeEach', function() {});
it('test A', function() {
throw new Error('error test A');
});
describe('suite B', function() {
it('test B', function() {});
});
afterEach('afterEach', function() {});
after('after', function() {});
});
28 changes: 28 additions & 0 deletions test/integration/fixtures/runner/events-basic.fixture.js
@@ -0,0 +1,28 @@
'use strict';
var Runner = require('../../../../lib/runner.js');
var assert = require('assert');

var emitOrder = [
'suite'/* incorrect order*/, 'start', 'suite',
'hook', 'hook end', 'test', 'hook', 'hook end', 'pass', 'test end', 'hook', 'hook end',
'suite', 'test', 'hook', 'hook end', 'pass', 'test end', 'hook', 'hook end',
'suite end', 'hook', 'hook end', 'suite end', 'suite end', 'end'
];

var realEmit = Runner.prototype.emit;
Runner.prototype.emit = function(event, ...args) {
// console.log(`emit: ${event}`);
assert.strictEqual(event, emitOrder.shift());
return realEmit.call(this, event, ...args);
};

describe('suite A', function() {
before('before', function() {});
beforeEach('beforeEach', function() {});
it('test A', function() {});
describe('suite B', function() {
it('test B', function() {});
});
afterEach('afterEach', function() {});
after('after', function() {});
});
27 changes: 27 additions & 0 deletions test/integration/fixtures/runner/events-retries.fixture.js
@@ -0,0 +1,27 @@
'use strict';
var Runner = require('../../../../lib/runner.js');
var assert = require('assert');

var emitOrder = [
'suite'/* incorrect order*/, 'start', 'suite',
'hook', 'hook end', 'test', 'hook', 'hook end', 'retry', 'hook', 'hook end',
'test', 'hook', 'hook end', 'fail', 'test end', 'hook', 'hook end', 'hook', 'hook end',
'suite end', 'suite end', 'end'
];

var realEmit = Runner.prototype.emit;
Runner.prototype.emit = function(event, ...args) {
// console.log(`emit: ${event}`);
assert.strictEqual(event, emitOrder.shift());
return realEmit.call(this, event, ...args);
};

describe('suite A', function() {
before('before', function() {});
beforeEach('beforeEach', function() {});
it('test A', function() {
throw new Error('error test A');
});
afterEach('afterEach', function() {});
after('after', function() {});
});

0 comments on commit cb1c6b0

Please sign in to comment.