Skip to content
This repository has been archived by the owner on Apr 2, 2020. It is now read-only.

Commit

Permalink
Merge pull request #127 from Medium/nathan-deferredErr
Browse files Browse the repository at this point in the history
Don't try to handle quiet errors
  • Loading branch information
chaosgame committed Oct 8, 2014
2 parents cca16d8 + 360a268 commit ae3f8d0
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 4 deletions.
6 changes: 3 additions & 3 deletions lib/Builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -2224,10 +2224,10 @@ Builder.prototype._genResolver = function (nodeName, resolveNodeFn) {
var validateArgumentInputs = this._getArgumentInputValidator(nodeName)

return function resolve(data) {
var err
var err, quietErr
var args = []

if (validateQuietInputs) err = validateQuietInputs(data)
if (validateQuietInputs) quietErr = err = validateQuietInputs(data)
if (validateArgumentInputs && !err) err = validateArgumentInputs(data, args)

if (!err && data._shouldProfile) data._startTimes[nodeName] = Date.now()
Expand All @@ -2241,7 +2241,7 @@ Builder.prototype._genResolver = function (nodeName, resolveNodeFn) {
}
}

if (err && node.errorFn) {
if (err && !quietErr && node.errorFn) {
try {
node.errorFn(err, args)
} catch (recursiveErr) {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "shepherd",
"description": "asynchronous dependency injection for node.js",
"version": "2.3.3-alpha.2",
"version": "2.3.3-alpha.3",
"homepage": "https://github.com/Obvious/shepherd",
"authors": [
"Jeremy Stanley <[email protected]> (https://github.com/azulus)",
Expand Down
75 changes: 75 additions & 0 deletions test/importantDeps.js
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,81 @@ builder.add(function testImportantDescendant2(test) {
})
})


builder.add(function testImportantLazyInner(test) {
var warned = false
console.warn = function () { warned = true }

graph.add('important', function () {
throw new Error('Sadness')
})

var eagerRan = false
graph.add('eager', function () {
eagerRan = true
return 'eager'
})

graph.addLazy('addLazy')
.builds('eager')
.builds('!important')

var lazyGetsEvaluated = false
return graph.newBuilder('descendant')
.builds('addLazy')
.run()
.then(function (data) {
lazyGetsEvaluated = true

test.equal(false, eagerRan)
test.equal('function', typeof data['addLazy'])
return data['addLazy']()
})
.fail(function (err) {
test.equal(false, eagerRan)
test.equal(false, warned)
test.equal(true, lazyGetsEvaluated)
test.equal('Sadness', err.message)
})
})

builder.add(function testImportantLazyOuter(test) {
var warned = false
console.warn = function () { warned = true }

graph.add('important', function () {
throw new Error('Sadness')
})

var eagerRan = false
graph.add('eager', function () {
eagerRan = true
return 'eager'
})

graph.addLazy('addLazy')
.builds('eager')

var lazyGetsEvaluated = false
return graph.newBuilder('descendant')
.builds('addLazy')
.builds('!important')
.run()
.then(function (data) {
lazyGetsEvaluated = true

test.equal(false, eagerRan)
test.equal('function', typeof data['addLazy'])
return data['addLazy']()
})
.fail(function (err) {
test.equal(false, eagerRan)
test.equal(false, warned)
test.equal(false, lazyGetsEvaluated)
test.equal('Sadness', err.message)
})
})

builder.add(function testImportantCycle(test) {
// Try to create a cycle between one and two
var log = ''
Expand Down

0 comments on commit ae3f8d0

Please sign in to comment.