mirror of
https://github.com/datafolklabs/cement.git
synced 2026-02-06 17:36:51 +00:00
91 lines
2.0 KiB
Python
91 lines
2.0 KiB
Python
|
|
|
|
from pytest import raises
|
|
|
|
from cement import init_defaults
|
|
from cement.core.foundation import TestApp
|
|
from cement.core.log import LogInterface, LogHandler
|
|
|
|
|
|
# module tests
|
|
|
|
class TestLogInterface(object):
|
|
def test_interface(self):
|
|
assert LogInterface.Meta.interface == 'log'
|
|
|
|
|
|
class TestLogHandler(object):
|
|
|
|
def test_subclassing(self):
|
|
|
|
class MyLogHandler(LogHandler):
|
|
|
|
class Meta:
|
|
label = 'my_log_handler'
|
|
|
|
def set_level(self):
|
|
pass
|
|
|
|
def get_level(self):
|
|
pass
|
|
|
|
def info(self, msg):
|
|
pass
|
|
|
|
def warning(self, msg):
|
|
pass
|
|
|
|
def error(self, msg):
|
|
pass
|
|
|
|
def fatal(self, msg):
|
|
pass
|
|
|
|
def debug(self, msg):
|
|
pass
|
|
|
|
h = MyLogHandler()
|
|
assert h._meta.interface == 'log'
|
|
assert h._meta.label == 'my_log_handler'
|
|
|
|
|
|
# app functionality and coverage tests
|
|
|
|
|
|
def test_unproviding_handler():
|
|
|
|
class BogusHandler(LogHandler):
|
|
|
|
class Meta:
|
|
label = 'bogus'
|
|
|
|
with TestApp() as app:
|
|
msg = "Can't instantiate abstract class .*"
|
|
with raises(TypeError, match=msg):
|
|
app.handler.register(BogusHandler)
|
|
|
|
|
|
def test_logging():
|
|
defaults = init_defaults()
|
|
defaults['log.logging'] = dict(
|
|
file='/dev/null',
|
|
to_console=True
|
|
)
|
|
with TestApp(config_defaults=defaults) as app:
|
|
app.log.info('Info Message')
|
|
app.log.warning('Warning Message')
|
|
app.log.error('Error Message')
|
|
app.log.fatal('Fatal Message')
|
|
app.log.debug('Debug Message')
|
|
|
|
# get level
|
|
assert app.log.get_level() == 'INFO'
|
|
|
|
# set level
|
|
app.log.set_level('WARNING')
|
|
assert app.log.get_level() == 'WARNING'
|
|
|
|
# set a bad level should default to INFO
|
|
app.log.set_level('BOGUS')
|
|
assert app.log.get_level() == 'INFO'
|