2929
3030
3131import imp
32+ import logging
3233import optparse
3334import os
3435import platform
4546from Queue import Queue , Empty
4647import utils
4748
49+ logger = logging .getLogger ('testrunner' )
50+
4851VERBOSE = False
4952
5053
@@ -225,7 +228,7 @@ def HasRun(self, output):
225228class TapProgressIndicator (SimpleProgressIndicator ):
226229
227230 def Starting (self ):
228- print '1..%i' % len (self .cases )
231+ logger . info ( '1..%i' % len (self .cases ) )
229232 self ._done = 0
230233
231234 def AboutToRun (self , case ):
@@ -238,26 +241,26 @@ def HasRun(self, output):
238241 status_line = 'not ok %i - %s' % (self ._done , command )
239242 if FLAKY in output .test .outcomes and self .flaky_tests_mode == "dontcare" :
240243 status_line = status_line + " # TODO : Fix flaky test"
241- print status_line
244+ logger . info ( status_line )
242245 for l in output .output .stderr .splitlines ():
243- print '#' + l
246+ logger . info ( '#' + l )
244247 for l in output .output .stdout .splitlines ():
245- print '#' + l
248+ logger . info ( '#' + l )
246249 else :
247250 status_line = 'ok %i - %s' % (self ._done , command )
248251 if FLAKY in output .test .outcomes :
249252 status_line = status_line + " # TODO : Fix flaky test"
250- print status_line
253+ logger . info ( status_line )
251254
252255 duration = output .test .duration
253256
254257 # total_seconds() was added in 2.7
255258 total_seconds = (duration .microseconds +
256259 (duration .seconds + duration .days * 24 * 3600 ) * 10 ** 6 ) / 10 ** 6
257260
258- print ' ---'
259- print ' duration_ms: %d.%d' % (total_seconds , duration .microseconds / 1000 )
260- print ' ...'
261+ logger . info ( ' ---' )
262+ logger . info ( ' duration_ms: %d.%d' % (total_seconds , duration .microseconds / 1000 ) )
263+ logger . info ( ' ...' )
261264
262265 def Done (self ):
263266 pass
@@ -1192,6 +1195,8 @@ def BuildOptions():
11921195 default = 'release' )
11931196 result .add_option ("-v" , "--verbose" , help = "Verbose output" ,
11941197 default = False , action = "store_true" )
1198+ result .add_option ('--logfile' , dest = 'logfile' ,
1199+ help = 'write test output to file. NOTE: this only applies the tap progress indicator' )
11951200 result .add_option ("-S" , dest = "scons_flags" , help = "Flag to pass through to scons" ,
11961201 default = [], action = "append" )
11971202 result .add_option ("-p" , "--progress" ,
@@ -1361,6 +1366,13 @@ def Main():
13611366 parser .print_help ()
13621367 return 1
13631368
1369+ ch = logging .StreamHandler (sys .stdout )
1370+ logger .addHandler (ch )
1371+ logger .setLevel ('INFO' )
1372+ if options .logfile :
1373+ fh = logging .FileHandler (options .logfile )
1374+ logger .addHandler (fh )
1375+
13641376 workspace = abspath (join (dirname (sys .argv [0 ]), '..' ))
13651377 suites = GetSuites (join (workspace , 'test' ))
13661378 repositories = [TestRepository (join (workspace , 'test' , name )) for name in suites ]
0 commit comments