From: Kyr Shatskyy Date: Fri, 11 Oct 2019 18:59:20 +0000 (+0200) Subject: run: drop StringIO usage for py3 compatibility X-Git-Tag: 1.1.0~199^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4231de242869f1179a3d17e569757e322e7a4fa4;p=teuthology.git run: drop StringIO usage for py3 compatibility Signed-off-by: Kyr Shatskyy --- diff --git a/teuthology/run.py b/teuthology/run.py index 4d3099268a..8c59396b0e 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -1,7 +1,5 @@ import os import yaml -import StringIO -import contextlib import sys import logging @@ -258,20 +256,16 @@ def report_outcome(config, archive, summary, fake_ctx): with open(os.path.join(archive, 'summary.yaml'), 'w') as f: yaml.safe_dump(summary, f, default_flow_style=False) - with contextlib.closing(StringIO.StringIO()) as f: - yaml.safe_dump(summary, f) - log.info('Summary data:\n%s' % f.getvalue()) - - with contextlib.closing(StringIO.StringIO()) as f: - if ('email-on-error' in config - and not passed): - yaml.safe_dump(summary, f) - yaml.safe_dump(config, f) - emsg = f.getvalue() - subject = "Teuthology error -- %s" % summary[ - 'failure_reason'] - email_results(subject, "Teuthology", config[ - 'email-on-error'], emsg) + summary_dump = yaml.safe_dump(summary) + log.info('Summary data:\n%s' % summary_dump) + + if ('email-on-error' in config + and not passed): + config_dump = yaml.safe_dump(config) + subject = "Teuthology error -- %s" % summary['failure_reason'] + email_results(subject, "Teuthology", config['email-on-error'], + "\n".join([summary_dump, config_dump])) + report.try_push_job_info(config, summary) diff --git a/teuthology/test/test_run.py b/teuthology/test/test_run.py index 77f8b25883..0657309175 100644 --- a/teuthology/test/test_run.py +++ b/teuthology/test/test_run.py @@ -124,10 +124,13 @@ class TestRun(object): @patch("__builtin__.open") @patch("sys.exit") def test_report_outcome(self, m_sys_exit, m_open, m_email_results, m_try_push_job_info, m_safe_dump, m_nuke, m_get_status): - config = {"nuke-on-error": True, "email-on-error": True} m_get_status.return_value = "fail" fake_ctx = Mock() summary = {"failure_reason": "reasons"} + summary_dump = "failure_reason: reasons\n" + config = {"nuke-on-error": True, "email-on-error": True} + config_dump = "nuke-on-error: true\nemail-on-error: true\n" + m_safe_dump.side_effect = [None, summary_dump, config_dump] run.report_outcome(config, "the/archive/path", summary, fake_ctx) assert m_nuke.called m_try_push_job_info.assert_called_with(config, summary)