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.