testing: do not allow fn main in tests and make sure there is at least one test fn
							parent
							
								
									104e4c9fc7
								
							
						
					
					
						commit
						6a788bb364
					
				|  | @ -429,8 +429,15 @@ string _STR_TMP(const char *fmt, ...) { | ||||||
| 				exit(1) | 				exit(1) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		// Generate `main` which calls every single test function
 |  | ||||||
| 		else if v.pref.is_test { | 		else if v.pref.is_test { | ||||||
|  | 			if v.table.main_exists() { | ||||||
|  | 				cerror('test files cannot have function `main`') | ||||||
|  | 			}	 | ||||||
|  | 			// make sure there's at least on test function
 | ||||||
|  | 			if !v.table.has_at_least_one_test_fn() { | ||||||
|  | 				cerror('test files need to have at least one test function') | ||||||
|  | 			}	 | ||||||
|  | 			// Generate `main` which calls every single test function
 | ||||||
| 			cgen.genln('int main() { init_consts();') | 			cgen.genln('int main() { init_consts();') | ||||||
| 			for _, f in v.table.fns { | 			for _, f in v.table.fns { | ||||||
| 				if f.name.starts_with('test_') { | 				if f.name.starts_with('test_') { | ||||||
|  |  | ||||||
|  | @ -672,6 +672,15 @@ fn (t &Table) main_exists() bool { | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | fn (t &Table) has_at_least_one_test_fn() bool { | ||||||
|  | 	for _, f in t.fns { | ||||||
|  | 		if f.name.starts_with('test_') { | ||||||
|  | 			return true | ||||||
|  | 		}	 | ||||||
|  | 	} | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  | 
 | ||||||
| fn (t &Table) find_const(name string) ?Var { | fn (t &Table) find_const(name string) ?Var { | ||||||
| 	//println('find const l=$t.consts.len')
 | 	//println('find const l=$t.consts.len')
 | ||||||
| 	for c in t.consts { | 	for c in t.consts { | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ import ( | ||||||
| 	crypto.sha512 as s5 | 	crypto.sha512 as s5 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| pub fn main() { | fn test_import() { | ||||||
| 	assert os.SUCCESS == os.SUCCESS && | 	assert os.SUCCESS == os.SUCCESS && | ||||||
| 		t.MonthDays[0] == t.MonthDays[0] && | 		t.MonthDays[0] == t.MonthDays[0] && | ||||||
| 		s2.Size == s2.Size && | 		s2.Size == s2.Size && | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue