From 4085d016178fe4be15a52264fe903fd2932cefc7 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Mon, 24 Sep 2018 09:30:50 -0700 Subject: [PATCH] Reduce noise in docs-build test failures. --- test/sanity/code-smell/docs-build.py | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/sanity/code-smell/docs-build.py b/test/sanity/code-smell/docs-build.py index 631aeaf1956..f5121af7770 100755 --- a/test/sanity/code-smell/docs-build.py +++ b/test/sanity/code-smell/docs-build.py @@ -21,6 +21,8 @@ def main(): sys.stderr.write("Command '%s' failed with status code: %d\n" % (' '.join(cmd), sphinx.returncode)) if stdout.strip(): + stdout = simplify_stdout(stdout) + sys.stderr.write("--> Standard Output\n") sys.stderr.write("%s\n" % stdout.strip()) @@ -109,5 +111,40 @@ def main(): print('test/sanity/code-smell/docs-build.py:0:0: remove `%s` from the `ignore_codes` list as it is no longer needed' % code) +def simplify_stdout(value): + """Simplify output by omitting earlier 'rendering: ...' messages.""" + lines = value.strip().splitlines() + + rendering = [] + keep = [] + + def truncate_rendering(): + """Keep last rendering line (if any) with a message about omitted lines as needed.""" + if not rendering: + return + + notice = rendering[-1] + + if len(rendering) > 1: + notice += ' (%d previous rendering line(s) omitted)' % (len(rendering) - 1) + + keep.append(notice) + rendering[:] = [] + + for line in lines: + if line.startswith('rendering: '): + rendering.append(line) + continue + + truncate_rendering() + keep.append(line) + + truncate_rendering() + + result = '\n'.join(keep) + + return result + + if __name__ == '__main__': main()