@@ -32,6 +32,7 @@ use std::{
3232 thread,
3333 time:: Duration ,
3434} ;
35+ use tracing:: trace;
3536use watchexec:: config:: { InitConfig , RuntimeConfig } ;
3637use yansi:: Paint ;
3738
@@ -100,26 +101,26 @@ pub struct Filter {
100101}
101102
102103impl Filter {
103- pub fn with_merged_config ( & self ) -> Self {
104- let config = Config :: load ( ) ;
104+ pub fn with_merged_config ( & self , config : & Config ) -> Self {
105105 let mut filter = self . clone ( ) ;
106106 if filter. test_pattern . is_none ( ) {
107- filter. test_pattern = config. test_pattern . map ( |p| p. into ( ) ) ;
107+ filter. test_pattern = config. test_pattern . clone ( ) . map ( |p| p. into ( ) ) ;
108108 }
109109 if filter. test_pattern_inverse . is_none ( ) {
110- filter. test_pattern_inverse = config. test_pattern_inverse . map ( |p| p. into ( ) ) ;
110+ filter. test_pattern_inverse = config. test_pattern_inverse . clone ( ) . map ( |p| p. into ( ) ) ;
111111 }
112112 if filter. contract_pattern . is_none ( ) {
113- filter. contract_pattern = config. contract_pattern . map ( |p| p. into ( ) ) ;
113+ filter. contract_pattern = config. contract_pattern . clone ( ) . map ( |p| p. into ( ) ) ;
114114 }
115115 if filter. contract_pattern_inverse . is_none ( ) {
116- filter. contract_pattern_inverse = config. contract_pattern_inverse . map ( |p| p. into ( ) ) ;
116+ filter. contract_pattern_inverse =
117+ config. contract_pattern_inverse . clone ( ) . map ( |p| p. into ( ) ) ;
117118 }
118119 if filter. path_pattern . is_none ( ) {
119- filter. path_pattern = config. path_pattern ;
120+ filter. path_pattern = config. path_pattern . clone ( ) ;
120121 }
121122 if filter. path_pattern_inverse . is_none ( ) {
122- filter. path_pattern_inverse = config. path_pattern_inverse ;
123+ filter. path_pattern_inverse = config. path_pattern_inverse . clone ( ) ;
123124 }
124125 filter
125126 }
@@ -281,8 +282,8 @@ impl TestArgs {
281282 }
282283
283284 /// Returns the flattened [`Filter`] arguments merged with [`Config`]
284- pub fn filter ( & self ) -> Filter {
285- self . filter . with_merged_config ( )
285+ pub fn filter ( & self , config : & Config ) -> Filter {
286+ self . filter . with_merged_config ( config )
286287 }
287288
288289 /// Returns the currently configured [Config] and the extracted [EvmOpts] from that config
@@ -318,6 +319,7 @@ impl Cmd for TestArgs {
318319 type Output = TestOutcome ;
319320
320321 fn run ( self ) -> eyre:: Result < Self :: Output > {
322+ trace ! ( target: "forge::test" , "executing test command" ) ;
321323 custom_run ( self , true )
322324 }
323325}
@@ -468,7 +470,7 @@ pub fn custom_run(args: TestArgs, include_fuzz_tests: bool) -> eyre::Result<Test
468470 ..Default :: default ( )
469471 } ;
470472 let fuzzer = proptest:: test_runner:: TestRunner :: new ( cfg) ;
471- let mut filter = args. filter ( ) ;
473+ let mut filter = args. filter ( & config ) ;
472474
473475 // Set up the project
474476 let project = config. project ( ) ?;
@@ -589,6 +591,7 @@ fn test(
589591 include_fuzz_tests : bool ,
590592 gas_reporting : bool ,
591593) -> eyre:: Result < TestOutcome > {
594+ trace ! ( target: "forge::test" , "running all tests" ) ;
592595 if runner. count_filtered_tests ( & filter) == 0 {
593596 let filter_str = filter. to_string ( ) ;
594597 if filter_str. is_empty ( ) {
0 commit comments