mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-03-26 21:33:05 +00:00
Merge pull request #1270 from t-woerner/truncate_stdout_and_stderr_in_upstream_test_log
Truncate stdout and stderr in upstream test log
This commit is contained in:
@@ -162,6 +162,22 @@ def _run_playbook(playbook):
|
||||
return process
|
||||
|
||||
|
||||
def _truncate(lines, charcount, minlines=0):
|
||||
output = ""
|
||||
line_count = 1
|
||||
for i in range(len(lines) - 1, -1, -1):
|
||||
if len(output) + len(lines[i]) + 1 <= charcount or \
|
||||
line_count < minlines:
|
||||
output = lines[i] + "\n" + output
|
||||
line_count += 1
|
||||
else:
|
||||
remaining = charcount - len(output) - 1 - 4
|
||||
if remaining > 60:
|
||||
output = "... " + lines[i][-(remaining):] + "\n" + output
|
||||
break
|
||||
return output
|
||||
|
||||
|
||||
def run_playbook(playbook, allow_failures=False):
|
||||
"""
|
||||
Run an Ansible playbook and assert the return code.
|
||||
@@ -183,13 +199,26 @@ def run_playbook(playbook, allow_failures=False):
|
||||
status_code_msg = "ansible-playbook return code: {0}".format(
|
||||
result.returncode
|
||||
)
|
||||
_stdout = result.stdout.decode("utf8")
|
||||
_stderr = result.stderr.decode("utf8")
|
||||
# Truncate stdout and stderr in the way that it hopefully
|
||||
# shows all important information. At least 15 lines of stdout
|
||||
# (Ansible tasks) and remaining from stderr to fill up to
|
||||
# maxlen size.
|
||||
maxlen = 2000
|
||||
factor = maxlen / (len(_stdout) + len(_stderr))
|
||||
stdout = _truncate(_stdout.splitlines(),
|
||||
int(factor * len(_stdout)),
|
||||
minlines=15)
|
||||
stderr = _truncate(_stderr.splitlines(), maxlen - len(stdout))
|
||||
|
||||
assert_msg = "\n".join(
|
||||
[
|
||||
"",
|
||||
"-" * 30 + " Captured stdout " + "-" * 30,
|
||||
result.stdout.decode("utf8"),
|
||||
stdout,
|
||||
"-" * 30 + " Captured stderr " + "-" * 30,
|
||||
result.stderr.decode("utf8"),
|
||||
stderr,
|
||||
"-" * 30 + " Playbook Return Code " + "-" * 30,
|
||||
status_code_msg,
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user