@@ -201,7 +201,7 @@ mod tests {
201
201
create_config,
202
202
create_event_reader,
203
203
mocks,
204
- set_git_directory ,
204
+ with_git_directory ,
205
205
DefaultTestModule ,
206
206
TestModuleProvider ,
207
207
} ,
@@ -245,31 +245,31 @@ mod tests {
245
245
}
246
246
247
247
#[ test]
248
- #[ serial_test:: serial]
249
248
fn load_repository_failure ( ) {
250
- _ = set_git_directory ( "fixtures/not-a-repository" ) ;
251
- let event_provider = create_event_reader ( || Ok ( None ) ) ;
252
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
253
- Application :: new ( & args ( & [ "todofile" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
254
- let exit = application_error ! ( application) ;
255
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
256
- assert ! (
257
- exit. get_message( )
258
- . as_ref( )
259
- . unwrap( )
260
- . contains( "Unable to load Git repository: " )
261
- ) ;
249
+ with_git_directory ( "fixtures/not-a-repository" , |_| {
250
+ let event_provider = create_event_reader ( || Ok ( None ) ) ;
251
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
252
+ Application :: new ( & args ( & [ "todofile" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
253
+ let exit = application_error ! ( application) ;
254
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
255
+ assert ! (
256
+ exit. get_message( )
257
+ . as_ref( )
258
+ . unwrap( )
259
+ . contains( "Unable to load Git repository: " )
260
+ ) ;
261
+ } ) ;
262
262
}
263
263
264
264
#[ test]
265
- #[ serial_test:: serial]
266
265
fn load_config_failure ( ) {
267
- _ = set_git_directory ( "fixtures/invalid-config" ) ;
268
- let event_provider = create_event_reader ( || Ok ( None ) ) ;
269
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
270
- Application :: new ( & args ( & [ "rebase-todo" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
271
- let exit = application_error ! ( application) ;
272
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: ConfigError ) ;
266
+ with_git_directory ( "fixtures/invalid-config" , |_| {
267
+ let event_provider = create_event_reader ( || Ok ( None ) ) ;
268
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
269
+ Application :: new ( & args ( & [ "rebase-todo" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
270
+ let exit = application_error ! ( application) ;
271
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: ConfigError ) ;
272
+ } ) ;
273
273
}
274
274
275
275
#[ test]
@@ -303,50 +303,50 @@ mod tests {
303
303
}
304
304
305
305
#[ test]
306
- #[ serial_test:: serial]
307
306
fn load_todo_file_load_error ( ) {
308
- _ = set_git_directory ( "fixtures/simple" ) ;
309
- let event_provider = create_event_reader ( || Ok ( None ) ) ;
310
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
311
- Application :: new ( & args ( & [ "does-not-exist" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
312
- let exit = application_error ! ( application) ;
313
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: FileReadError ) ;
307
+ with_git_directory ( "fixtures/simple" , |_| {
308
+ let event_provider = create_event_reader ( || Ok ( None ) ) ;
309
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
310
+ Application :: new ( & args ( & [ "does-not-exist" ] ) , event_provider, create_mocked_crossterm ( ) ) ;
311
+ let exit = application_error ! ( application) ;
312
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: FileReadError ) ;
313
+ } ) ;
314
314
}
315
315
316
316
#[ test]
317
- #[ serial_test:: serial]
318
317
fn load_todo_file_noop ( ) {
319
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
320
- let rebase_todo = format ! ( "{git_dir}/rebase-todo-noop" ) ;
321
- let event_provider = create_event_reader ( || Ok ( None ) ) ;
322
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
323
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
324
- event_provider,
325
- create_mocked_crossterm ( ) ,
326
- ) ;
327
- let exit = application_error ! ( application) ;
328
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: Good ) ;
318
+ with_git_directory ( "fixtures/simple" , |git_dir| {
319
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo-noop" ) ;
320
+ let event_provider = create_event_reader ( || Ok ( None ) ) ;
321
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
322
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
323
+ event_provider,
324
+ create_mocked_crossterm ( ) ,
325
+ ) ;
326
+ let exit = application_error ! ( application) ;
327
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: Good ) ;
328
+ } ) ;
329
329
}
330
330
331
331
#[ test]
332
- #[ serial_test:: serial]
333
332
fn load_todo_file_empty ( ) {
334
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
335
- let rebase_todo = format ! ( "{git_dir}/rebase-todo-empty" ) ;
336
- let event_provider = create_event_reader ( || Ok ( None ) ) ;
337
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
338
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
339
- event_provider,
340
- create_mocked_crossterm ( ) ,
341
- ) ;
342
- let exit = application_error ! ( application) ;
343
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: Good ) ;
344
- assert ! (
345
- exit. get_message( )
346
- . as_ref( )
347
- . unwrap( )
348
- . contains( "An empty rebase was provided, nothing to edit" )
349
- ) ;
333
+ with_git_directory ( "fixtures/simple" , |git_dir| {
334
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo-empty" ) ;
335
+ let event_provider = create_event_reader ( || Ok ( None ) ) ;
336
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
337
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
338
+ event_provider,
339
+ create_mocked_crossterm ( ) ,
340
+ ) ;
341
+ let exit = application_error ! ( application) ;
342
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: Good ) ;
343
+ assert ! (
344
+ exit. get_message( )
345
+ . as_ref( )
346
+ . unwrap( )
347
+ . contains( "An empty rebase was provided, nothing to edit" )
348
+ ) ;
349
+ } ) ;
350
350
}
351
351
352
352
#[ test]
@@ -363,22 +363,21 @@ mod tests {
363
363
}
364
364
365
365
#[ test]
366
- #[ serial_test:: serial]
367
366
fn run_until_finished_success ( ) {
368
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
369
- let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
370
- let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
371
- let mut application: Application < Modules > = Application :: new (
372
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
373
- event_provider,
374
- create_mocked_crossterm ( ) ,
375
- )
376
- . unwrap ( ) ;
377
- assert_ok ! ( application. run_until_finished( ) ) ;
367
+ with_git_directory ( "fixtures/simple" , |git_dir| {
368
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
369
+ let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
370
+ let mut application: Application < Modules > = Application :: new (
371
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
372
+ event_provider,
373
+ create_mocked_crossterm ( ) ,
374
+ )
375
+ . unwrap ( ) ;
376
+ assert_ok ! ( application. run_until_finished( ) ) ;
377
+ } ) ;
378
378
}
379
379
380
380
#[ test]
381
- #[ serial_test:: serial]
382
381
fn run_join_error ( ) {
383
382
struct FailingThread ;
384
383
impl Threadable for FailingThread {
@@ -391,67 +390,68 @@ mod tests {
391
390
}
392
391
}
393
392
394
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
395
- let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
396
- let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
397
- let mut application: Application < Modules > = Application :: new (
398
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
399
- event_provider,
400
- create_mocked_crossterm ( ) ,
401
- )
402
- . unwrap ( ) ;
393
+ with_git_directory ( "fixtures/simple" , |git_dir| {
394
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
395
+ let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
396
+ let mut application: Application < Modules > = Application :: new (
397
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
398
+ event_provider,
399
+ create_mocked_crossterm ( ) ,
400
+ )
401
+ . unwrap ( ) ;
403
402
404
- application. threads = Some ( vec ! [ Box :: new( FailingThread { } ) ] ) ;
403
+ application. threads = Some ( vec ! [ Box :: new( FailingThread { } ) ] ) ;
405
404
406
- let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
407
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
408
- assert ! (
409
- exit. get_message( )
410
- . as_ref( )
411
- . unwrap( )
412
- . starts_with( "Failed to join runtime:" )
413
- ) ;
405
+ let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
406
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
407
+ assert ! (
408
+ exit. get_message( )
409
+ . as_ref( )
410
+ . unwrap( )
411
+ . starts_with( "Failed to join runtime:" )
412
+ ) ;
413
+ } ) ;
414
414
}
415
415
416
416
#[ test]
417
- #[ serial_test:: serial]
418
417
fn run_until_finished_kill ( ) {
419
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
420
- let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
421
- let event_provider = create_event_reader ( || {
422
- Ok ( Some ( Event :: Key ( KeyEvent :: new (
423
- KeyCode :: Char ( 'c' ) ,
424
- KeyModifiers :: CONTROL ,
425
- ) ) ) )
418
+ with_git_directory ( "fixtures/simple" , |git_dir| {
419
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
420
+ let event_provider = create_event_reader ( || {
421
+ Ok ( Some ( Event :: Key ( KeyEvent :: new (
422
+ KeyCode :: Char ( 'c' ) ,
423
+ KeyModifiers :: CONTROL ,
424
+ ) ) ) )
425
+ } ) ;
426
+ let mut application: Application < Modules > = Application :: new (
427
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
428
+ event_provider,
429
+ create_mocked_crossterm ( ) ,
430
+ )
431
+ . unwrap ( ) ;
432
+ let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
433
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: Kill ) ;
426
434
} ) ;
427
- let mut application: Application < Modules > = Application :: new (
428
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
429
- event_provider,
430
- create_mocked_crossterm ( ) ,
431
- )
432
- . unwrap ( ) ;
433
- let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
434
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: Kill ) ;
435
435
}
436
436
437
437
#[ test]
438
- #[ serial_test:: serial]
439
438
fn run_error_on_second_attempt ( ) {
440
- let git_dir = set_git_directory ( "fixtures/simple" ) ;
441
- let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
442
- let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
443
- let mut application: Application < Modules > = Application :: new (
444
- & args ( & [ rebase_todo. as_str ( ) ] ) ,
445
- event_provider,
446
- create_mocked_crossterm ( ) ,
447
- )
448
- . unwrap ( ) ;
449
- assert_ok ! ( application. run_until_finished( ) ) ;
450
- let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
451
- assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
452
- assert_eq ! (
453
- exit. get_message( ) . as_ref( ) . unwrap( ) ,
454
- "Attempt made to run application a second time"
455
- ) ;
439
+ with_git_directory ( "fixtures/simple" , |git_dir| {
440
+ let rebase_todo = format ! ( "{git_dir}/rebase-todo" ) ;
441
+ let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
442
+ let mut application: Application < Modules > = Application :: new (
443
+ & args ( & [ rebase_todo. as_str ( ) ] ) ,
444
+ event_provider,
445
+ create_mocked_crossterm ( ) ,
446
+ )
447
+ . unwrap ( ) ;
448
+ assert_ok ! ( application. run_until_finished( ) ) ;
449
+ let exit = application. run_until_finished ( ) . unwrap_err ( ) ;
450
+ assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
451
+ assert_eq ! (
452
+ exit. get_message( ) . as_ref( ) . unwrap( ) ,
453
+ "Attempt made to run application a second time"
454
+ ) ;
455
+ } ) ;
456
456
}
457
457
}
0 commit comments