# -*- coding: utf-8 -*-
from .utils import require_py3, capturing_stderr_context
import logbook
@require_py3
def test_default_format_unicode(logger):
with capturing_stderr_context() as stream:
logger.warn('\u2603')
assert 'WARNING: testlogger: \u2603' in stream.getvalue()
@require_py3
def test_default_format_encoded(logger):
with capturing_stderr_context() as stream:
# it's a string but it's in the right encoding so don't barf
logger.warn('\u2603')
assert 'WARNING: testlogger: \u2603' in stream.getvalue()
@require_py3
def test_default_format_bad_encoding(logger):
with capturing_stderr_context() as stream:
# it's a string, is wrong, but just dump it in the logger,
# don't try to decode/encode it
logger.warn('Русский'.encode('koi8-r'))
expected = "WARNING: testlogger: b'\\xf2\\xd5\\xd3\\xd3\\xcb\\xc9\\xca'"
assert expected in stream.getvalue()
@require_py3
def test_custom_unicode_format_unicode(logger):
format_string = ('[{record.level_name}] '
'{record.channel}: {record.message}')
with capturing_stderr_context() as stream:
with logbook.StderrHandler(format_string=format_string):
logger.warn("\u2603")
assert '[WARNING] testlogger: \u2603' in stream.getvalue()
@require_py3
def test_custom_string_format_unicode(logger):
format_string = ('[{record.level_name}] '
'{record.channel}: {record.message}')
with capturing_stderr_context() as stream:
with logbook.StderrHandler(format_string=format_string):
logger.warn('\u2603')
assert '[WARNING] testlogger: \u2603' in stream.getvalue()
@require_py3
def test_unicode_message_encoded_params(logger):
with capturing_stderr_context() as stream:
logger.warn("\u2603 {0}", "\u2603".encode('utf8'))
assert "WARNING: testlogger: \u2603 b'\\xe2\\x98\\x83'" in stream.getvalue()
@require_py3
def test_encoded_message_unicode_params(logger):
with capturing_stderr_context() as stream:
logger.warn('\u2603 {0}'.encode('utf8'), '\u2603')
assert 'WARNING: testlogger: \u2603 \u2603' in stream.getvalue()