testing: do not allow fn main in tests and make sure there is at least one test fn

pull/2068/head
Alexander Medvednikov 2019-09-22 09:48:15 +03:00
parent 104e4c9fc7
commit 6a788bb364
3 changed files with 18 additions and 2 deletions

View File

@ -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_') {

View File

@ -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 {

View File

@ -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 &&