@ -29,6 +29,7 @@
import imp
import imp
import logging
import optparse
import optparse
import os
import os
import platform
import platform
@ -45,6 +46,8 @@ from datetime import datetime
from Queue import Queue , Empty
from Queue import Queue , Empty
import utils
import utils
logger = logging . getLogger ( ' testrunner ' )
VERBOSE = False
VERBOSE = False
@ -225,7 +228,7 @@ class DotsProgressIndicator(SimpleProgressIndicator):
class TapProgressIndicator ( SimpleProgressIndicator ) :
class TapProgressIndicator ( SimpleProgressIndicator ) :
def Starting ( self ) :
def Starting ( self ) :
print ' 1.. %i ' % len ( self . cases )
logger . info ( ' 1.. %i ' % len ( self . cases ) )
self . _done = 0
self . _done = 0
def AboutToRun ( self , case ) :
def AboutToRun ( self , case ) :
@ -238,16 +241,16 @@ class TapProgressIndicator(SimpleProgressIndicator):
status_line = ' not ok %i - %s ' % ( self . _done , command )
status_line = ' not ok %i - %s ' % ( self . _done , command )
if FLAKY in output . test . outcomes and self . flaky_tests_mode == " dontcare " :
if FLAKY in output . test . outcomes and self . flaky_tests_mode == " dontcare " :
status_line = status_line + " # TODO : Fix flaky test "
status_line = status_line + " # TODO : Fix flaky test "
print status_line
logger . info ( status_line )
for l in output . output . stderr . splitlines ( ) :
for l in output . output . stderr . splitlines ( ) :
print ' # ' + l
logger . info ( ' # ' + l )
for l in output . output . stdout . splitlines ( ) :
for l in output . output . stdout . splitlines ( ) :
print ' # ' + l
logger . info ( ' # ' + l )
else :
else :
status_line = ' ok %i - %s ' % ( self . _done , command )
status_line = ' ok %i - %s ' % ( self . _done , command )
if FLAKY in output . test . outcomes :
if FLAKY in output . test . outcomes :
status_line = status_line + " # TODO : Fix flaky test "
status_line = status_line + " # TODO : Fix flaky test "
print status_line
logger . info ( status_line )
duration = output . test . duration
duration = output . test . duration
@ -255,9 +258,9 @@ class TapProgressIndicator(SimpleProgressIndicator):
total_seconds = ( duration . microseconds +
total_seconds = ( duration . microseconds +
( duration . seconds + duration . days * 24 * 3600 ) * 10 * * 6 ) / 10 * * 6
( duration . seconds + duration . days * 24 * 3600 ) * 10 * * 6 ) / 10 * * 6
print ' --- '
logger . info ( ' --- ' )
print ' duration_ms: %d . %d ' % ( total_seconds , duration . microseconds / 1000 )
logger . info ( ' duration_ms: %d . %d ' % ( total_seconds , duration . microseconds / 1000 ) )
print ' ... '
logger . info ( ' ... ' )
def Done ( self ) :
def Done ( self ) :
pass
pass
@ -1192,6 +1195,8 @@ def BuildOptions():
default = ' release ' )
default = ' release ' )
result . add_option ( " -v " , " --verbose " , help = " Verbose output " ,
result . add_option ( " -v " , " --verbose " , help = " Verbose output " ,
default = False , action = " store_true " )
default = False , action = " store_true " )
result . add_option ( ' --logfile ' , dest = ' logfile ' ,
help = ' write test output to file. NOTE: this only applies the tap progress indicator ' )
result . add_option ( " -S " , dest = " scons_flags " , help = " Flag to pass through to scons " ,
result . add_option ( " -S " , dest = " scons_flags " , help = " Flag to pass through to scons " ,
default = [ ] , action = " append " )
default = [ ] , action = " append " )
result . add_option ( " -p " , " --progress " ,
result . add_option ( " -p " , " --progress " ,
@ -1361,6 +1366,13 @@ def Main():
parser . print_help ( )
parser . print_help ( )
return 1
return 1
ch = logging . StreamHandler ( sys . stdout )
logger . addHandler ( ch )
logger . setLevel ( ' INFO ' )
if options . logfile :
fh = logging . FileHandler ( options . logfile )
logger . addHandler ( fh )
workspace = abspath ( join ( dirname ( sys . argv [ 0 ] ) , ' .. ' ) )
workspace = abspath ( join ( dirname ( sys . argv [ 0 ] ) , ' .. ' ) )
suites = GetSuites ( join ( workspace , ' test ' ) )
suites = GetSuites ( join ( workspace , ' test ' ) )
repositories = [ TestRepository ( join ( workspace , ' test ' , name ) ) for name in suites ]
repositories = [ TestRepository ( join ( workspace , ' test ' , name ) ) for name in suites ]