diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2016-10-15 12:12:20 -0400 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2016-10-15 20:03:12 -0400 |
commit | 74c01fe6d46d978eeabc64716634dee1beb77c68 (patch) | |
tree | c5540831b6e55034871ec809195b82b5ad19d19a | |
parent | 509e3a796fe4689f43206178ff5b899c71e96ed8 (diff) | |
download | async-74c01fe6d46d978eeabc64716634dee1beb77c68.tar.gz |
Add short circuit test for every
-rw-r--r-- | lib/internal/createTester.js | 5 | ||||
-rw-r--r-- | mocha_test/every.js | 27 |
2 files changed, 30 insertions, 2 deletions
diff --git a/lib/internal/createTester.js b/lib/internal/createTester.js index 36223e6..b37d0f1 100644 --- a/lib/internal/createTester.js +++ b/lib/internal/createTester.js @@ -18,9 +18,10 @@ export default function _createTester(eachfn, check, getResult) { if (err) cb(err); else cb(err, getResult(true, x)); cb = iteratee = false; - return callback(err, breakLoop); + callback(err, breakLoop); + } else { + callback(); } - callback(); }); } if (arguments.length > 3) { diff --git a/mocha_test/every.js b/mocha_test/every.js index ed4693e..39ae51c 100644 --- a/mocha_test/every.js +++ b/mocha_test/every.js @@ -1,5 +1,6 @@ var async = require('../lib'); var expect = require('chai').expect; +var _ = require('lodash'); describe("every", function () { @@ -83,6 +84,32 @@ describe("every", function () { }); }); + it('everySeries doesn\'t cause stack overflow (#1293)', function(done) { + var arr = _.range(10000); + let calls = 0; + async.everySeries(arr, function(data, cb) { + calls += 1; + async.setImmediate(_.partial(cb, null, false)); + }, function(err) { + expect(err).to.equal(null); + expect(calls).to.equal(1); + done(); + }); + }); + + it('everyLimit doesn\'t cause stack overflow (#1293)', function(done) { + var arr = _.range(10000); + let calls = 0; + async.everyLimit(arr, 100, function(data, cb) { + calls += 1; + async.setImmediate(_.partial(cb, null, false)); + }, function(err) { + expect(err).to.equal(null); + expect(calls).to.equal(100); + done(); + }); + }); + it('all alias', function(){ expect(async.all).to.equal(async.every); }); |