Index: src/scripts/generate_test_report |
diff --git a/src/scripts/generate_test_report b/src/scripts/generate_test_report |
index 079301088dad9f4a20481300fc32b3898144cc8e..9235482cb9818f2493afbb97d30430933ee884a3 100755 |
--- a/src/scripts/generate_test_report |
+++ b/src/scripts/generate_test_report |
@@ -18,6 +18,9 @@ import re |
import sys |
+_STDOUT_IS_TTY = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty() |
+ |
+ |
class Color(object): |
"""Conditionally wraps text in ANSI color escape sequences.""" |
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8) |
@@ -55,7 +58,7 @@ def Die(message): |
Args: |
message: The message to be emitted before exiting. |
""" |
- print Color().Color(Color.RED, '\nERROR: ' + message) |
+ print Color(_STDOUT_IS_TTY).Color(Color.RED, '\nERROR: ' + message) |
sys.exit(1) |
@@ -148,6 +151,17 @@ class ReportGenerator(object): |
self._results[testdir] = {'status': status, |
'perf': perf} |
+ def _CollectResultsRec(self, resdir): |
+ """Recursively collect results into the self._results dictionary. |
+ |
+ Args: |
+ resdir: results/test directory to parse results from and recurse into. |
+ """ |
+ |
+ self._CollectResult(resdir) |
+ for testdir in glob.glob(os.path.join(resdir, '*')): |
+ self._CollectResultsRec(testdir) |
+ |
def _CollectResults(self): |
"""Parses results into the self._results dictionary. |
@@ -158,12 +172,7 @@ class ReportGenerator(object): |
for resdir in self._args: |
if not os.path.isdir(resdir): |
Die('\'%s\' does not exist' % resdir) |
- |
- # Check the top level result directory, in case the control file or |
- # autoserv have signalled failures. Then check subdirectories. |
- self._CollectResult(resdir) |
- for testdir in glob.glob(os.path.join(resdir, '*')): |
- self._CollectResult(testdir) |
+ self._CollectResultsRec(resdir) |
if not self._results: |
Die('no test directories found') |
@@ -235,7 +244,7 @@ class ReportGenerator(object): |
print 'Total PASS: ' + self._color.Color(Color.BOLD, pass_str) |
def Run(self): |
- """Run report generation.""" |
+ """Runs report generation.""" |
self._CollectResults() |
self._GenerateReportText() |
@@ -244,8 +253,8 @@ def main(): |
usage = 'Usage: %prog [options] result-directories...' |
parser = optparse.OptionParser(usage=usage) |
parser.add_option('--color', dest='color', action='store_true', |
- default=True, |
- help='Use color for text reports [default]') |
+ default=_STDOUT_IS_TTY, |
+ help='Use color for text reports [default if TTY stdout]') |
parser.add_option('--no-color', dest='color', action='store_false', |
help='Don\'t use color for text reports') |
parser.add_option('--perf', dest='perf', action='store_true', |