v/tools/vtest.v

57 lines
1.4 KiB
V
Raw Normal View History

module main
import (
os
os.cmdline
2019-12-06 00:11:39 +01:00
testing
)
pub fn main() {
args := os.args
if args.last() == 'test' {
println('Usage:')
println(' A)')
println(' v test folder/ : run all v tests in the given folder.')
println(' v -stats test folder/ : the same, but print more stats.')
2019-12-01 10:50:13 +01:00
println(' B)')
println(' v test file_test.v : run test functions in a given test file.')
println(' v -stats test file_test.v : as above, but with more stats.')
println(' NB: you can also give many and mixed folder/ file_test.v arguments after test.')
println('')
return
}
args_to_executable := args[1..]
args_before := cmdline.before(args_to_executable, ['test'])
args_after := cmdline.after(args_to_executable, ['test'])
if args_after.join(' ') == 'v' {
2019-12-01 10:50:13 +01:00
eprintln('`v test v` has been deprecated.')
eprintln('Use `v test-compiler` instead.')
exit(1)
}
2019-12-06 00:11:39 +01:00
mut ts := testing.new_test_session(args_before.join(' '))
for targ in args_after {
if os.exists(targ) && targ.ends_with('_test.v') {
ts.files << targ
continue
}
if os.is_dir(targ) {
2019-10-20 08:56:33 +02:00
// Fetch all tests from the directory
2019-10-12 21:31:05 +02:00
ts.files << os.walk_ext( targ.trim_right(os.path_separator), '_test.v')
continue
}
println('Unrecognized test file $targ .')
}
2020-02-08 17:01:10 +01:00
testing.header('Testing...')
ts.test()
println( ts.benchmark.total_message('running V _test.v files') )
if ts.failed {
exit(1)
}
}