From 22b88e1c48ae9073b0aef3eda6ecbddee7da456b Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sat, 21 Nov 2015 12:37:49 -0800 Subject: [PATCH] test: add TAP diagnostic message for retried tests Tests on SmartOS are sometimes retried due to a SmartOS issue on CI. When this happens, a TAP diagnostic message is written. PR-URL: https://github.com/nodejs/node/pull/3960 Reviewed-By: Fedor Indutny --- tools/test.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/test.py b/tools/test.py index 49db74727a..4baca769c2 100755 --- a/tools/test.py +++ b/tools/test.py @@ -145,6 +145,7 @@ class ProgressIndicator(object): sys.platform == 'sunos5' and 'ECONNREFUSED' in output.output.stderr): output = case.Run() + output.diagnostic.append('ECONNREFUSED received, test retried') case.duration = (datetime.now() - start) except IOError, e: return @@ -255,6 +256,10 @@ class DotsProgressIndicator(SimpleProgressIndicator): class TapProgressIndicator(SimpleProgressIndicator): + def _printDiagnostic(self, messages): + for l in messages.splitlines(): + logger.info('# ' + l) + def Starting(self): logger.info('1..%i' % len(self.cases)) self._done = 0 @@ -270,14 +275,13 @@ class TapProgressIndicator(SimpleProgressIndicator): if FLAKY in output.test.outcomes and self.flaky_tests_mode == DONTCARE: status_line = status_line + ' # TODO : Fix flaky test' logger.info(status_line) + self._printDiagnostic("\n".join(output.diagnostic)) if output.HasTimedOut(): - logger.info('# TIMEOUT') + self._printDiagnostic('TIMEOUT') - for l in output.output.stderr.splitlines(): - logger.info('#' + l) - for l in output.output.stdout.splitlines(): - logger.info('#' + l) + self._printDiagnostic(output.output.stderr) + self._printDiagnostic(output.output.stdout) else: skip = skip_regex.search(output.output.stdout) if skip: @@ -288,6 +292,7 @@ class TapProgressIndicator(SimpleProgressIndicator): if FLAKY in output.test.outcomes: status_line = status_line + ' # TODO : Fix flaky test' logger.info(status_line) + self._printDiagnostic("\n".join(output.diagnostic)) duration = output.test.duration @@ -490,6 +495,7 @@ class TestOutput(object): self.command = command self.output = output self.store_unexpected_output = store_unexpected_output + self.diagnostic = [] def UnexpectedOutput(self): if self.HasCrashed():