summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <alexander.early@gmail.com>2016-05-09 13:38:34 -0700
committerAlexander Early <alexander.early@gmail.com>2016-05-09 13:38:34 -0700
commite235125fc58fb2b04322c6b0d2b06158da4919b3 (patch)
tree77fbf05c624fca6637b851dcb9c2acfd5d60ec8f
parenteaba68f571c31875da03f36828f1a36fa334c79c (diff)
downloadasync-e235125fc58fb2b04322c6b0d2b06158da4919b3.tar.gz
handle no-dependency array tasks in auto/autoInject. Closes #1147
-rw-r--r--lib/auto.js5
-rw-r--r--lib/autoInject.js2
-rw-r--r--mocha_test/auto.js12
-rw-r--r--mocha_test/autoInject.js12
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)
+ });
+
});