]> git.saurik.com Git - redis.git/blobdiff - tests/support/test.tcl
Configurable synchronous I/O timeout
[redis.git] / tests / support / test.tcl
index c70cc049a9750cc0649a8af97b450d1cf76a84d6..dff2d2976935cc57a7a34eda45db74fed639efa1 100644 (file)
@@ -44,8 +44,27 @@ proc assert_type {type key} {
     assert_equal $type [r type $key]
 }
 
+# Test if TERM looks like to support colors
+proc color_term {} {
+    expr {[info exists ::env(TERM)] && [string match *xterm* $::env(TERM)]}
+}
+
+# This is called before starting the test
+proc announce_test {s} {
+    if {[color_term]} {
+        puts -nonewline "$s\033\[0K"
+        flush stdout
+        set ::backward_count [string length $s]
+    }
+}
+
+# This is called after the test finished
 proc colored_dot {tags passed} {
-    if {[info exists ::env(TERM)] && [string match $::env(TERM) xterm]} {
+    if {[color_term]} {
+        # Go backward and delete what announc_test function printed.
+        puts -nonewline "\033\[${::backward_count}D\033\[0K\033\[J"
+
+        # Print a coloured char, accordingly to test outcome and tags.
         if {[lsearch $tags list] != -1} {
             set colorcode {31}
             set ch L
@@ -69,7 +88,7 @@ proc colored_dot {tags passed} {
             if {$passed} {
                 puts -nonewline "\033\[0;${colorcode};40m"
             } else {
-                puts -nonewline "\033\[0;40;${colorcode}m"
+                puts -nonewline "\033\[7;${colorcode};40m"
             }
             puts -nonewline $ch
             puts -nonewline "\033\[0m"
@@ -115,6 +134,8 @@ proc test {name code {okpattern undefined}} {
     if {$::verbose} {
         puts -nonewline [format "#%03d %-68s " $::num_tests $name]
         flush stdout
+    } else {
+        announce_test $name
     }
 
     if {[catch {set retval [uplevel 1 $code]} error]} {