v
Зеркало из https://github.com/vlang/v
1module main
2
3import v.util.diff
4import term
5import os
6
7const vexe = @VEXE
8const vroot = os.dir(vexe)
9
10fn test_cli_programs() {
11testdata := os.join_path(vroot, 'vlib', 'cli', 'testdata')
12mut has_err := false
13for test in os.walk_ext(testdata, '.vv') {
14print(test + ' ')
15out_path := test.all_before_last('.vv') + '.out'
16if !os.exists(out_path) {
17println(term.red('FAIL'))
18eprintln('failed to find output file for `${test}`')
19has_err = true
20continue
21}
22expected_out := os.read_file(out_path)!.replace('\r\n', '\n')
23test_out := os.execute('${vexe} run ${test}').output.replace('\r\n', '\n')
24diff_ := diff.compare_text(expected_out, test_out)!
25if diff_ != '' {
26println(term.red('FAIL'))
27eprintln(diff_)
28has_err = true
29} else {
30println(term.green('OK'))
31}
32}
33assert !has_err
34}
35