@@ -188,24 +188,19 @@ impl JoinOnDrop {
188
188
}
189
189
}
190
190
191
- #[ derive( Debug ) ]
192
- enum PopStyle {
193
- Abort ,
194
- Replace ( String ) ,
195
- }
196
-
197
191
#[ derive( Debug ) ]
198
192
enum Msg {
199
193
Pop {
200
194
msg : String ,
201
- new_leftover_msg : PopStyle ,
195
+ new_leftover_msg : String ,
202
196
parent : String ,
203
197
} ,
204
198
Push {
205
199
parent : String ,
206
200
msg : String ,
207
201
} ,
208
202
Finish ,
203
+ Abort ,
209
204
}
210
205
211
206
impl Text {
@@ -229,7 +224,7 @@ impl Text {
229
224
}
230
225
231
226
impl ProgressHandler {
232
- fn pop ( & mut self , msg : String , new_leftover_msg : PopStyle , parent : String ) {
227
+ fn pop ( & mut self , msg : String , new_leftover_msg : String , parent : String ) {
233
228
let Some ( children) = self . threads . get_mut ( & parent) else {
234
229
// This can happen when a test was not run at all, because it failed directly during
235
230
// comment parsing.
@@ -241,14 +236,7 @@ impl Text {
241
236
} ;
242
237
* done = true ;
243
238
let spinner = spinner. clone ( ) ;
244
- match new_leftover_msg {
245
- PopStyle :: Replace ( new_msg) => spinner. finish_with_message ( new_msg) ,
246
- PopStyle :: Abort => {
247
- self . aborted = true ;
248
- spinner. finish_and_clear ( ) ;
249
- return ;
250
- }
251
- }
239
+ spinner. finish_with_message ( new_leftover_msg) ;
252
240
let parent = children[ "" ] . 0 . clone ( ) ;
253
241
if children. values ( ) . all ( |& ( _, done) | done) {
254
242
self . bars . remove ( & parent) ;
@@ -365,6 +353,7 @@ impl Text {
365
353
handler. push ( parent, msg) ;
366
354
}
367
355
Msg :: Finish => break ' outer,
356
+ Msg :: Abort => handler. aborted = true ,
368
357
} ,
369
358
// Sender panicked, skip asserts
370
359
Err ( TryRecvError :: Disconnected ) => return ,
@@ -418,31 +407,30 @@ struct TextTest {
418
407
419
408
impl TestStatus for TextTest {
420
409
fn done ( & self , result : & TestResult , aborted : bool ) {
421
- let new_leftover_msg = if aborted {
422
- PopStyle :: Abort
423
- } else {
424
- let result = match result {
425
- Ok ( TestOk :: Ok ) => "ok" . green ( ) ,
426
- Err ( Errored { .. } ) => "FAILED" . bright_red ( ) . bold ( ) ,
427
- Ok ( TestOk :: Ignored ) => "ignored (in-test comment)" . yellow ( ) ,
428
- } ;
429
- let msg = format ! ( "... {result}" ) ;
430
- if ProgressDrawTarget :: stdout ( ) . is_hidden ( ) {
431
- match self . style {
432
- RevisionStyle :: Separate => println ! ( "{} {msg}" , self . revision ) ,
433
- RevisionStyle :: Show => {
434
- let revision = if self . revision . is_empty ( ) {
435
- String :: new ( )
436
- } else {
437
- format ! ( " (revision `{}`)" , self . revision )
438
- } ;
439
- println ! ( "{}{revision} {msg}" , display ( & self . path ) ) ;
440
- }
410
+ if aborted {
411
+ self . text . sender . send ( Msg :: Abort ) . unwrap ( ) ;
412
+ }
413
+ let result = match result {
414
+ _ if aborted => "aborted" . white ( ) ,
415
+ Ok ( TestOk :: Ok ) => "ok" . green ( ) ,
416
+ Err ( Errored { .. } ) => "FAILED" . bright_red ( ) . bold ( ) ,
417
+ Ok ( TestOk :: Ignored ) => "ignored (in-test comment)" . yellow ( ) ,
418
+ } ;
419
+ let new_leftover_msg = format ! ( "... {result}" ) ;
420
+ if ProgressDrawTarget :: stdout ( ) . is_hidden ( ) {
421
+ match self . style {
422
+ RevisionStyle :: Separate => println ! ( "{} {new_leftover_msg}" , self . revision ) ,
423
+ RevisionStyle :: Show => {
424
+ let revision = if self . revision . is_empty ( ) {
425
+ String :: new ( )
426
+ } else {
427
+ format ! ( " (revision `{}`)" , self . revision )
428
+ } ;
429
+ println ! ( "{}{revision} {new_leftover_msg}" , display ( & self . path ) ) ;
441
430
}
442
- std:: io:: stdout ( ) . flush ( ) . unwrap ( ) ;
443
431
}
444
- PopStyle :: Replace ( msg )
445
- } ;
432
+ std :: io :: stdout ( ) . flush ( ) . unwrap ( ) ;
433
+ }
446
434
self . text
447
435
. sender
448
436
. send ( Msg :: Pop {
0 commit comments