kiwi-el8/test/unit/test_helper.py
Marcus Schäfer c91820aa27 Cleanup unit tests using sys.argv
The tests should restore to the default argv option set
as provided by the test_helper
2016-10-25 17:51:57 +02:00

64 lines
1.5 KiB
Python

from functools import wraps
import kiwi.logger
import sys
import logging
from io import BytesIO
from mock import MagicMock, patch
# default log level, overwrite when needed
kiwi.logger.log.setLevel(logging.WARN)
# default commandline used for any test, overwrite when needed
sys.argv = [
sys.argv[0], 'system', 'prepare',
'--description', 'description', '--root', 'directory'
]
argv_kiwi_tests = sys.argv
# mock open calls
patch_open = patch("{0}.open".format(
sys.version_info.major < 3 and "__builtin__" or "builtins")
)
class raises(object):
"""
exception decorator as used in nose, tools/nontrivial.py
"""
def __init__(self, *exceptions):
self.exceptions = exceptions
self.valid = ' or '.join([e.__name__ for e in exceptions])
def __call__(self, func):
name = func.__name__
def newfunc(*args, **kw):
try:
func(*args, **kw)
except self.exceptions:
pass
except:
raise
else:
message = "%s() did not raise %s" % (name, self.valid)
raise AssertionError(message)
newfunc = wraps(func)(newfunc)
return newfunc
def mock_open(data=None):
'''
Mock "open" function.
:param data:
:return:
'''
data = BytesIO(data)
mock = MagicMock(spec=file)
handle = MagicMock(spec=file)
handle.write.return_value = None
handle.__enter__.return_value = data or handle
mock.return_value = handle
return mock