@@ -8,6 +8,7 @@ var observableToPromise = require('observable-to-promise');
88var isPromise = require ( 'is-promise' ) ;
99var isObservable = require ( 'is-observable' ) ;
1010var assert = require ( './assert' ) ;
11+ var enhanceAssert = require ( './enhance-assert' ) ;
1112var globals = require ( './globals' ) ;
1213
1314function Test ( title , fn ) {
@@ -61,11 +62,6 @@ Test.prototype._setAssertError = function (err) {
6162 this . assertError = err ;
6263} ;
6364
64- // Workaround for power-assert
65- // `t` must be capturable for decorated assert output
66- Test . prototype . _capt = assert . _capt ;
67- Test . prototype . _expr = assert . _expr ;
68-
6965Test . prototype . plan = function ( count ) {
7066 if ( typeof count !== 'number' ) {
7167 throw new TypeError ( 'Expected a number' ) ;
@@ -208,9 +204,7 @@ Test.prototype._publicApi = function () {
208204 [
209205 'assertCount' ,
210206 'title' ,
211- 'end' ,
212- '_capt' ,
213- '_expr'
207+ 'end'
214208 ]
215209 . forEach ( function ( name ) {
216210 Object . defineProperty ( api , name , {
@@ -239,31 +233,46 @@ Test.prototype._publicApi = function () {
239233 self . _assert ( ) ;
240234 }
241235
236+ function onAssertionEvent ( event ) {
237+ if ( event . assertionThrew ) {
238+ event . error . powerAssertContext = event . powerAssertContext ;
239+ event . error . originalMessage = event . originalMessage ;
240+ self . _setAssertError ( event . error ) ;
241+ self . _assert ( ) ;
242+ return null ;
243+ }
244+
245+ var fn = observableToPromise ( event . returnValue ) ;
246+
247+ if ( isPromise ( fn ) ) {
248+ return Promise . resolve ( fn )
249+ . catch ( function ( err ) {
250+ err . originalMessage = event . originalMessage ;
251+ self . _setAssertError ( err ) ;
252+ } )
253+ . finally ( function ( ) {
254+ self . _assert ( ) ;
255+ } ) ;
256+ }
257+
258+ self . _assert ( ) ;
259+ return null ;
260+ }
261+
262+ var enhanced = enhanceAssert ( {
263+ assert : assert ,
264+ onSuccess : onAssertionEvent ,
265+ onError : onAssertionEvent
266+ } ) ;
267+
242268 // Patched assert methods: increase assert count and store errors.
243269 Object . keys ( assert ) . forEach ( function ( el ) {
244270 api . skip [ el ] = skipFn ;
245- api [ el ] = function ( ) {
246- try {
247- var fn = assert [ el ] . apply ( assert , arguments ) ;
248-
249- fn = observableToPromise ( fn ) ;
250-
251- if ( isPromise ( fn ) ) {
252- return Promise . resolve ( fn )
253- . catch ( function ( err ) {
254- self . _setAssertError ( err ) ;
255- } )
256- . finally ( function ( ) {
257- self . _assert ( ) ;
258- } ) ;
259- }
260- } catch ( err ) {
261- self . _setAssertError ( err ) ;
262- }
263-
264- self . _assert ( ) ;
265- } ;
271+ api [ el ] = enhanced [ el ] . bind ( enhanced ) ;
266272 } ) ;
267273
274+ api . _capt = enhanced . _capt . bind ( enhanced ) ;
275+ api . _expr = enhanced . _expr . bind ( enhanced ) ;
276+
268277 return api ;
269278} ;
0 commit comments