From a1cdc07944fb80565487b9c6257a4fe40e2db696 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Thu, 12 Mar 2020 12:26:54 -0400 Subject: [PATCH] Print module standard out in test failure scenarios --- awx_collection/test/awx/conftest.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/awx_collection/test/awx/conftest.py b/awx_collection/test/awx/conftest.py index 357caa5de7..17b427ea41 100644 --- a/awx_collection/test/awx/conftest.py +++ b/awx_collection/test/awx/conftest.py @@ -127,15 +127,22 @@ def run_module(request, collection_import): else: tower_cli_mgr = suppress() with tower_cli_mgr: - # Ansible modules return data to the mothership over stdout - with redirect_stdout(stdout_buffer): - try: + try: + # Ansible modules return data to the mothership over stdout + with redirect_stdout(stdout_buffer): resource_module.main() - except SystemExit: - pass # A system exit indicates successful execution + except SystemExit: + pass # A system exit indicates successful execution + except Exception: + # dump the stdout back to console for debugging + print(stdout_buffer.getvalue()) + raise module_stdout = stdout_buffer.getvalue().strip() - result = json.loads(module_stdout) + try: + result = json.loads(module_stdout) + except Exception as e: + raise Exception('Module did not write valid JSON, error: {}, stdout:\n{}'.format(str(e), module_stdout)) # A module exception should never be a test expectation if 'exception' in result: raise Exception('Module encountered error:\n{0}'.format(result['exception']))