diff options
-rw-r--r-- | lib/auto.js | 5 | ||||
-rw-r--r-- | lib/autoInject.js | 2 | ||||
-rw-r--r-- | mocha_test/auto.js | 12 | ||||
-rw-r--r-- | mocha_test/autoInject.js | 12 |
4 files changed, 28 insertions, 3 deletions
diff --git a/lib/auto.js b/lib/auto.js index 4750eef..750a564 100644 --- a/lib/auto.js +++ b/lib/auto.js @@ -127,9 +127,10 @@ export default function (tasks, concurrency, callback) { var dependencies = task.slice(0, task.length - 1); var remainingDependencies = dependencies.length; - if (!remainingDependencies) { - enqueueTask(key, [task]); + if (remainingDependencies === 0) { + enqueueTask(key, task); readyToCheck.push(key); + return; } uncheckedDependencies[key] = remainingDependencies; diff --git a/lib/autoInject.js b/lib/autoInject.js index 36b23ab..35c852a 100644 --- a/lib/autoInject.js +++ b/lib/autoInject.js @@ -106,7 +106,7 @@ export default function autoInject(tasks, callback) { params = clone(taskFn); taskFn = params.pop(); - newTasks[key] = params.concat(newTask); + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); } else if (taskFn.length === 0) { throw new Error("autoInject task functions require explicit parameters."); } else if (taskFn.length === 1) { diff --git a/mocha_test/auto.js b/mocha_test/auto.js index 49fac6a..19ffac4 100644 --- a/mocha_test/auto.js +++ b/mocha_test/auto.js @@ -366,6 +366,18 @@ describe('auto', function () { }).to.throw(); }); + it('should handle array tasks with just a function', function (done) { + async.auto({ + a: [function (cb) { + cb(null, 1); + }], + b: ["a", function (results, cb) { + expect(results.a).to.equal(1); + cb(); + }] + }, done) + }); + it("should avoid unncecessary deferrals", function (done) { var isSync = true; diff --git a/mocha_test/autoInject.js b/mocha_test/autoInject.js index 059c7ae..3d52abd 100644 --- a/mocha_test/autoInject.js +++ b/mocha_test/autoInject.js @@ -74,4 +74,16 @@ describe('autoInject', function () { }); }); + it('should handle array tasks with just a function', function (done) { + async.autoInject({ + a: [function (cb) { + cb(null, 1); + }], + b: ["a", function (a, cb) { + expect(a).to.equal(1); + cb(); + }] + }, done) + }); + }); |