Skip to content
This repository was archived by the owner on Dec 4, 2023. It is now read-only.

Commit 0a91f10

Browse files
juergbaboneskull
authored andcommitted
Add test for Runner event order (mochajs#3642)
* runner: basic events test * tests basic, bail, retries * delete first test
1 parent b3463e9 commit 0a91f10

File tree

4 files changed

+143
-0
lines changed

4 files changed

+143
-0
lines changed

test/integration/events.spec.js

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
'use strict';
2+
3+
var helpers = require('./helpers');
4+
var runMochaJSON = helpers.runMochaJSON;
5+
6+
describe('event order', function() {
7+
describe('trivial test case', function() {
8+
it('should assert trivial event order', function(done) {
9+
runMochaJSON('runner/events-basic.fixture.js', [], function(err, res) {
10+
if (err) {
11+
done(err);
12+
return;
13+
}
14+
expect(res, 'to have passed')
15+
.and('to have passed test count', 2)
16+
.and('to have passed test order', 'test A', 'test B')
17+
.and('to have failed test count', 0);
18+
done();
19+
});
20+
});
21+
});
22+
23+
describe('--bail test case', function() {
24+
it('should assert --bail event order', function(done) {
25+
runMochaJSON('runner/events-bail.fixture.js', ['--bail'], function(
26+
err,
27+
res
28+
) {
29+
if (err) {
30+
done(err);
31+
return;
32+
}
33+
expect(res, 'to have failed with error', 'error test A')
34+
.and('to have failed test count', 1)
35+
.and('to have passed test count', 0);
36+
done();
37+
});
38+
});
39+
});
40+
41+
describe('--retries test case', function() {
42+
it('should assert --retries event order', function(done) {
43+
runMochaJSON(
44+
'runner/events-retries.fixture.js',
45+
['--retries', '1'],
46+
function(err, res) {
47+
if (err) {
48+
done(err);
49+
return;
50+
}
51+
expect(res, 'to have failed with error', 'error test A')
52+
.and('to have failed test count', 1)
53+
.and('to have passed test count', 0);
54+
done();
55+
}
56+
);
57+
});
58+
});
59+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use strict';
2+
var Runner = require('../../../../lib/runner.js');
3+
var assert = require('assert');
4+
5+
var emitOrder = [
6+
'suite'/* incorrect order*/, 'start', 'suite',
7+
'hook', 'hook end', 'test', 'hook', 'hook end', 'fail', 'test end', 'hook', 'hook end',
8+
'hook', 'hook end', 'suite end', 'suite end', 'end'
9+
];
10+
11+
var realEmit = Runner.prototype.emit;
12+
Runner.prototype.emit = function(event, ...args) {
13+
// console.log(`emit: ${event}`);
14+
assert.strictEqual(event, emitOrder.shift());
15+
return realEmit.call(this, event, ...args);
16+
};
17+
18+
describe('suite A', function() {
19+
before('before', function() {});
20+
beforeEach('beforeEach', function() {});
21+
it('test A', function() {
22+
throw new Error('error test A');
23+
});
24+
describe('suite B', function() {
25+
it('test B', function() {});
26+
});
27+
afterEach('afterEach', function() {});
28+
after('after', function() {});
29+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict';
2+
var Runner = require('../../../../lib/runner.js');
3+
var assert = require('assert');
4+
5+
var emitOrder = [
6+
'suite'/* incorrect order*/, 'start', 'suite',
7+
'hook', 'hook end', 'test', 'hook', 'hook end', 'pass', 'test end', 'hook', 'hook end',
8+
'suite', 'test', 'hook', 'hook end', 'pass', 'test end', 'hook', 'hook end',
9+
'suite end', 'hook', 'hook end', 'suite end', 'suite end', 'end'
10+
];
11+
12+
var realEmit = Runner.prototype.emit;
13+
Runner.prototype.emit = function(event, ...args) {
14+
// console.log(`emit: ${event}`);
15+
assert.strictEqual(event, emitOrder.shift());
16+
return realEmit.call(this, event, ...args);
17+
};
18+
19+
describe('suite A', function() {
20+
before('before', function() {});
21+
beforeEach('beforeEach', function() {});
22+
it('test A', function() {});
23+
describe('suite B', function() {
24+
it('test B', function() {});
25+
});
26+
afterEach('afterEach', function() {});
27+
after('after', function() {});
28+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
'use strict';
2+
var Runner = require('../../../../lib/runner.js');
3+
var assert = require('assert');
4+
5+
var emitOrder = [
6+
'suite'/* incorrect order*/, 'start', 'suite',
7+
'hook', 'hook end', 'test', 'hook', 'hook end', 'retry', 'hook', 'hook end',
8+
'test', 'hook', 'hook end', 'fail', 'test end', 'hook', 'hook end', 'hook', 'hook end',
9+
'suite end', 'suite end', 'end'
10+
];
11+
12+
var realEmit = Runner.prototype.emit;
13+
Runner.prototype.emit = function(event, ...args) {
14+
// console.log(`emit: ${event}`);
15+
assert.strictEqual(event, emitOrder.shift());
16+
return realEmit.call(this, event, ...args);
17+
};
18+
19+
describe('suite A', function() {
20+
before('before', function() {});
21+
beforeEach('beforeEach', function() {});
22+
it('test A', function() {
23+
throw new Error('error test A');
24+
});
25+
afterEach('afterEach', function() {});
26+
after('after', function() {});
27+
});

0 commit comments

Comments
 (0)