import os
import yaml
-import StringIO
-import contextlib
import sys
import logging
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)
@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)