@@ -34,14 +34,14 @@ where ModuleProvider: module::ModuleProvider + Send + 'static
3434impl < ModuleProvider > Application < ModuleProvider >
3535where ModuleProvider : module:: ModuleProvider + Send + ' static
3636{
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 >
3838 where
3939 EventProvider : EventReaderFn ,
4040 Tui : crate :: display:: Tui + Send + ' static ,
4141 {
4242 let filepath = Self :: filepath_from_args ( args) ?;
4343 let repository = Self :: open_repository ( ) ?;
44- let config_loader = ConfigLoader :: from ( repository) ;
44+ let config_loader = ConfigLoader :: with_overrides ( repository, git_config_parameters ) ;
4545 let config = Self :: load_config ( & config_loader)
4646 . map_err ( |err| Exit :: new ( ExitStatus :: ConfigError , format ! ( "{err:#}" ) . as_str ( ) ) ) ?;
4747 let todo_file = Arc :: new ( Mutex :: new ( Self :: load_todo_file ( filepath. as_str ( ) , & config) ?) ) ;
@@ -221,12 +221,7 @@ mod tests {
221221 module:: Modules ,
222222 runtime:: { Installer , RuntimeError } ,
223223 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,
230225 } ,
231226 } ;
232227
@@ -240,8 +235,7 @@ mod tests {
240235 ( $app: expr) => {
241236 if let Err ( e) = $app {
242237 e
243- }
244- else {
238+ } else {
245239 panic!( "Application is not in an error state" ) ;
246240 }
247241 } ;
@@ -251,8 +245,12 @@ mod tests {
251245 #[ serial_test:: serial]
252246 fn load_filepath_from_args_failure ( ) {
253247 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+ ) ;
256254 let exit = application_error ! ( application) ;
257255 assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
258256 assert ! (
@@ -266,8 +264,12 @@ mod tests {
266264 fn load_repository_failure ( ) {
267265 with_git_directory ( "fixtures/not-a-repository" , |_| {
268266 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+ ) ;
271273 let exit = application_error ! ( application) ;
272274 assert_eq ! ( exit. get_status( ) , & ExitStatus :: StateError ) ;
273275 assert ! ( exit. get_message( ) . unwrap( ) . contains( "Unable to load Git repository: " ) ) ;
@@ -278,8 +280,12 @@ mod tests {
278280 fn load_config_failure ( ) {
279281 with_git_directory ( "fixtures/invalid-config" , |_| {
280282 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+ ) ;
283289 let exit = application_error ! ( application) ;
284290 assert_eq ! ( exit. get_status( ) , & ExitStatus :: ConfigError ) ;
285291 } ) ;
@@ -319,8 +325,12 @@ mod tests {
319325 fn load_todo_file_load_error ( ) {
320326 with_git_directory ( "fixtures/simple" , |_| {
321327 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+ ) ;
324334 let exit = application_error ! ( application) ;
325335 assert_eq ! ( exit. get_status( ) , & ExitStatus :: FileReadError ) ;
326336 } ) ;
@@ -333,6 +343,7 @@ mod tests {
333343 let event_provider = create_event_reader ( || Ok ( None ) ) ;
334344 let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
335345 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
346+ Vec :: new ( ) ,
336347 event_provider,
337348 create_mocked_crossterm ( ) ,
338349 ) ;
@@ -348,6 +359,7 @@ mod tests {
348359 let event_provider = create_event_reader ( || Ok ( None ) ) ;
349360 let application: Result < Application < TestModuleProvider < DefaultTestModule > > , Exit > = Application :: new (
350361 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
362+ Vec :: new ( ) ,
351363 event_provider,
352364 create_mocked_crossterm ( ) ,
353365 ) ;
@@ -381,6 +393,7 @@ mod tests {
381393 let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
382394 let mut application: Application < Modules > = Application :: new (
383395 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
396+ Vec :: new ( ) ,
384397 event_provider,
385398 create_mocked_crossterm ( ) ,
386399 )
@@ -407,6 +420,7 @@ mod tests {
407420 let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
408421 let mut application: Application < Modules > = Application :: new (
409422 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
423+ Vec :: new ( ) ,
410424 event_provider,
411425 create_mocked_crossterm ( ) ,
412426 )
@@ -432,6 +446,7 @@ mod tests {
432446 } ) ;
433447 let mut application: Application < Modules > = Application :: new (
434448 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
449+ Vec :: new ( ) ,
435450 event_provider,
436451 create_mocked_crossterm ( ) ,
437452 )
@@ -448,6 +463,7 @@ mod tests {
448463 let event_provider = create_event_reader ( || Ok ( Some ( Event :: Key ( KeyEvent :: from ( KeyCode :: Char ( 'W' ) ) ) ) ) ) ;
449464 let mut application: Application < Modules > = Application :: new (
450465 Args :: from_strs ( [ rebase_todo] ) . unwrap ( ) ,
466+ Vec :: new ( ) ,
451467 event_provider,
452468 create_mocked_crossterm ( ) ,
453469 )
0 commit comments