@@ -185,15 +185,6 @@ class App {
185
185
this . testsErrored = shell . error ( ) ;
186
186
shell . cd ( './..' ) ;
187
187
} catch ( err ) {
188
- this . cleanUp ( err ) ;
189
- }
190
-
191
- // Get events fired during instrumented contracts execution.
192
- try {
193
- this . events = fs . readFileSync ( './allFiredEvents' ) . toString ( ) . split ( '\n' ) ;
194
- this . events . pop ( ) ;
195
- } catch ( err ) {
196
- const msg =
197
188
`
198
189
There was an error generating coverage. Possible reasons include:
199
190
1. Another application is using port ${ this . port }
@@ -212,25 +203,39 @@ class App {
212
203
const reporter = new istanbul . Reporter ( ) ;
213
204
214
205
return new Promise ( ( resolve , reject ) => {
215
- try {
216
- this . coverage . generate ( this . events , `${ this . workingDir } /contracts` ) ;
217
-
218
- const json = JSON . stringify ( this . coverage . coverage ) ;
219
- fs . writeFileSync ( './coverage.json' , json ) ;
220
-
221
- collector . add ( this . coverage . coverage ) ;
222
- reporter . add ( 'html' ) ;
223
- reporter . add ( 'lcov' ) ;
224
- reporter . add ( 'text' ) ;
225
- reporter . write ( collector , true , ( ) => {
226
- this . log ( 'Istanbul coverage reports generated' ) ;
227
- this . cleanUp ( ) ;
228
- resolve ( ) ;
206
+ // Get events fired during instrumented contracts execution.
207
+ const stream = fs . createReadStream ( `${ this . workingDir } /allFiredEvents` ) ;
208
+ stream . on ( 'error' , ( err ) => this . cleanUp ( 'Event trace file not found.\n' + err ) ) ;
209
+ const reader = require ( 'readline' ) . createInterface ( {
210
+ input : stream
211
+ } ) ;
212
+ this . events = [ ] ;
213
+ reader
214
+ . on ( 'line' , ( line ) => this . events . push ( line ) )
215
+ . on ( 'close' , ( ) => {
216
+ // Generate Istanbul report
217
+ try {
218
+ // console.log(`got ${this.events.length} events`);
219
+ this . coverage . generate ( this . events , `${ this . workingDir } /contracts` ) ;
220
+
221
+ const json = JSON . stringify ( this . coverage . coverage ) ;
222
+ fs . writeFileSync ( './coverage.json' , json ) ;
223
+
224
+ collector . add ( this . coverage . coverage ) ;
225
+ reporter . add ( 'html' ) ;
226
+ reporter . add ( 'lcov' ) ;
227
+ reporter . add ( 'text' ) ;
228
+ reporter . write ( collector , true , ( ) => {
229
+ this . log ( 'Istanbul coverage reports generated' ) ;
230
+ this . cleanUp ( ) ;
231
+ resolve ( ) ;
232
+ } ) ;
233
+ } catch ( err ) {
234
+ const msg = 'There was a problem generating the coverage map / running Istanbul.\n' ;
235
+ console . log ( err . stack ) ;
236
+ this . cleanUp ( msg + err ) ;
237
+ }
229
238
} ) ;
230
- } catch ( err ) {
231
- const msg = 'There was a problem generating the coverage map / running Istanbul.\n' ;
232
- this . cleanUp ( msg + err ) ;
233
- }
234
239
} ) ;
235
240
}
236
241
0 commit comments