Skip to content

Commit

Permalink
Test: Avoid unnecessary creation of promises
Browse files Browse the repository at this point in the history
This was a pretty significant performance increase: 5.3 -> 4.0 seconds
  • Loading branch information
jamestalmage committed Jan 21, 2016
1 parent 76399f4 commit 5f48185
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
18 changes: 12 additions & 6 deletions lib/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,16 +228,22 @@ function onAssertionEvent(event) {
var promise;
if (event.assertionThrew) {
event.error.powerAssertContext = event.powerAssertContext;
event.error.originalMessage = event.originalMessage;
promise = Promise.reject(event.error);
} else {
var ret = event.returnValue;
promise = isObservable(ret) ? observableToPromise(ret) : Promise.resolve(ret);
if (isObservable(ret)) {
ret = observableToPromise(ret);
}
if (isPromise(ret)) {
ret = ret
.then(null, function (err) {
err.originalMessage = event.originalMessage;
throw err;
});
}
promise = ret;
}
promise = promise
.catch(function (err) {
err.originalMessage = event.originalMessage;
return Promise.reject(err);
});
this._test._assert(promise);
return promise;
}
Expand Down
7 changes: 1 addition & 6 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -472,15 +472,10 @@ test('number of assertions doesn\'t match plan when the test exits, but before a
});

test('assertions return promises', function (t) {
t.plan(4);
ava(function (a) {
a.plan(4);
a.plan(2);
t.ok(isPromise(a.throws(Promise.reject(new Error('foo')))));
t.ok(isPromise(a.throws(function () {
throw new Error('bar');
})));
t.ok(isPromise(a.doesNotThrow(Promise.resolve(true))));
t.ok(isPromise(a.true(true)));
}).run().then(function () {
t.end();
});
Expand Down

0 comments on commit 5f48185

Please sign in to comment.