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

vfmt: extract v.util.find_working_diff_command, color_compare_files

This commit is contained in:
Delyan Angelov
2020-04-29 11:50:33 +03:00
parent dd3434598c
commit 0e765e34be
6 changed files with 36 additions and 57 deletions

View File

@ -73,7 +73,7 @@ pub fn (mut f Fmt) write(s string) {
f.out.write(tabs[f.indent])
} else {
// too many indents, do it the slow way:
for i in 0 .. f.indent {
for _ in 0 .. f.indent {
f.out.write('\t')
}
}

View File

@ -6,6 +6,7 @@ import v.fmt
import v.parser
import v.table
import v.pref
import v.util
const (
error_missing_vexe = 1
@ -22,9 +23,7 @@ fn test_fmt() {
}
vroot := os.dir(vexe)
tmpfolder := os.temp_dir()
diff_cmd := find_working_diff_command() or {
''
}
diff_cmd := util.find_working_diff_command() or { '' }
mut fmt_bench := benchmark.new_benchmark()
keep_input_files := os.walk_ext('$vroot/vlib/v/fmt/tests', '_keep.vv')
expected_input_files := os.walk_ext('$vroot/vlib/v/fmt/tests', '_expected.vv')
@ -56,7 +55,7 @@ fn test_fmt() {
}
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_${ifilename}')
os.write_file(vfmt_result_file, result_ocontent)
os.system('$diff_cmd --minimal --text --unified=2 --show-function-line="fn " "$opath" "$vfmt_result_file"')
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
continue
}
fmt_bench.ok()
@ -69,15 +68,3 @@ fn test_fmt() {
exit(error_failed_tests)
}
}
fn find_working_diff_command() ?string {
for diffcmd in ['colordiff', 'diff', 'colordiff.exe', 'diff.exe'] {
p := os.exec('$diffcmd --version') or {
continue
}
if p.exit_code == 0 {
return diffcmd
}
}
return error('no working diff command found')
}

View File

@ -6,6 +6,7 @@ import v.fmt
import v.parser
import v.table
import v.pref
import v.util
const (
error_missing_vexe = 1
@ -22,9 +23,7 @@ fn test_fmt() {
}
vroot := os.dir(vexe)
tmpfolder := os.temp_dir()
diff_cmd := find_working_diff_command() or {
''
}
diff_cmd := util.find_working_diff_command() or { '' }
mut fmt_bench := benchmark.new_benchmark()
// Lookup the existing test _input.vv files:
input_files := os.walk_ext('$vroot/vlib/v/fmt/tests', '_input.vv')
@ -58,7 +57,7 @@ fn test_fmt() {
}
vfmt_result_file := os.join_path(tmpfolder, 'vfmt_run_over_${ifilename}')
os.write_file(vfmt_result_file, result_ocontent)
os.system('$diff_cmd --minimal --text --unified=2 --show-function-line="fn " "$opath" "$vfmt_result_file"')
eprintln(util.color_compare_files(diff_cmd, opath, vfmt_result_file))
continue
}
fmt_bench.ok()
@ -71,15 +70,3 @@ fn test_fmt() {
exit(error_failed_tests)
}
}
fn find_working_diff_command() ?string {
for diffcmd in ['colordiff', 'diff', 'colordiff.exe', 'diff.exe'] {
p := os.exec('$diffcmd --version') or {
continue
}
if p.exit_code == 0 {
return diffcmd
}
}
return error('no working diff command found')
}

View File

@ -1,6 +1,7 @@
module runner
import os
import v.util
pub struct RunnerOptions {
pub:
@ -33,18 +34,9 @@ pub fn full_path_to_v(dirs_in int) string {
return vexec
}
fn find_working_diff_command() ?string {
for diffcmd in ['colordiff', 'diff', 'colordiff.exe', 'diff.exe'] {
p := os.exec('$diffcmd --version') or { continue }
if p.exit_code == 0 { return diffcmd }
}
return error('no working diff command found')
}
fn diff_files( file_result, file_expected string ) string {
diffcmd := find_working_diff_command() or { return err }
diff := os.exec('$diffcmd --minimal --text --unified=2 ${file_result} ${file_expected}') or { return 'found diff command "$diffcmd" does not work' }
return diff.output
diffcmd := util.find_working_diff_command() or { return err }
return util.color_compare_files(diffcmd, file_result, file_expected)
}
pub fn run_repl_file(wd string, vexec string, file string) ?string {

View File

@ -156,3 +156,27 @@ pub fn verror(kind, s string) {
}
exit(1)
}
pub fn find_working_diff_command() ?string {
for diffcmd in ['colordiff', 'diff', 'colordiff.exe', 'diff.exe'] {
p := os.exec('$diffcmd --version') or {
continue
}
if p.exit_code == 0 {
return diffcmd
}
}
return error('no working diff command found')
}
pub fn color_compare_files(diff_cmd, file1, file2 string) string {
if diff_cmd != '' {
full_cmd := '$diff_cmd --minimal --text --unified=2 ' +
' --show-function-line="fn " "$file1" "$file2" '
x := os.exec(full_cmd) or {
return 'comparison command: `${full_cmd}` failed'
}
return x.output
}
return ''
}