mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
63 lines
1.6 KiB
V
63 lines
1.6 KiB
V
// This test uses the script cmd/tools/check_retry.vsh
|
|
import os
|
|
import log
|
|
|
|
const vexe = @VEXE
|
|
const vroot = os.dir(vexe)
|
|
|
|
const is_ci = os.getenv('CI') != ''
|
|
|
|
fn dump_on_ci[T](x T) {
|
|
if is_ci {
|
|
dump(x)
|
|
}
|
|
}
|
|
|
|
fn run(cmd string) os.Result {
|
|
log.info('>>> running cmd: ${cmd}')
|
|
defer {
|
|
log.info('>>> finished cmd: ${cmd}')
|
|
}
|
|
return os.execute(cmd)
|
|
}
|
|
|
|
fn test_retry() {
|
|
log.use_stdout()
|
|
log.warn('start...')
|
|
defer {
|
|
log.warn('... done')
|
|
}
|
|
tpath := os.join_path(os.vtmp_dir(), 'vretry_test')
|
|
os.rmdir_all(tpath) or {}
|
|
os.mkdir_all(tpath)!
|
|
defer {
|
|
os.rmdir_all(tpath) or {}
|
|
}
|
|
os.chdir(vroot)!
|
|
fail_cmd := '${vexe} run cmd/tools/check_retry.vsh too many arguments'
|
|
if is_ci {
|
|
// Skip longer running test on local runs.
|
|
res := run('${vexe} retry ${fail_cmd}')
|
|
assert res.exit_code != 0
|
|
assert res.output.contains('error: exceeded maximum number of retries')
|
|
}
|
|
|
|
mut res := run('${vexe} retry -d 0.2 -r 3 ${fail_cmd}')
|
|
dump_on_ci(res)
|
|
assert res.exit_code != 0
|
|
assert res.output.contains('error: exceeded maximum number of retries (3)!')
|
|
|
|
pass_cmd := '${vexe} run cmd/tools/check_retry.vsh'
|
|
res = run('${vexe} retry ${pass_cmd}')
|
|
dump_on_ci(res)
|
|
assert res.exit_code == 0
|
|
assert res.output == run(pass_cmd).output
|
|
|
|
// Include flags on the cmd as well.
|
|
pass_cmd_with_flags := '${vexe} run cmd/tools/check_retry.vsh --list -x -- -b js arguments'
|
|
res = run('${vexe} retry -r 3 -- ${pass_cmd_with_flags}')
|
|
dump_on_ci(res)
|
|
assert res.exit_code == 0
|
|
output_trimmed := res.output.trim_space()
|
|
assert output_trimmed == "['--list', '-x', '--', '-b', 'js', 'arguments']"
|
|
}
|