From 7ce4bff4b6e707542bc2cabe604f15eefb432e12 Mon Sep 17 00:00:00 2001 From: Christopher Baklid Date: Sun, 27 May 2018 11:34:39 +0200 Subject: now also captures stderr --- snekbox.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'snekbox.py') diff --git a/snekbox.py b/snekbox.py index d047996..42bec91 100644 --- a/snekbox.py +++ b/snekbox.py @@ -16,24 +16,35 @@ def execute(body): failed = False old_stdout = sys.stdout + old_stderr = sys.stderr redirected_output = sys.stdout = io.StringIO() + redirected_error = sys.stderr = io.StringIO() + snek_msg = json.loads(msg) + snekid = snek_msg['snekid'] + snekcode = snek_msg['message'].strip() try: - - snek_msg = json.loads(msg) - for snekid, snekcode in snek_msg.items(): - exec(snekcode) + exec(snekcode) except Exception as e: failed = str(e) finally: sys.stdout = old_stdout + sys.stderr = old_stderr if failed: result = failed.strip() + log.debug(f"this was captured via exception: {result}") + + result_err = redirected_error.getvalue().strip() + result_ok = redirected_output.getvalue().strip() - result = redirected_output.getvalue().strip() + if result_err: + log.debug(f"this was captured via stderr: {result_err}") + result = result_err + if result_ok: + result = result_ok log.info(f"outgoing: {result}") -- cgit v1.2.3