From 6dd4bde0488311aab9dd50e2afedaefeb9da4a45 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Mon, 8 Mar 2021 12:15:24 -0800 Subject: [PATCH 1/3] fix: make it().timeout() work again --- lib/mocha.js | 34 +++++++++++++------ .../fixtures/timeout-override-it.fixture.js | 7 ++++ test/integration/timeout.spec.js | 14 ++++++++ 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 test/integration/fixtures/timeout-override-it.fixture.js diff --git a/lib/mocha.js b/lib/mocha.js index c1bd896b70..432507f782 100644 --- a/lib/mocha.js +++ b/lib/mocha.js @@ -98,34 +98,46 @@ exports.Test = require('./test'); let currentContext; exports.afterEach = function(...args) { - (currentContext.afterEach || currentContext.teardown).apply(this, args); + return (currentContext.afterEach || currentContext.teardown).apply( + this, + args + ); }; exports.after = function(...args) { - (currentContext.after || currentContext.suiteTeardown).apply(this, args); + return (currentContext.after || currentContext.suiteTeardown).apply( + this, + args + ); }; exports.beforeEach = function(...args) { - (currentContext.beforeEach || currentContext.setup).apply(this, args); + return (currentContext.beforeEach || currentContext.setup).apply(this, args); }; exports.before = function(...args) { - (currentContext.before || currentContext.suiteSetup).apply(this, args); + return (currentContext.before || currentContext.suiteSetup).apply(this, args); }; exports.describe = function(...args) { - (currentContext.describe || currentContext.suite).apply(this, args); + return (currentContext.describe || currentContext.suite).apply(this, args); }; exports.describe.only = function(...args) { - (currentContext.describe || currentContext.suite).only.apply(this, args); + return (currentContext.describe || currentContext.suite).only.apply( + this, + args + ); }; exports.describe.skip = function(...args) { - (currentContext.describe || currentContext.suite).skip.apply(this, args); + return (currentContext.describe || currentContext.suite).skip.apply( + this, + args + ); }; exports.it = function(...args) { - (currentContext.it || currentContext.test).apply(this, args); + return (currentContext.it || currentContext.test).apply(this, args); }; exports.it.only = function(...args) { - (currentContext.it || currentContext.test).only.apply(this, args); + return (currentContext.it || currentContext.test).only.apply(this, args); }; exports.it.skip = function(...args) { - ( + return ( currentContext.xit || (currentContext.test && currentContext.test.skip) ).apply(this, args); @@ -139,7 +151,7 @@ exports.suite = exports.describe; exports.teardown = exports.afterEach; exports.test = exports.it; exports.run = function(...args) { - currentContext.run.apply(this, args); + return currentContext.run.apply(this, args); }; /** diff --git a/test/integration/fixtures/timeout-override-it.fixture.js b/test/integration/fixtures/timeout-override-it.fixture.js new file mode 100644 index 0000000000..90da0235d0 --- /dev/null +++ b/test/integration/fixtures/timeout-override-it.fixture.js @@ -0,0 +1,7 @@ +'use strict'; + +describe('timeout override', function() { + it('should allow using it().timeout()', function(done) { + setTimeout(done, 1); + }).timeout(1000); +}); diff --git a/test/integration/timeout.spec.js b/test/integration/timeout.spec.js index 0f98467acc..e716ace865 100644 --- a/test/integration/timeout.spec.js +++ b/test/integration/timeout.spec.js @@ -29,4 +29,18 @@ describe('this.timeout()', function() { done(); }); }); + + it('should allow using it().timeout()', function(done) { + run('timeout-override-it.fixture.js', args, function(err, res) { + if (err) { + done(err); + return; + } + assert.strictEqual(res.stats.pending, 0); + assert.strictEqual(res.stats.passes, 1); + assert.strictEqual(res.stats.failures, 0); + assert.strictEqual(res.code, 0); + done(); + }); + }); }); From a94583936cc785bc6d194ace0d54ade9ec29a7a7 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Tue, 9 Mar 2021 10:14:35 -0800 Subject: [PATCH 2/3] test: require mocha in fixture --- test/integration/fixtures/timeout-override-it.fixture.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/integration/fixtures/timeout-override-it.fixture.js b/test/integration/fixtures/timeout-override-it.fixture.js index 90da0235d0..ac38305711 100644 --- a/test/integration/fixtures/timeout-override-it.fixture.js +++ b/test/integration/fixtures/timeout-override-it.fixture.js @@ -1,5 +1,7 @@ 'use strict'; +const {describe, it} = require('../../../index.js'); + describe('timeout override', function() { it('should allow using it().timeout()', function(done) { setTimeout(done, 1); From 080699f295822ae05153e3d1e9f3e0e21cf3a2b4 Mon Sep 17 00:00:00 2001 From: Alexander Fenster Date: Wed, 10 Mar 2021 09:41:02 -0800 Subject: [PATCH 3/3] PR feedback --- lib/mocha.js | 5 +---- .../fixtures/common-js-require.fixture.js | 4 ++-- .../fixtures/timeout-override-it.fixture.js | 9 --------- test/integration/timeout.spec.js | 14 -------------- 4 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 test/integration/fixtures/timeout-override-it.fixture.js diff --git a/lib/mocha.js b/lib/mocha.js index 432507f782..fac1697c11 100644 --- a/lib/mocha.js +++ b/lib/mocha.js @@ -137,10 +137,7 @@ exports.it.only = function(...args) { return (currentContext.it || currentContext.test).only.apply(this, args); }; exports.it.skip = function(...args) { - return ( - currentContext.xit || - (currentContext.test && currentContext.test.skip) - ).apply(this, args); + return (currentContext.it || currentContext.test).skip.apply(this, args); }; exports.xdescribe = exports.describe.skip; exports.xit = exports.it.skip; diff --git a/test/integration/fixtures/common-js-require.fixture.js b/test/integration/fixtures/common-js-require.fixture.js index 0573f6f0f9..17a0e62f61 100644 --- a/test/integration/fixtures/common-js-require.fixture.js +++ b/test/integration/fixtures/common-js-require.fixture.js @@ -44,13 +44,13 @@ suite('root suite', () => { describe.only('describe only', () => { it('it', () => { console.log('running it'); - }); + }).timeout(1000); xit('it', () => { console.log('running xit'); }); it.only('it.only', () => { console.log('running it.only'); - }); + }).retries(2); it.skip('it.skip', () => { console.log('running it.skip'); }); diff --git a/test/integration/fixtures/timeout-override-it.fixture.js b/test/integration/fixtures/timeout-override-it.fixture.js deleted file mode 100644 index ac38305711..0000000000 --- a/test/integration/fixtures/timeout-override-it.fixture.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const {describe, it} = require('../../../index.js'); - -describe('timeout override', function() { - it('should allow using it().timeout()', function(done) { - setTimeout(done, 1); - }).timeout(1000); -}); diff --git a/test/integration/timeout.spec.js b/test/integration/timeout.spec.js index e716ace865..0f98467acc 100644 --- a/test/integration/timeout.spec.js +++ b/test/integration/timeout.spec.js @@ -29,18 +29,4 @@ describe('this.timeout()', function() { done(); }); }); - - it('should allow using it().timeout()', function(done) { - run('timeout-override-it.fixture.js', args, function(err, res) { - if (err) { - done(err); - return; - } - assert.strictEqual(res.stats.pending, 0); - assert.strictEqual(res.stats.passes, 1); - assert.strictEqual(res.stats.failures, 0); - assert.strictEqual(res.code, 0); - done(); - }); - }); });