ENH: separate out log capture framework for other test cases - now utils.LogCaptureTestCase

pull/483/head
Daniel Black 2013-12-11 09:50:17 +11:00
parent 916649119e
commit 5688c064ad
2 changed files with 33 additions and 23 deletions

View File

@ -24,40 +24,23 @@ __author__ = "Cyril Jaquier"
__copyright__ = "Copyright (c) 2004 Cyril Jaquier" __copyright__ = "Copyright (c) 2004 Cyril Jaquier"
__license__ = "GPL" __license__ = "GPL"
import unittest, time import time
import logging, sys import logging, sys
from server.action import Action from server.action import Action
from StringIO import StringIO from utils import LogCaptureTestCase
class ExecuteAction(unittest.TestCase): class ExecuteAction(LogCaptureTestCase):
def setUp(self): def setUp(self):
"""Call before every test case.""" """Call before every test case."""
self.__action = Action("Test") self.__action = Action("Test")
LogCaptureTestCase.setUp(self)
# For extended testing of what gets output into logging
# system, we will redirect it to a string
logSys = logging.getLogger("fail2ban")
# Keep old settings
self._old_level = logSys.level
self._old_handlers = logSys.handlers
# Let's log everything into a string
self._log = StringIO()
logSys.handlers = [logging.StreamHandler(self._log)]
logSys.setLevel(getattr(logging, 'DEBUG'))
def tearDown(self): def tearDown(self):
"""Call after every test case.""" """Call after every test case."""
# print "O: >>%s<<" % self._log.getvalue() LogCaptureTestCase.tearDown(self)
logSys = logging.getLogger("fail2ban")
logSys.handlers = self._old_handlers
logSys.level = self._old_level
self.__action.execActionStop() self.__action.execActionStop()
def _is_logged(self, s):
return s in self._log.getvalue()
def testNameChange(self): def testNameChange(self):
self.assertEqual(self.__action.getName(), "Test") self.assertEqual(self.__action.getName(), "Test")
self.__action.setName("Tricky Test") self.__action.setName("Tricky Test")

View File

@ -22,8 +22,9 @@ __author__ = "Yaroslav Halchenko"
__copyright__ = "Copyright (c) 2013 Yaroslav Halchenko" __copyright__ = "Copyright (c) 2013 Yaroslav Halchenko"
__license__ = "GPL" __license__ = "GPL"
import logging, os, re, tempfile, sys, time, traceback import unittest, logging, os, re, tempfile, sys, time, traceback
from os.path import basename, dirname from os.path import basename, dirname
from StringIO import StringIO
# #
# Following "traceback" functions are adopted from PyMVPA distributed # Following "traceback" functions are adopted from PyMVPA distributed
@ -105,3 +106,29 @@ def mtimesleep():
# no sleep now should be necessary since polling tracks now not only # no sleep now should be necessary since polling tracks now not only
# mtime but also ino and size # mtime but also ino and size
pass pass
class LogCaptureTestCase(unittest.TestCase):
def setUp(self):
# For extended testing of what gets output into logging
# system, we will redirect it to a string
logSys = logging.getLogger("fail2ban")
# Keep old settings
self._old_level = logSys.level
self._old_handlers = logSys.handlers
# Let's log everything into a string
self._log = StringIO()
logSys.handlers = [logging.StreamHandler(self._log)]
logSys.setLevel(getattr(logging, 'DEBUG'))
def tearDown(self):
"""Call after every test case."""
# print "O: >>%s<<" % self._log.getvalue()
logSys = logging.getLogger("fail2ban")
logSys.handlers = self._old_handlers
logSys.level = self._old_level
def _is_logged(self, s):
return s in self._log.getvalue()