kiwi-el8/test/unit/utils/codec_test.py
Marcus Schäfer 9c9250ebc4
Support nose and xunit style tests
The modifications in this commit allows the unit tests
to run on both, pytest 6.x (nose test layout) and the new
pytest 7.x (xunit test layout). This Fixes #2072 in a
much nicer way. Thanks much to @smarlowucf
2022-02-26 20:26:18 +01:00

63 lines
1.8 KiB
Python

import logging
from mock import patch
from pytest import (
raises, fixture
)
from kiwi.utils.codec import Codec
from kiwi.exceptions import KiwiDecodingError
class TestCodec:
@fixture(autouse=True)
def inject_fixtures(self, caplog):
self._caplog = caplog
def setup(self):
self.literal = bytes(b'\xc3\xbc')
def setup_method(self, cls):
self.setup()
@patch('kiwi.utils.codec.Codec._wrapped_decode')
def test_decode_ascii_failure(self, mock_decode):
msg = 'utf-8 compatible string'
def mocked_decode(literal, encoding, error_handling_schema):
if encoding:
return msg
else:
raise KiwiDecodingError('ascii decoding failure')
mock_decode.side_effect = mocked_decode
with self._caplog.at_level(logging.WARNING):
assert msg == Codec.decode(self.literal)
def test_decode_None_literal(self):
assert '' == Codec.decode(None)
@patch('kiwi.utils.codec.Codec._wrapped_decode')
def test_decode(self, mock_decode):
msg = 'utf-8 compatible string'
mock_decode.return_value = msg
assert msg == Codec.decode(self.literal)
@patch('kiwi.utils.codec.Codec._wrapped_decode')
def test_decode_utf8_failure(self, mock_decode):
def mocked_decode(literal, encoding, error_handling_schema):
if encoding:
raise KiwiDecodingError('utf-8 decoding failure')
else:
raise KiwiDecodingError('ascii decoding failure')
mock_decode.side_effect = mocked_decode
with raises(KiwiDecodingError):
with self._caplog.at_level(logging.WARNING):
Codec.decode(self.literal)
def test_wrapped_decode(self):
assert self.literal.decode() == Codec._wrapped_decode(
self.literal, 'utf-8'
)