29
29
30
30
31
31
import imp
32
+ import logging
32
33
import optparse
33
34
import os
34
35
import platform
45
46
from datetime import datetime
46
47
from Queue import Queue , Empty
47
48
49
+ logger = logging .getLogger ('testrunner' )
50
+
48
51
VERBOSE = False
49
52
50
53
@@ -225,7 +228,7 @@ def HasRun(self, output):
225
228
class TapProgressIndicator (SimpleProgressIndicator ):
226
229
227
230
def Starting (self ):
228
- print '1..%i' % len (self .cases )
231
+ logger . info ( '1..%i' % len (self .cases ) )
229
232
self ._done = 0
230
233
231
234
def AboutToRun (self , case ):
@@ -238,26 +241,26 @@ def HasRun(self, output):
238
241
status_line = 'not ok %i - %s' % (self ._done , command )
239
242
if FLAKY in output .test .outcomes and self .flaky_tests_mode == "dontcare" :
240
243
status_line = status_line + " # TODO : Fix flaky test"
241
- print status_line
244
+ logger . info ( status_line )
242
245
for l in output .output .stderr .splitlines ():
243
- print '#' + l
246
+ logger . info ( '#' + l )
244
247
for l in output .output .stdout .splitlines ():
245
- print '#' + l
248
+ logger . info ( '#' + l )
246
249
else :
247
250
status_line = 'ok %i - %s' % (self ._done , command )
248
251
if FLAKY in output .test .outcomes :
249
252
status_line = status_line + " # TODO : Fix flaky test"
250
- print status_line
253
+ logger . info ( status_line )
251
254
252
255
duration = output .test .duration
253
256
254
257
# total_seconds() was added in 2.7
255
258
total_seconds = (duration .microseconds +
256
259
(duration .seconds + duration .days * 24 * 3600 ) * 10 ** 6 ) / 10 ** 6
257
260
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 ( ' ...' )
261
264
262
265
def Done (self ):
263
266
pass
@@ -1192,6 +1195,8 @@ def BuildOptions():
1192
1195
default = 'release' )
1193
1196
result .add_option ("-v" , "--verbose" , help = "Verbose output" ,
1194
1197
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' )
1195
1200
result .add_option ("-S" , dest = "scons_flags" , help = "Flag to pass through to scons" ,
1196
1201
default = [], action = "append" )
1197
1202
result .add_option ("-p" , "--progress" ,
@@ -1368,6 +1373,13 @@ def Main():
1368
1373
parser .print_help ()
1369
1374
return 1
1370
1375
1376
+ ch = logging .StreamHandler (sys .stdout )
1377
+ logger .addHandler (ch )
1378
+ logger .setLevel ('INFO' )
1379
+ if options .logfile :
1380
+ fh = logging .FileHandler (options .logfile )
1381
+ logger .addHandler (fh )
1382
+
1371
1383
workspace = abspath (join (dirname (sys .argv [0 ]), '..' ))
1372
1384
suites = GetSuites (join (workspace , 'test' ))
1373
1385
repositories = [TestRepository (join (workspace , 'test' , name )) for name in suites ]
0 commit comments