]> git.saurik.com Git - redis.git/commitdiff
Merge remote branch 'pietern/testverbosity'
authorantirez <antirez@gmail.com>
Fri, 10 Dec 2010 16:24:03 +0000 (17:24 +0100)
committerantirez <antirez@gmail.com>
Fri, 10 Dec 2010 16:24:03 +0000 (17:24 +0100)
1  2 
tests/support/server.tcl
tests/test_helper.tcl

diff --combined tests/support/server.tcl
index 144bc2f525ffd05671935045baf7e0278915b919,39038bd699cfadb60b273c8d1c386254d8a5e699..4f48d22dcafbd023acde952340890bc262a7ee10
@@@ -83,9 -83,13 +83,13 @@@ proc ping_server {host port} 
          }
          close $fd
      } e]} {
-         puts -nonewline "."
+         if {$::verbose} {
+             puts -nonewline "."
+         }
      } else {
-         puts -nonewline "ok"
+         if {$::verbose} {
+             puts -nonewline "ok"
+         }
      }
      return $retval
  }
@@@ -171,7 -175,7 +175,7 @@@ proc start_server {options {code undefi
      set stderr [format "%s/%s" [dict get $config "dir"] "stderr"]
  
      if {$::valgrind} {
 -        exec valgrind src/redis-server $config_file > $stdout 2> $stderr &
 +        exec valgrind --suppressions=src/valgrind.sup src/redis-server $config_file > $stdout 2> $stderr &
      } else {
          exec src/redis-server $config_file > $stdout 2> $stderr &
      }
      set retrynum 20
      set serverisup 0
  
-     puts -nonewline "=== ($tags) Starting server ${::host}:${::port} "
+     if {$::verbose} {
+         puts -nonewline "=== ($tags) Starting server ${::host}:${::port} "
+     }
      after 10
      if {$code ne "undefined"} {
          while {[incr retrynum -1]} {
      } else {
          set serverisup 1
      }
-     puts {}
+     if {$::verbose} {
+         puts ""
+     }
  
      if {!$serverisup} {
          error_and_quit $config_file [exec cat $stderr]
          reconnect
  
          # execute provided block
-         set curnum $::testnum
-         if {![catch { uplevel 1 $code } err]} {
-             # zero exit status is good
-             unset err
+         set num_tests $::num_tests
+         if {[catch { uplevel 1 $code } error]} {
+             set backtrace $::errorInfo
+             # Kill the server without checking for leaks
+             dict set srv "skipleaks" 1
+             kill_server $srv
+             # Print warnings from log
+             puts [format "\nLogged warnings (pid %d):" [dict get $srv "pid"]]
+             set warnings [warnings_from_file [dict get $srv "stdout"]]
+             if {[string length $warnings] > 0} {
+                 puts "$warnings"
+             } else {
+                 puts "(none)"
+             }
+             puts ""
+             error $error $backtrace
          }
  
-         if {$curnum == $::testnum} {
-             # don't check for leaks when no tests were executed
+         # Don't do the leak check when no tests were run
+         if {$num_tests == $::num_tests} {
              dict set srv "skipleaks" 1
          }
  
          # pop the server object
          set ::servers [lrange $::servers 0 end-1]
-         
-         # allow an exception to bubble up the call chain but still kill this
-         # server, because we want to reuse the ports when the tests are re-run
-         if {[info exists err]} {
-             if {$err eq "exception"} {
-                 puts [format "Logged warnings (pid %d):" [dict get $srv "pid"]]
-                 set warnings [warnings_from_file [dict get $srv "stdout"]]
-                 if {[string length $warnings] > 0} {
-                     puts "$warnings"
-                 } else {
-                     puts "(none)"
-                 }
-                 # kill this server without checking for leaks
-                 dict set srv "skipleaks" 1
-                 kill_server $srv
-                 error "exception"
-             } elseif {[string length $err] > 0} {
-                 puts "Error executing the suite, aborting..."
-                 puts $err
-                 exit 1
-             }
-         }
  
          set ::tags [lrange $::tags 0 end-[llength $tags]]
          kill_server $srv
diff --combined tests/test_helper.tcl
index 82c4f91a5a4c9777ba199298a43d8349c8bf0b10,1852fa7b5d7485473fab2f851def5e0f3148e723..2b7a8957772dbd1e57b4f73bfa362fe8392f1205
@@@ -13,13 -13,17 +13,17 @@@ set ::host 127.0.0.
  set ::port 16379
  set ::traceleaks 0
  set ::valgrind 0
+ set ::verbose 0
  set ::denytags {}
  set ::allowtags {}
  set ::external 0; # If "1" this means, we are running against external instance
  set ::file ""; # If set, runs only the tests in this comma separated list
+ set ::curfile ""; # Hold the filename of the current suite
  
  proc execute_tests name {
-     source "tests/$name.tcl"
+     set path "tests/$name.tcl"
+     set ::curfile $path
+     source $path
  }
  
  # Setup a list to hold a stack of server configs. When calls to start_server
@@@ -147,9 -151,27 +151,27 @@@ proc main {} 
      }
  
      cleanup
-     puts "\n[expr $::passed+$::failed] tests, $::passed passed, $::failed failed"
-     if {$::failed > 0} {
-         puts "\n*** WARNING!!! $::failed FAILED TESTS ***\n"
+     puts "\n[expr $::num_tests] tests, $::num_passed passed, $::num_failed failed\n"
+     if {$::num_failed > 0} {
+         set curheader ""
+         puts "Failures:"
+         foreach {test} $::tests_failed {
+             set header [lindex $test 0]
+             append header " ("
+             append header [join [lindex $test 1] ","]
+             append header ")"
+             if {$curheader ne $header} {
+                 set curheader $header
+                 puts "\n$curheader:"
+             }
+             set name [lindex $test 2]
+             set msg [lindex $test 3]
+             puts "- $name: $msg"
+         }
+         puts ""
          exit 1
      }
  }
@@@ -167,8 -189,6 +189,8 @@@ for {set j 0} {$j < [llength $argv]} {i
              }
          }
          incr j
 +    } elseif {$opt eq {--valgrind}} {
 +        set ::valgrind 1
      } elseif {$opt eq {--file}} {
          set ::file $arg
          incr j
      } elseif {$opt eq {--port}} {
          set ::port $arg
          incr j
+     } elseif {$opt eq {--verbose}} {
+         set ::verbose 1
      } else {
          puts "Wrong argument: $opt"
          exit 1
@@@ -189,7 -211,7 +213,7 @@@ if {[catch { main } err]} 
      if {[string length $err] > 0} {
          # only display error when not generated by the test suite
          if {$err ne "exception"} {
-             puts $err
+             puts $::errorInfo
          }
          exit 1
      }