@@ -33,6 +33,7 @@ vows.__defineGetter__('reporter', function () {
33
33
} ) ;
34
34
35
35
var stylize = require ( 'vows/console' ) . stylize ;
36
+ var console = require ( 'vows/console' ) ;
36
37
37
38
vows . inspect = require ( 'vows/console' ) . inspect ;
38
39
vows . prepare = require ( 'vows/extras' ) . prepare ;
@@ -128,10 +129,24 @@ function addVow(vow) {
128
129
// If not, report an error message.
129
130
//
130
131
process . addListener ( 'exit' , function ( ) {
131
- if ( vows . suites . filter ( function ( s ) {
132
- return ( s . results . total > 0 ) && ( s . results . time === null )
133
- } ) . length > 0 ) {
134
- vows . reporter . report ( [ 'error' , { error : "An EventEmitter has failed to fire." , type : 'promise' } ] ) ;
132
+ var results = { honored : 0 , broken : 0 , errored : 0 , pending : 0 , total : 0 } ;
133
+
134
+ vows . suites . forEach ( function ( s ) {
135
+ if ( ( s . results . total > 0 ) && ( s . results . time === null ) ) {
136
+ vows . reporter . report ( [ 'error' , { error : "Asynchronous Error" , suite : s } ] ) ;
137
+ process . exit ( 1 ) ;
138
+ }
139
+ s . batches . forEach ( function ( b ) {
140
+ if ( b . status !== 'end' ) {
141
+ results . errored ++ ;
142
+ results . total ++ ;
143
+ vows . reporter . report ( [ 'error' , { error : "A callback hasn't fired" , batch : b , suite : s } ] ) ;
144
+ }
145
+ Object . keys ( results ) . forEach ( function ( k ) { results [ k ] += b [ k ] } ) ;
146
+ } ) ;
147
+ } ) ;
148
+ if ( results . total ) {
149
+ sys . puts ( console . result ( results ) ) ;
135
150
}
136
151
} ) ;
137
152
0 commit comments