@@ -34,14 +34,14 @@ where ModuleProvider: module::ModuleProvider + Send + 'static
34
34
impl < ModuleProvider > Application < ModuleProvider >
35
35
where ModuleProvider : module:: ModuleProvider + Send + ' static
36
36
{
37
- pub ( crate ) fn new < EventProvider , Tui > ( args : Args , event_provider : EventProvider , tui : Tui ) -> Result < Self , Exit >
37
+ pub ( crate ) fn new < EventProvider , Tui > ( args : Args , git_config_parameters : Vec < ( String , String ) > , event_provider : EventProvider , tui : Tui ) -> Result < Self , Exit >
38
38
where
39
39
EventProvider : EventReaderFn ,
40
40
Tui : crate :: display:: Tui + Send + ' static ,
41
41
{
42
42
let filepath = Self :: filepath_from_args ( args) ?;
43
43
let repository = Self :: open_repository ( ) ?;
44
- let config_loader = ConfigLoader :: from ( repository) ;
44
+ let config_loader = ConfigLoader :: with_overrides ( repository, git_config_parameters ) ;
45
45
let config = Self :: load_config ( & config_loader)
46
46
. map_err ( |err| Exit :: new ( ExitStatus :: ConfigError , format ! ( "{err:#}" ) . as_str ( ) ) ) ?;
47
47
let todo_file = Arc :: new ( Mutex :: new ( Self :: load_todo_file ( filepath. as_str ( ) , & config) ?) ) ;
@@ -221,12 +221,7 @@ mod tests {
221
221
module:: Modules ,
222
222
runtime:: { Installer , RuntimeError } ,
223
223
test_helpers:: {
224
- DefaultTestModule ,
225
- TestModuleProvider ,
226
- create_config,
227
- create_event_reader,
228
- mocks,
229
- with_git_directory,
224
+ DefaultTestModule , TestModuleProvider , create_config, create_event_reader, mocks, with_git_directory,
230
225
} ,
231
226
} ;
232
227
@@ -240,8 +235,7 @@ mod tests {
240
235
( $app: expr) => {
241
236
if let Err ( e) = $app {
242
237
e
243
- }
244
- else {
238
+ } else {
245
239
panic!( "Application is not in an error state" ) ;
246
240
}
247
241
} ;
@@ -251,8 +245,12 @@ mod tests {
251
245
#[ serial_test:: serial]
252
246
fn load_filepath_from_args_failure ( ) {
253
247
let event_provider = create_event_reader ( || Ok ( None ) ) ;
254
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
255
- Application :: new ( Args :: from_os_strings ( Vec :: new ( ) ) . unwrap ( ) , event_provider, create_mocked_crossterm ( ) ) ;
248
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
249
+ Args :: from_os_strings ( Vec :: new ( ) ) . unwrap ( ) ,
250
+ Vec :: new ( ) ,
251
+ event_provider,
252
+ create_mocked_crossterm ( ) ,
253
+ ) ;
256
254
let exit = application_error ! ( application) ;
257
255
assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
258
256
assert ! (
@@ -266,8 +264,12 @@ mod tests {
266
264
fn load_repository_failure ( ) {
267
265
with_git_directory ( "fixtures/not-a-repository" , |_| {
268
266
let event_provider = create_event_reader ( || Ok ( None ) ) ;
269
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
270
- Application :: new ( Args :: from_strs ( [ "todofile" ] ) . unwrap ( ) , event_provider, create_mocked_crossterm ( ) ) ;
267
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
268
+ Args :: from_strs ( [ "todofile" ] ) . unwrap ( ) ,
269
+ Vec :: new ( ) ,
270
+ event_provider,
271
+ create_mocked_crossterm ( ) ,
272
+ ) ;
271
273
let exit = application_error ! ( application) ;
272
274
assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
273
275
assert ! ( exit. get_message( ) . unwrap( ) . contains( "Unable to load Git repository: " ) ) ;
@@ -278,8 +280,12 @@ mod tests {
278
280
fn load_config_failure ( ) {
279
281
with_git_directory ( "fixtures/invalid-config" , |_| {
280
282
let event_provider = create_event_reader ( || Ok ( None ) ) ;
281
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
282
- Application :: new ( Args :: from_strs ( [ "rebase-todo" ] ) . unwrap ( ) , event_provider, create_mocked_crossterm ( ) ) ;
283
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
284
+ Args :: from_strs ( [ "rebase-todo" ] ) . unwrap ( ) ,
285
+ Vec :: new ( ) ,
286
+ event_provider,
287
+ create_mocked_crossterm ( ) ,
288
+ ) ;
283
289
let exit = application_error ! ( application) ;
284
290
assert_eq ! ( exit. get_status( ) , & ExitStatus :: ConfigError ) ;
285
291
} ) ;
@@ -319,8 +325,12 @@ mod tests {
319
325
fn load_todo_file_load_error ( ) {
320
326
with_git_directory ( "fixtures/simple" , |_| {
321
327
let event_provider = create_event_reader ( || Ok ( None ) ) ;
322
- let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > =
323
- Application :: new ( Args :: from_strs ( [ "does-not-exist" ] ) . unwrap ( ) , event_provider, create_mocked_crossterm ( ) ) ;
328
+ let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
329
+ Args :: from_strs ( [ "does-not-exist" ] ) . unwrap ( ) ,
330
+ Vec :: new ( ) ,
331
+ event_provider,
332
+ create_mocked_crossterm ( ) ,
333
+ ) ;
324
334
let exit = application_error ! ( application) ;
325
335
assert_eq ! ( exit. get_status( ) , & ExitStatus :: FileReadError ) ;
326
336
} ) ;
@@ -333,6 +343,7 @@ mod tests {
333
343
let event_provider = create_event_reader ( || Ok ( None ) ) ;
334
344
let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
335
345
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
346
+ Vec :: new ( ) ,
336
347
event_provider,
337
348
create_mocked_crossterm ( ) ,
338
349
) ;
@@ -348,6 +359,7 @@ mod tests {
348
359
let event_provider = create_event_reader ( || Ok ( None ) ) ;
349
360
let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
350
361
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
362
+ Vec :: new ( ) ,
351
363
event_provider,
352
364
create_mocked_crossterm ( ) ,
353
365
) ;
@@ -381,6 +393,7 @@ mod tests {
381
393
let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
382
394
let mut application: Application < Modules > = Application :: new (
383
395
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
396
+ Vec :: new ( ) ,
384
397
event_provider,
385
398
create_mocked_crossterm ( ) ,
386
399
)
@@ -407,6 +420,7 @@ mod tests {
407
420
let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
408
421
let mut application: Application < Modules > = Application :: new (
409
422
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
423
+ Vec :: new ( ) ,
410
424
event_provider,
411
425
create_mocked_crossterm ( ) ,
412
426
)
@@ -432,6 +446,7 @@ mod tests {
432
446
} ) ;
433
447
let mut application: Application < Modules > = Application :: new (
434
448
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
449
+ Vec :: new ( ) ,
435
450
event_provider,
436
451
create_mocked_crossterm ( ) ,
437
452
)
@@ -448,6 +463,7 @@ mod tests {
448
463
let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
449
464
let mut application: Application < Modules > = Application :: new (
450
465
Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
466
+ Vec :: new ( ) ,
451
467
event_provider,
452
468
create_mocked_crossterm ( ) ,
453
469
)
0 commit comments