68 lines
1.9 KiB
V
68 lines
1.9 KiB
V
import os
|
|
|
|
fn full_path_to_v() string {
|
|
vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' }
|
|
vexec := os.dir(os.dir(os.dir(os.dir( os.executable() )))) + os.PathSeparator + vname
|
|
return vexec
|
|
}
|
|
|
|
fn test_the_v_compiler_can_be_invoked() {
|
|
vexec := full_path_to_v()
|
|
println('vexecutable: $vexec')
|
|
/*
|
|
args := os.args
|
|
vreal := os.realpath('v')
|
|
myself := os.realpath( os.executable() )
|
|
wd := os.getwd() + os.PathSeparator
|
|
println('args are: $args')
|
|
println('vreal : $vreal')
|
|
println('myself : $myself')
|
|
println('wd : $wd')
|
|
*/
|
|
assert vexec != ''
|
|
|
|
vcmd := '$vexec --version'
|
|
r := os.exec(vcmd) or { panic(err) }
|
|
//println('"$vcmd" exit_code: $r.exit_code | output: $r.output')
|
|
assert r.exit_code == 0
|
|
|
|
vcmd_error := '$vexec nonexisting.v'
|
|
r_error := os.exec(vcmd_error) or { panic(err) }
|
|
//println('"$vcmd_error" exit_code: $r_error.exit_code | output: $r_error.output')
|
|
assert r_error.exit_code == 1
|
|
assert r_error.output == '`nonexisting.v` does not exist'
|
|
}
|
|
|
|
fn test_the_v_repl() {
|
|
test_files := os.walk_ext('.', '.repl')
|
|
wd := os.getwd() + os.PathSeparator
|
|
vexec := full_path_to_v()
|
|
|
|
for file in test_files {
|
|
fcontent := os.read_file(file) or {
|
|
assert false
|
|
break
|
|
}
|
|
content := fcontent.replace('\r', '')
|
|
input := content.all_before('===output===\n')
|
|
output := content.all_after('===output===\n')
|
|
|
|
input_temporary_filename := 'input_temporary_filename.txt'
|
|
os.write_file(input_temporary_filename, input)
|
|
defer { os.rm(input_temporary_filename) }
|
|
r := os.exec('$vexec < $input_temporary_filename') or {
|
|
assert false
|
|
break
|
|
}
|
|
result := r.output.replace('\r','').replace('>>> ', '').replace('>>>', '').replace('... ', '').all_after('Use Ctrl-C or `exit` to exit\n').replace( wd, '' )
|
|
assert result == output
|
|
if result != output {
|
|
println(file)
|
|
println('Got : |$result|')
|
|
println('Expected : |$output|')
|
|
} else {
|
|
println('Repl file $file is OK')
|
|
}
|
|
}
|
|
}
|