log_tests.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. """Tests for cement.core.log."""
  2. import logging
  3. from cement.core import exc, backend, handler, log
  4. from cement.utils import test
  5. from cement.utils.misc import init_defaults
  6. class BogusHandler1(log.CementLogHandler):
  7. class Meta:
  8. interface = log.ILog
  9. label = 'bogus'
  10. class LogTestCase(test.CementCoreTestCase):
  11. def setUp(self):
  12. self.app = self.make_app()
  13. @test.raises(exc.InterfaceError)
  14. def test_unproviding_handler(self):
  15. try:
  16. handler.register(BogusHandler1)
  17. except exc.InterfaceError:
  18. raise
  19. def test_logging(self):
  20. defaults = init_defaults()
  21. defaults['log'] = dict(
  22. file='/dev/null',
  23. to_console=True
  24. )
  25. app = self.make_app(config_defaults=defaults)
  26. app.setup()
  27. app.log.info('Info Message')
  28. app.log.warn('Warn Message')
  29. app.log.error('Error Message')
  30. app.log.fatal('Fatal Message')
  31. app.log.debug('Debug Message')
  32. def test_bogus_log_level(self):
  33. app = self.make_app('test')
  34. app.setup()
  35. app.config.set('log', 'file', '/dev/null')
  36. app.config.set('log', 'to_console', True)
  37. # setup logging again
  38. app.log._setup(app)
  39. app.log.set_level('BOGUS')
  40. def test_get_level(self):
  41. self.app.setup()
  42. self.eq('INFO', self.app.log.get_level())
  43. def test_console_log(self):
  44. app = self.make_app('test', debug=True)
  45. app.setup()
  46. app.config.set('log', 'file', '/dev/null')
  47. app.config.set('log', 'to_console', True)
  48. app.log._setup(app)
  49. app.log.info('Tested.')