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.