tests: simplify print mode logic

pull/6651/head
Delyan Angelov 2020-10-18 20:02:47 +03:00
parent 2440413310
commit 9cf5c9ac43
2 changed files with 33 additions and 17 deletions

View File

@ -17,8 +17,8 @@ pub mut:
vargs string vargs string
failed bool failed bool
benchmark benchmark.Benchmark benchmark benchmark.Benchmark
show_ok_tests bool silent_mode bool
expand_result bool progress_mode bool
root_relative bool // used by CI runs, so that the output is stable everywhere root_relative bool // used by CI runs, so that the output is stable everywhere
nmessages chan string // many publishers, single consumer/printer nmessages chan string // many publishers, single consumer/printer
nmessage_idx int // currently printed message index nmessage_idx int // currently printed message index
@ -31,29 +31,47 @@ pub fn (mut ts TestSession) append_message(msg string) {
pub fn (mut ts TestSession) print_messages() { pub fn (mut ts TestSession) print_messages() {
empty := term.header(' ', ' ') empty := term.header(' ', ' ')
mut print_msg_time := time.new_stopwatch({})
for { for {
mut nm := <-ts.nmessages // get a message from the channel of messages to be printed:
if nm == '' { mut rmessage := <-ts.nmessages
if rmessage == '' {
// a sentinel for stopping the printing thread // a sentinel for stopping the printing thread
if ts.show_ok_tests && !ts.expand_result { if !ts.silent_mode && ts.progress_mode {
eprintln('') eprintln('')
} }
ts.nprint_ended <- 0 ts.nprint_ended <- 0
return return
} }
ts.nmessage_idx++ ts.nmessage_idx++
msg := nm.replace('TMP1', '${ts.nmessage_idx:1d}').replace('TMP2', '${ts.nmessage_idx:2d}').replace('TMP3', msg := rmessage.replace('TMP1', '${ts.nmessage_idx:1d}').replace('TMP2', '${ts.nmessage_idx:2d}').replace('TMP3',
'${ts.nmessage_idx:3d}') '${ts.nmessage_idx:3d}')
if ts.expand_result { is_ok := msg.contains('OK')
//
time_passed := print_msg_time.elapsed().seconds()
if time_passed > 10 && ts.silent_mode && is_ok {
// Even if OK tests are suppressed,
// show *at least* 1 result every 10 seconds,
// otherwise the CI can seem stuck ...
eprintln(msg) eprintln(msg)
} else { print_msg_time.restart()
if msg.contains('OK') { continue
}
if ts.progress_mode {
// progress mode, the last line is rewritten many times:
if is_ok && !ts.silent_mode {
print('\r$empty\r$msg') print('\r$empty\r$msg')
} else { } else {
// the last \n is needed, so SKIP/FAIL messages // the last \n is needed, so SKIP/FAIL messages
// will not get overwritten by the OK ones // will not get overwritten by the OK ones
eprint('\r$empty\r$msg\n') eprint('\r$empty\r$msg\n')
} }
continue
}
if !ts.silent_mode || !is_ok {
// normal expanded mode, or failures in -silent mode
eprintln(msg)
continue
} }
} }
} }
@ -67,15 +85,15 @@ pub fn new_test_session(_vargs string) TestSession {
skip_files << "examples/sokol/fonts.v" skip_files << "examples/sokol/fonts.v"
skip_files << "examples/sokol/drawing.v" skip_files << "examples/sokol/drawing.v"
} }
vargs := _vargs.replace('-silent', '').replace('-expand', '') vargs := _vargs.replace('-progress', '').replace('-progress', '')
vexe := pref.vexe_path() vexe := pref.vexe_path()
return TestSession{ return TestSession{
vexe: vexe vexe: vexe
vroot: os.dir(vexe) vroot: os.dir(vexe)
skip_files: skip_files skip_files: skip_files
vargs: vargs vargs: vargs
show_ok_tests: !_vargs.contains('-silent') silent_mode: _vargs.contains('-silent')
expand_result: _vargs.contains('-expand') progress_mode: _vargs.contains('-progress')
} }
} }
@ -214,9 +232,7 @@ fn worker_trunner(mut p sync.PoolProcessor, idx int, thread_id int) voidptr {
else { else {
ts.benchmark.ok() ts.benchmark.ok()
tls_bench.ok() tls_bench.ok()
if ts.show_ok_tests { ts.append_message(tls_bench.step_message_ok(relative_file))
ts.append_message(tls_bench.step_message_ok(relative_file))
}
} }
} }
if os.exists(generated_binary_fpath) { if os.exists(generated_binary_fpath) {

View File

@ -155,8 +155,8 @@ pub fn parse_args(args []string) (&Preferences, string) {
command_pos = i command_pos = i
} }
} }
'-expand' { '-progress' {
// processed by testing tools // processed by testing tools in cmd/tools/modules/testing/common.v
} }
'-silent' { '-silent' {
res.output_mode = .silent res.output_mode = .silent