from twisted.logger import Logger, formatEvent from twisted.python.failure import Failure from twisted.trial.unittest import TestCase from testfixtures import compare, ShouldRaise, StringComparison as S, ShouldAssert from testfixtures.twisted import LogCapture, INFO log = Logger() class TestLogCapture(TestCase): def test_simple(self): capture = LogCapture.make(self) log.info('er, {greeting}', greeting='hi') capture.check((INFO, 'er, hi')) def test_captured(self): capture = LogCapture.make(self) log.info('er, {greeting}', greeting='hi') assert len(capture.events) == 1 compare(capture.events[0]['log_namespace'], expected='testfixtures.tests.test_twisted') def test_fields(self): capture = LogCapture.make(self, fields=('a', 'b')) log.info('{a}, {b}', a=1, b=2) log.info('{a}, {b}', a=3, b=4) capture.check( [1, 2], [3, 4], ) def test_field(self): capture = LogCapture.make(self, fields=(formatEvent,)) log.info('er, {greeting}', greeting='hi') capture.check('er, hi') def test_check_failure_test_minimal(self): capture = LogCapture.make(self) try: raise Exception('all gone wrong') except: log.failure('oh dear') capture.check_failure_text('all gone wrong') self.flushLoggedErrors() def test_check_failure_test_maximal(self): capture = LogCapture.make(self) try: raise TypeError('all gone wrong') except: log.failure('oh dear') log.info("don't look at me...") capture.check_failure_text(str(TypeError), index=0, attribute='type') self.flushLoggedErrors() self.flushLoggedErrors() def test_raise_logged_failure(self): capture = LogCapture.make(self) try: raise TypeError('all gone wrong') except: log.failure('oh dear') with ShouldRaise(Failure) as s: capture.raise_logged_failure() compare(s.raised.value, expected=TypeError('all gone wrong')) self.flushLoggedErrors() def test_raise_later_logged_failure(self): capture = LogCapture.make(self) try: raise ValueError('boom!') except: log.failure('oh dear') try: raise TypeError('all gone wrong') except: log.failure('what now?!') with ShouldRaise(Failure) as s: capture.raise_logged_failure(start_index=1) compare(s.raised.value, expected=TypeError('all gone wrong')) self.flushLoggedErrors() def test_order_doesnt_matter_ok(self): capture = LogCapture.make(self) log.info('Failed to send BAR') log.info('Sent FOO, length 1234') log.info('Sent 1 Messages') capture.check( (INFO, S('Sent FOO, length \d+')), (INFO, 'Failed to send BAR'), (INFO, 'Sent 1 Messages'), order_matters=False ) def test_order_doesnt_matter_failure(self): capture = LogCapture.make(self) log.info('Failed to send BAR') log.info('Sent FOO, length 1234') log.info('Sent 1 Messages') with ShouldAssert( "entries not as expected:\n" "\n" "expected and found:\n" "[(<LogLevel=info>, 'Failed to send BAR'), (<LogLevel=info>, 'Sent 1 Messages')]\n" "\n" "expected but not found:\n" "[(<LogLevel=info>, <S:Sent FOO, length abc>)]\n" "\n" "other entries:\n" "[(<LogLevel=info>, 'Sent FOO, length 1234')]" ): capture.check( (INFO, S('Sent FOO, length abc')), (INFO, 'Failed to send BAR'), (INFO, 'Sent 1 Messages'), order_matters=False ) def test_order_doesnt_matter_extra_in_expected(self): capture = LogCapture.make(self) log.info('Failed to send BAR') log.info('Sent FOO, length 1234') with ShouldAssert( "entries not as expected:\n" "\n" "expected and found:\n" "[(<LogLevel=info>, 'Failed to send BAR'),\n" " (<LogLevel=info>, <S:Sent FOO, length 1234>)]\n" "\n" "expected but not found:\n" "[(<LogLevel=info>, 'Sent 1 Messages')]\n" "\n" "other entries:\n" "[]" ): capture.check( (INFO, S('Sent FOO, length 1234')), (INFO, 'Failed to send BAR'), (INFO, 'Sent 1 Messages'), order_matters=False ) def test_order_doesnt_matter_extra_in_actual(self): capture = LogCapture.make(self) log.info('Failed to send BAR') log.info('Sent FOO, length 1234') log.info('Sent 1 Messages') with ShouldAssert( "entries not as expected:\n" "\n" "expected and found:\n" "[(<LogLevel=info>, 'Failed to send BAR'), (<LogLevel=info>, 'Sent 1 Messages')]\n" "\n" "expected but not found:\n" "[(<LogLevel=info>, <S:Sent FOO, length abc>)]\n" "\n" "other entries:\n" "[(<LogLevel=info>, 'Sent FOO, length 1234')]" ): capture.check( (INFO, S('Sent FOO, length abc')), (INFO, 'Failed to send BAR'), (INFO, 'Sent 1 Messages'), order_matters=False )
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
test_django | Folder | 0755 |
|
|
__init__.py | File | 64 B | 0644 |
|
configparser-read.txt | File | 832 B | 0644 |
|
configparser-write.txt | File | 775 B | 0644 |
|
directory-contents.txt | File | 739 B | 0644 |
|
sample1.py | File | 1.11 KB | 0644 |
|
sample2.py | File | 412 B | 0644 |
|
sample3.py | File | 43 B | 0644 |
|
test_compare.py | File | 61.34 KB | 0644 |
|
test_comparison.py | File | 22.17 KB | 0644 |
|
test_components.py | File | 974 B | 0644 |
|
test_date.py | File | 10.41 KB | 0644 |
|
test_datetime.py | File | 16.58 KB | 0644 |
|
test_diff.py | File | 892 B | 0644 |
|
test_generator.py | File | 467 B | 0644 |
|
test_log_capture.py | File | 7.21 KB | 0644 |
|
test_logcapture.py | File | 19.21 KB | 0644 |
|
test_mappingcomparison.py | File | 9.42 KB | 0644 |
|
test_mock.py | File | 2.19 KB | 0644 |
|
test_outputcapture.py | File | 4.25 KB | 0644 |
|
test_popen.py | File | 22.77 KB | 0644 |
|
test_popen_docs.py | File | 7.5 KB | 0644 |
|
test_rangecomparison.py | File | 5.21 KB | 0644 |
|
test_replace.py | File | 29.27 KB | 0644 |
|
test_replacer.py | File | 3.81 KB | 0644 |
|
test_roundcomparison.py | File | 4.71 KB | 0644 |
|
test_sequencecomparison.py | File | 12.08 KB | 0644 |
|
test_should_raise.py | File | 9.73 KB | 0644 |
|
test_shouldwarn.py | File | 4.51 KB | 0644 |
|
test_stringcomparison.py | File | 1.32 KB | 0644 |
|
test_sybil.py | File | 4.2 KB | 0644 |
|
test_tempdir.py | File | 2.82 KB | 0644 |
|
test_tempdirectory.py | File | 10.95 KB | 0644 |
|
test_time.py | File | 7.55 KB | 0644 |
|
test_twisted.py | File | 5.54 KB | 0644 |
|
test_wrap.py | File | 6.42 KB | 0644 |
|