-
-
Save adiroiban/7906463 to your computer and use it in GitHub Desktop.
test generator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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