From ba4c27af5ef5d9b5d79b76ec9fb070c7f6b5c429 Mon Sep 17 00:00:00 2001 From: juergba Date: Sun, 30 Dec 2018 20:50:19 +0100 Subject: [PATCH 1/3] runner: basic events test --- .../runner/runner-events-basic.fixture.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test/integration/fixtures/runner/runner-events-basic.fixture.js diff --git a/test/integration/fixtures/runner/runner-events-basic.fixture.js b/test/integration/fixtures/runner/runner-events-basic.fixture.js new file mode 100644 index 0000000000..c3af104a9b --- /dev/null +++ b/test/integration/fixtures/runner/runner-events-basic.fixture.js @@ -0,0 +1,19 @@ +'use strict'; +var Runner = require('../../../../lib/runner.js'); +var assert = require('assert'); + +// var emitOrder = ['start', 'suite', 'suite', 'hook', 'hook end', ]; +var realEmit = Runner.prototype.emit; +Runner.prototype.emit = function(event, ...args) { + console.log(`emit: ${event}`); + // assert.equal(emitOrder.shift(), event); + return realEmit.call(this, event, ...args); +}; + +describe('suite', function() { + before('before', function() {}); + beforeEach('beforeEach', function() {}); + it('test', function() {}); + after('after', function() {}); + afterEach('afterEach', function() {}); +}); From d36470975466976b23a04ebacc3bca04d2a951ff Mon Sep 17 00:00:00 2001 From: juergba Date: Tue, 1 Jan 2019 17:32:03 +0100 Subject: [PATCH 2/3] tests basic, bail, retries --- test/integration/events.spec.js | 59 +++++++++++++++++++ .../fixtures/runner/events-bail.fixture.js | 29 +++++++++ .../fixtures/runner/events-basic.fixture.js | 28 +++++++++ .../fixtures/runner/events-retries.fixture.js | 27 +++++++++ 4 files changed, 143 insertions(+) create mode 100644 test/integration/events.spec.js create mode 100644 test/integration/fixtures/runner/events-bail.fixture.js create mode 100644 test/integration/fixtures/runner/events-basic.fixture.js create mode 100644 test/integration/fixtures/runner/events-retries.fixture.js diff --git a/test/integration/events.spec.js b/test/integration/events.spec.js new file mode 100644 index 0000000000..dc08a57381 --- /dev/null +++ b/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(); + } + ); + }); + }); +}); diff --git a/test/integration/fixtures/runner/events-bail.fixture.js b/test/integration/fixtures/runner/events-bail.fixture.js new file mode 100644 index 0000000000..3a345f8169 --- /dev/null +++ b/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() {}); +}); diff --git a/test/integration/fixtures/runner/events-basic.fixture.js b/test/integration/fixtures/runner/events-basic.fixture.js new file mode 100644 index 0000000000..81c55a8bb4 --- /dev/null +++ b/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() {}); +}); diff --git a/test/integration/fixtures/runner/events-retries.fixture.js b/test/integration/fixtures/runner/events-retries.fixture.js new file mode 100644 index 0000000000..a4547c8fa8 --- /dev/null +++ b/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() {}); +}); From 206eb814213c1e9b9ee197d4e93cef7f00b74527 Mon Sep 17 00:00:00 2001 From: juergba Date: Tue, 1 Jan 2019 17:52:51 +0100 Subject: [PATCH 3/3] delete first test --- .../runner/runner-events-basic.fixture.js | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 test/integration/fixtures/runner/runner-events-basic.fixture.js diff --git a/test/integration/fixtures/runner/runner-events-basic.fixture.js b/test/integration/fixtures/runner/runner-events-basic.fixture.js deleted file mode 100644 index c3af104a9b..0000000000 --- a/test/integration/fixtures/runner/runner-events-basic.fixture.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -var Runner = require('../../../../lib/runner.js'); -var assert = require('assert'); - -// var emitOrder = ['start', 'suite', 'suite', 'hook', 'hook end', ]; -var realEmit = Runner.prototype.emit; -Runner.prototype.emit = function(event, ...args) { - console.log(`emit: ${event}`); - // assert.equal(emitOrder.shift(), event); - return realEmit.call(this, event, ...args); -}; - -describe('suite', function() { - before('before', function() {}); - beforeEach('beforeEach', function() {}); - it('test', function() {}); - after('after', function() {}); - afterEach('afterEach', function() {}); -});