source file: /opt/devel/celery/testproj/../celery/tests/test_log.py
file stats: 40 lines, 40 executed: 100.0% covered
   1. import unittest
   2. 
   3. import sys
   4. import logging
   5. import multiprocessing
   6. from StringIO import StringIO
   7. from celery.log import setup_logger, emergency_error
   8. 
   9. 
  10. class TestLog(unittest.TestCase):
  11. 
  12.     def _assertLog(self, logger, logmsg, loglevel=logging.ERROR):
  13.         # Save old handlers
  14.         old_handler = logger.handlers[0]
  15.         logger.removeHandler(old_handler)
  16.         sio = StringIO()
  17.         siohandler = logging.StreamHandler(sio)
  18.         logger.addHandler(siohandler)
  19.         logger.log(loglevel, logmsg)
  20.         logger.removeHandler(siohandler)
  21.         # Reset original handlers
  22.         logger.addHandler(old_handler)
  23.         return sio.getvalue().strip()
  24. 
  25.     def assertDidLogTrue(self, logger, logmsg, reason, loglevel=None):
  26.         val = self._assertLog(logger, logmsg, loglevel=loglevel)
  27.         return self.assertEqual(val, logmsg, reason)
  28. 
  29.     def assertDidLogFalse(self, logger, logmsg, reason, loglevel=None):
  30.         val = self._assertLog(logger, logmsg, loglevel=loglevel)
  31.         return self.assertFalse(val, reason)
  32. 
  33.     def test_setup_logger(self):
  34.         logger = setup_logger(loglevel=logging.ERROR, logfile=None)
  35.         self.assertTrue(logger.handlers[0].stream is sys.stderr,
  36.                 "setup_logger logs to stderr without logfile argument.")
  37.         self.assertTrue(logger._process_aware,
  38.                 "setup_logger() returns process aware logger.")
  39.         self.assertDidLogTrue(logger, "Logging something",
  40.                 "Logger logs error when loglevel is ERROR",
  41.                 loglevel=logging.ERROR)
  42.         self.assertDidLogFalse(logger, "Logging something",
  43.                 "Logger doesn't info when loglevel is ERROR",
  44.                 loglevel=logging.INFO)
  45. 
  46.     def test_emergency_error(self):
  47.         sio = StringIO()
  48.         emergency_error(sio, "Testing emergency error facility")
  49.         self.assertEquals(sio.getvalue().rpartition(":")[2].strip(),
  50.                              "Testing emergency error facility")
  51. 
  52. 
  53. 
  54. 
  55. 
  56.