xref: /redis-3.2.3/tests/support/test.tcl (revision f166bb1d)
1set ::passed 0
2set ::failed 0
3set ::testnum 0
4
5proc test {name code okpattern} {
6    incr ::testnum
7    # if {$::testnum < $::first || $::testnum > $::last} return
8    puts -nonewline [format "#%03d %-68s " $::testnum $name]
9    flush stdout
10    if {[catch {set retval [uplevel 1 $code]} error]} {
11        puts "ERROR\n\nLogged warnings:"
12        foreach file [glob tests/tmp/server.[pid].*/stdout] {
13            set warnings [warnings_from_file $file]
14            if {[string length $warnings] > 0} {
15                puts $warnings
16            }
17        }
18        exit 1
19    }
20    if {$okpattern eq $retval || [string match $okpattern $retval]} {
21        puts "PASSED"
22        incr ::passed
23    } else {
24        puts "!! ERROR expected\n'$okpattern'\nbut got\n'$retval'"
25        incr ::failed
26    }
27    if {$::traceleaks} {
28        if {![string match {*0 leaks*} [exec leaks redis-server]]} {
29            puts "--------- Test $::testnum LEAKED! --------"
30            exit 1
31        }
32    }
33}
34