From 319932bed50fa5111e6043db9f9d40231ac3733e Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 28 Apr 2015 18:13:34 +0000 Subject: [PATCH] Call record.getMessage() in DialogHandler (fixes #336) --- letsencrypt/client/log.py | 2 +- letsencrypt/client/tests/log_test.py | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/letsencrypt/client/log.py b/letsencrypt/client/log.py index a267fa77e..57c642ce2 100644 --- a/letsencrypt/client/log.py +++ b/letsencrypt/client/log.py @@ -37,7 +37,7 @@ class DialogHandler(logging.Handler): # pylint: disable=too-few-public-methods lines. """ - for line in (record.msg % record.args).splitlines(): + for line in record.getMessage().splitlines(): # check for lines that would wrap cur_out = line while len(cur_out) > self.width: diff --git a/letsencrypt/client/tests/log_test.py b/letsencrypt/client/tests/log_test.py index 155f26567..49fbdc7c2 100644 --- a/letsencrypt/client/tests/log_test.py +++ b/letsencrypt/client/tests/log_test.py @@ -1,4 +1,5 @@ """Tests for letsencrypt.client.log.""" +import logging import unittest import mock @@ -15,29 +16,33 @@ class DialogHandlerTest(unittest.TestCase): self.handler.PADDING_WIDTH = 4 def test_adds_padding(self): - self.handler.emit(mock.MagicMock()) + self.handler.emit(logging.makeLogRecord({})) self.d.infobox.assert_called_once_with(mock.ANY, 4, 10) def test_args_in_msg_get_replaced(self): assert len('123456') <= self.handler.width - self.handler.emit(mock.MagicMock(msg='123%s', args=(456,))) + self.handler.emit(logging.makeLogRecord( + {'msg': '123%s', 'args': (456,)})) self.d.infobox.assert_called_once_with('123456', mock.ANY, mock.ANY) def test_wraps_nospace_is_greedy(self): assert len('1234567') > self.handler.width - self.handler.emit(mock.MagicMock(msg='1234567')) + self.handler.emit(logging.makeLogRecord({'msg': '1234567'})) self.d.infobox.assert_called_once_with('123456\n7', mock.ANY, mock.ANY) def test_wraps_at_whitespace(self): assert len('123 567') > self.handler.width - self.handler.emit(mock.MagicMock(msg='123 567')) + self.handler.emit(logging.makeLogRecord({'msg': '123 567'})) self.d.infobox.assert_called_once_with('123\n567', mock.ANY, mock.ANY) def test_only_last_lines_are_printed(self): assert len('a\nb\nc'.split()) > self.handler.height - self.handler.emit(mock.MagicMock(msg='a\n\nb\nc')) + self.handler.emit(logging.makeLogRecord({'msg': 'a\n\nb\nc'})) self.d.infobox.assert_called_once_with('b\nc', mock.ANY, mock.ANY) + def test_non_str(self): + self.handler.emit(logging.makeLogRecord({'msg': {'foo': 'bar'}})) + if __name__ == '__main__': unittest.main()