log_tests.py 1.6 KB

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