mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
88 lines
2.1 KiB
V
88 lines
2.1 KiB
V
module main
|
|
|
|
// Provide a no-frills implementation of the TestRunner interface:
|
|
|
|
fn vtest_init() {
|
|
change_test_runner(&TestRunner(SimpleTestRunner{}))
|
|
}
|
|
|
|
struct SimpleTestRunner {
|
|
mut:
|
|
fname string
|
|
//
|
|
file_test_info VTestFileMetaInfo
|
|
fn_test_info VTestFnMetaInfo
|
|
fn_assert_passes u64
|
|
fn_passes u64
|
|
fn_fails u64
|
|
//
|
|
total_assert_passes u64
|
|
total_assert_fails u64
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) free() {
|
|
unsafe {
|
|
runner.fname.free()
|
|
runner.fn_test_info.free()
|
|
runner.file_test_info.free()
|
|
}
|
|
}
|
|
|
|
fn normalise_fname(name string) string {
|
|
return 'fn ' + name.replace('__', '.').replace('main.', '')
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) start(ntests int) {
|
|
eprintln('SimpleTestRunner testing start; expected: ${ntests} test functions')
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) finish() {
|
|
eprintln('SimpleTestRunner testing finish; fn:[passes: ${runner.fn_passes}, fails: ${runner.fn_fails}], assert:[passes: ${runner.total_assert_passes}, fails: ${runner.total_assert_fails}]')
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) exit_code() int {
|
|
if runner.fn_fails > 0 {
|
|
return 1
|
|
}
|
|
if runner.total_assert_fails > 0 {
|
|
return 2
|
|
}
|
|
return 0
|
|
}
|
|
|
|
//
|
|
|
|
fn (mut runner SimpleTestRunner) fn_start() bool {
|
|
runner.fn_assert_passes = 0
|
|
runner.fname = normalise_fname(runner.fn_test_info.name)
|
|
return true
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) fn_pass() {
|
|
runner.fn_passes++
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) fn_fail() {
|
|
runner.fn_fails++
|
|
eprintln('>>> fail ${runner.fname}')
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) fn_error(line_nr int, file string, mod string, fn_name string, errmsg string) {
|
|
eprintln('>>> SimpleTestRunner fn_error ${runner.fname}, line_nr: ${line_nr}, file: ${file}, mod: ${mod}, fn_name: ${fn_name}, errmsg: ${errmsg}')
|
|
}
|
|
|
|
//
|
|
|
|
fn (mut runner SimpleTestRunner) assert_pass(i &VAssertMetaInfo) {
|
|
runner.total_assert_passes++
|
|
runner.fn_assert_passes++
|
|
unsafe { i.free() }
|
|
}
|
|
|
|
fn (mut runner SimpleTestRunner) assert_fail(i &VAssertMetaInfo) {
|
|
runner.total_assert_fails++
|
|
eprintln('> failed assert ${runner.fn_assert_passes + 1} in ${runner.fname}, assert was in ${normalise_fname(i.fn_name)}, line: ${
|
|
i.line_nr + 1}')
|
|
unsafe { i.free() }
|
|
}
|