Skip to content

Instantly share code, notes, and snippets.

@adiroiban
Created December 11, 2013 07:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adiroiban/7906463 to your computer and use it in GitHub Desktop.
Save adiroiban/7906463 to your computer and use it in GitHub Desktop.
test generator
class FileHandlerTestCase(ServerTestCase):
"""
Base test case for all file handlers.
"""
def setUp(self):
super(FileHandlerTestCase, self).setUp()
self.handler = self.getNewHandler()
self.handler.stream = StringIO()
def tearDown(self):
self.handler.close()
super(FileHandlerTestCase, self).tearDown()
def getNewHandler(self):
raise NotImplementedError()
class FileHandlerMixin(object):
"""
Common tests for all handlers based on files.
"""
def test_emit_newline_windows(self):
"""
Entries will be logged using \r\n (Windows) line terminators on
Windows systems.
"""
self.runOnOS('nt')
record = mk.makeLogEntry()
self.handler.emit(record)
content = self.handler.stream.getvalue()
self.assertEndsWith("\r\n", content)
def test_emit_newline_posix(self):
"""
Entries will be logged using \n as a line terminator on Linux/Unix
systems.
"""
self.runOnOS('posix')
record = mk.makeLogEntry()
self.handler.handle(record)
content = self.handler.stream.getvalue()
self.assertEndsWith("\n", content)
self.assertNotEqual("\r", content[-2])
class TestFileHandler(FileHandlerTestCase, FileHandlerMixin):
"""
Unit test for `FileHandler`.
"""
def getNewHandler(self):
return FileHandler(filename=mk.string(), delay=True)
def test_entryLength_ascii(self):
"""
It will return the length of the ascii string.
"""
text = mk.ascii()
record = mk.makeLogEntry(text=text)
expected_result = len(self.handler.FS % text)
self.handler.stream.encoding = 'ascii'
length = self.handler.entryLength(record)
self.assertEqual(expected_result, length)
def test_entryLength_unicode(self):
"""
It will return the length in bytes of the entry as per the stream's
encoding.
"""
text = mk.string()
record = mk.makeLogEntry(text=text)
expected_result = len((self.handler.FS % text).encode('utf-8'))
self.handler.stream.encoding = 'utf-8'
length = self.handler.entryLength(record)
self.assertEqual(expected_result, length)
class TestRotatingFileHandler(ServerTestCase, FileHandlerMixin):
"""
Unit test for `RotatingFileHandler`.
"""
def getNewHandler(self):
return RotatingFileHandler(filename=mk.string(), delay=True)
class TestTimedRotatingFileHandler(ServerTestCase, FileHandlerMixin):
"""
Unit test for `TimedRotatingFileHandler`.
"""
def getNewHandler(self):
return TimedRotatingFileHandler(filename=mk.ascii(), delay=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment