Add --match-tests to 'check' cmd
For running only tests matching a certain pattern. Useful when doing TDD.
This commit is contained in:
		
							parent
							
								
									0d891daac8
								
							
						
					
					
						commit
						1637a0d30e
					
				|  | @ -10,13 +10,18 @@ pub struct Args { | |||
|     /// Skip tests; run only the type-checker
 | ||||
|     #[clap(short, long)] | ||||
|     skip_tests: bool, | ||||
| 
 | ||||
|     /// Only run tests if their path + name match the given string
 | ||||
|     #[clap(short, long)] | ||||
|     match_tests: Option<String>, | ||||
| } | ||||
| 
 | ||||
| pub fn exec( | ||||
|     Args { | ||||
|         directory, | ||||
|         skip_tests, | ||||
|         match_tests, | ||||
|     }: Args, | ||||
| ) -> miette::Result<()> { | ||||
|     crate::with_project(directory, |p| p.check(skip_tests)) | ||||
|     crate::with_project(directory, |p| p.check(skip_tests, match_tests.clone())) | ||||
| } | ||||
|  |  | |||
|  | @ -101,12 +101,12 @@ where | |||
|         self.compile(options) | ||||
|     } | ||||
| 
 | ||||
|     pub fn check(&mut self, skip_tests: bool) -> Result<(), Error> { | ||||
|     pub fn check(&mut self, skip_tests: bool, match_tests: Option<String>) -> Result<(), Error> { | ||||
|         let options = Options { | ||||
|             code_gen_mode: if skip_tests { | ||||
|                 CodeGenMode::NoOp | ||||
|             } else { | ||||
|                 CodeGenMode::Test | ||||
|                 CodeGenMode::Test(match_tests) | ||||
|             }, | ||||
|         }; | ||||
| 
 | ||||
|  | @ -145,10 +145,9 @@ where | |||
| 
 | ||||
|                 self.write_build_outputs(programs, uplc_dump)?; | ||||
|             } | ||||
|             CodeGenMode::Test => { | ||||
|             CodeGenMode::Test(match_tests) => { | ||||
|                 let tests = self.test_gen(&checked_modules)?; | ||||
| 
 | ||||
|                 self.run_tests(tests); | ||||
|                 self.run_tests(tests, match_tests); | ||||
|             } | ||||
|             CodeGenMode::NoOp => (), | ||||
|         } | ||||
|  | @ -518,7 +517,7 @@ where | |||
|         Ok(programs) | ||||
|     } | ||||
| 
 | ||||
|     fn run_tests(&self, tests: Vec<Script>) { | ||||
|     fn run_tests(&self, tests: Vec<Script>, match_tests: Option<String>) { | ||||
|         // TODO: in the future we probably just want to be able to
 | ||||
|         // tell the machine to not explode on budget consumption.
 | ||||
|         let initial_budget = ExBudget { | ||||
|  | @ -533,6 +532,17 @@ where | |||
|         let mut results = Vec::new(); | ||||
| 
 | ||||
|         for test in tests { | ||||
|             let path = format!("{}{}", test.module, test.name); | ||||
| 
 | ||||
|             match match_tests.clone() { | ||||
|                 None => {} | ||||
|                 Some(search_str) => { | ||||
|                     if !path.to_string().contains(&search_str) { | ||||
|                         continue; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             match test.program.eval(initial_budget) { | ||||
|                 (Ok(..), remaining_budget, _) => { | ||||
|                     let test_info = TestInfo { | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ pub struct Options { | |||
| } | ||||
| 
 | ||||
| pub enum CodeGenMode { | ||||
|     Test, | ||||
|     Test(Option<String>), | ||||
|     Build(bool), | ||||
|     NoOp, | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 KtorZ
						KtorZ