1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

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

This commit is contained in:
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)
}
}
// Generate `main` which calls every single test function
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();')
for _, f in v.table.fns {
if f.name.starts_with('test_') {

View File

@ -672,6 +672,15 @@ fn (t &Table) main_exists() bool {
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 {
//println('find const l=$t.consts.len')
for c in t.consts {

View File

@ -8,7 +8,7 @@ import (
crypto.sha512 as s5
)
pub fn main() {
fn test_import() {
assert os.SUCCESS == os.SUCCESS &&
t.MonthDays[0] == t.MonthDays[0] &&
s2.Size == s2.Size &&