mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
35 lines
817 B
V
35 lines
817 B
V
module main
|
|
|
|
import v.util.diff
|
|
import term
|
|
import os
|
|
|
|
const vexe = @VEXE
|
|
const vroot = os.dir(vexe)
|
|
|
|
fn test_cli_programs() {
|
|
testdata := os.join_path(vroot, 'vlib', 'cli', 'testdata')
|
|
mut has_err := false
|
|
for test in os.walk_ext(testdata, '.vv') {
|
|
print(test + ' ')
|
|
out_path := test.all_before_last('.vv') + '.out'
|
|
if !os.exists(out_path) {
|
|
println(term.red('FAIL'))
|
|
eprintln('failed to find output file for `${test}`')
|
|
has_err = true
|
|
continue
|
|
}
|
|
expected_out := os.read_file(out_path)!.replace('\r\n', '\n')
|
|
test_out := os.execute('${vexe} run ${test}').output.replace('\r\n', '\n')
|
|
diff_ := diff.compare_text(expected_out, test_out)!
|
|
if diff_ != '' {
|
|
println(term.red('FAIL'))
|
|
eprintln(diff_)
|
|
has_err = true
|
|
} else {
|
|
println(term.green('OK'))
|
|
}
|
|
}
|
|
assert !has_err
|
|
}
|