diff --git a/tools/test.py b/tools/test.py index 0e5749a36fe264..5d1d2774534720 100755 --- a/tools/test.py +++ b/tools/test.py @@ -29,6 +29,7 @@ import imp +import logging import optparse import os import platform @@ -45,6 +46,8 @@ from Queue import Queue, Empty import utils +logger = logging.getLogger('testrunner') + VERBOSE = False @@ -225,7 +228,7 @@ def HasRun(self, output): class TapProgressIndicator(SimpleProgressIndicator): def Starting(self): - print '1..%i' % len(self.cases) + logger.info('1..%i' % len(self.cases)) self._done = 0 def AboutToRun(self, case): @@ -238,16 +241,16 @@ def HasRun(self, output): status_line = 'not ok %i - %s' % (self._done, command) if FLAKY in output.test.outcomes and self.flaky_tests_mode == "dontcare": status_line = status_line + " # TODO : Fix flaky test" - print status_line + logger.info(status_line) for l in output.output.stderr.splitlines(): - print '#' + l + logger.info('#' + l) for l in output.output.stdout.splitlines(): - print '#' + l + logger.info('#' + l) else: status_line = 'ok %i - %s' % (self._done, command) if FLAKY in output.test.outcomes: status_line = status_line + " # TODO : Fix flaky test" - print status_line + logger.info(status_line) duration = output.test.duration @@ -255,9 +258,9 @@ def HasRun(self, output): total_seconds = (duration.microseconds + (duration.seconds + duration.days * 24 * 3600) * 10**6) / 10**6 - print ' ---' - print ' duration_ms: %d.%d' % (total_seconds, duration.microseconds / 1000) - print ' ...' + logger.info(' ---') + logger.info(' duration_ms: %d.%d' % (total_seconds, duration.microseconds / 1000)) + logger.info(' ...') def Done(self): pass @@ -1192,6 +1195,8 @@ def BuildOptions(): default='release') result.add_option("-v", "--verbose", help="Verbose output", 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", default=[], action="append") result.add_option("-p", "--progress", @@ -1361,6 +1366,13 @@ def Main(): parser.print_help() 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]), '..')) suites = GetSuites(join(workspace, 'test')) repositories = [TestRepository(join(workspace, 'test', name)) for name in suites]