| 4677 | var test; |
| 4678 | |
| 4679 | function hookErr(_, errSuite, after) { |
| 4680 | // before/after Each hook for errSuite failed: |
| 4681 | var orig = self.suite; |
| 4682 | |
| 4683 | // for failed 'after each' hook start from errSuite parent, |
| 4684 | // otherwise start from errSuite itself |
| 4685 | self.suite = after ? errSuite.parent : errSuite; |
| 4686 | |
| 4687 | if (self.suite) { |
| 4688 | // call hookUp afterEach |
| 4689 | self.hookUp('afterEach', function(err2, errSuite2) { |
| 4690 | self.suite = orig; |
| 4691 | // some hooks may fail even now |
| 4692 | if (err2) { |
| 4693 | return hookErr(err2, errSuite2, true); |
| 4694 | } |
| 4695 | // report error suite |
| 4696 | fn(errSuite); |
| 4697 | }); |
| 4698 | } else { |
| 4699 | // there is no need calling other 'after each' hooks |
| 4700 | self.suite = orig; |
| 4701 | fn(errSuite); |
| 4702 | } |
| 4703 | } |
| 4704 | |
| 4705 | function next(err, errSuite) { |
| 4706 | // if we bail after first err |