ϪfdZddlmZddlmZddlmZmZmZm Z m Z m Z ddl m Z ddlmZddlmZddlmZd d lmZmZd d lmZGd d eZGddeZGddZy)z) Test cases for L{twisted.logger._file}. )StringIO) TracebackType)IOAnyAnyStrOptionalTypecast)BrokenMethodImplementation) verifyObject)Failure)TestCase)FileLogObservertextFileLogObserver) ILogObservercReZdZdZd dZd dZdeededdfdZ d d Z d d Z d d Z y) FileLogObserverTestsz' Tests for L{FileLogObserver}. returnNct5}t|d} tt|dddy#t$r}|j |Yd}~(d}~wwxYw#1swYyxYw)z; L{FileLogObserver} is an L{ILogObserver}. ct|SNstres ?/usr/lib/python3/dist-packages/twisted/logger/test/test_file.pyz5FileLogObserverTests.test_interface.. SVN)rrr rr fail)self fileHandleobserverrs rtest_interfacez#FileLogObserverTests.test_interfaces`Z :&z3CDH \84  .  !     s+A3 AA AAAA#ct5}t|d}td}|||j|j t |dddy#1swYyxYw)zV L{FileLogObserver} writes to the given file when it observes events. ct|Srrrs rrz9FileLogObserverTests.test_observeWrites..*rr xN)rrdict assertEqualgetvaluerr"r#r$events rtest_observeWritesz'FileLogObserverTests.test_observeWrites%s^Z @:&z3CDH1IE UO   Z002CJ ?  @ @ @s A AA(whatcountct5}tttt|fd}t d}|||j |j|dddy#1swYyxYw)z Verify that observer performs an expected number of writes when the formatter returns a given value. @param what: the value for the formatter to return. @param count: the expected number of writes. cSr)rr1s rrz:FileLogObserverTests._test_observeWrites..8sDr r(r)N) DummyFilerr rrr+r,writes)r"r1r2r#r$r/s ` r_test_observeWritesz(FileLogObserverTests._test_observeWrites/s^[ 7J&tBsGZ'@.QH1IE UO   Z.. 6  7 7 7s AA**A3c(|jddy)z L{FileLogObserver} does not write to the given file when it observes events and C{formatEvent} returns L{None}. Nrr8r"s rtest_observeWritesNonez+FileLogObserverTests.test_observeWritesNone=s   q)r c(|jddy)z L{FileLogObserver} does not write to the given file when it observes events and C{formatEvent} returns C{""}. rNr:r;s rtest_observeWritesEmptyz,FileLogObserverTests.test_observeWritesEmptyDs   Q'r ct5}tttt|d}t d}|||j |jddddy#1swYyxYw)zl L{FileLogObserver} calles C{flush()} on the output file when it observes an event. ct|Srrrs rrz:FileLogObserverTests.test_observeFlushes..Qs CPQFr r(r)N)r6rr rrr+r,flushesr.s rtest_observeFlushesz(FileLogObserverTests.test_observeFlushesKs^ [ 4J&tBsGZ'@BRSH1IE UO   Z// 3  4 4 4s AA''A0rN) __name__ __module__ __qualname____doc__r%r0rrintr8r<r?rCr5r rrrs? @ 7 7c 7d 7*( 4r rc8eZdZdZddZddZddZddZddZy) TextFileLogObserverTestsz+ Tests for L{textFileLogObserver}. Nct5}t|}|j|tdddy#1swYyxYw)zF L{textFileLogObserver} returns a L{FileLogObserver}. N)rrassertIsInstancerr"r#r$s rtest_returnsFileLogObserverz4TextFileLogObserverTests.test_returnsFileLogObserver\s:Z =:*:6H  ! !(O < = = =s"6?ct5}t|}|j|j|dddy#1swYyxYw)F Returned L{FileLogObserver} has the correct outFile. N)rrassertIs_outFilerNs r test_outFilez%TextFileLogObserverTests.test_outFileds>Z 9:*:6H MM(++Z 8 9 9 9s (<Act5}t|d}|tdd|j|j ddddy#1swYyxYw)rQz%f) timeFormatXYZZYgm@) log_formatlog_timez600000 [-#-] XYZZY N)rrr+r,r-rNs rtest_timeFormatz(TextFileLogObserverTests.test_timeFormatlsYZ L:*:$GH TWx@ A   Z0024J K L L Ls AAAcXt5}t|} ddz t }|||j }|j |jddjdt|dddy#t$r t}YwxYw#1swYyxYw)z If the C{"log_failure"} key exists in an event, the observer appends the failure's traceback to the output. r(r log_failure z Traceback )msgN) rrZeroDivisionErrorr r+r- assertTruesplit startswithrepr)r"r#r$failurer/outputs rtest_observeFailurez,TextFileLogObserverTests.test_observeFailureus Z :*:6H $AW-E UO((*F OO T"1%00@d6l     % $!) $  s. B BA!B BB BB  B)ct5}t|}tt}|||j }d}|j ||dddy#1swYyxYw)z If the C{"log_failure"} key exists in an event, and contains an object that raises when you call its C{getTraceback()}, then the observer appends a message noting the problem, instead of raising. r\z'(UNABLE TO OBTAIN TRACEBACK FROM EVENT)N)rrr+objectr-assertIn)r"r#r$r/rfexpecteds r+test_observeFailureThatRaisesInGetTracebackzDTextFileLogObserverTests.test_observeFailureThatRaisesInGetTracebacks^ Z ,:*:6HVX.E UO((*F@H MM(F +  , , ,s A A  A)rD) rErFrGrHrOrTrZrgrlr5r rrKrKWs!=9L( ,r rKc neZdZdZd dZdeddfdZd dZddZd e e e d e e d e e de e fd Zy)r6z. File that counts writes and flushes. rNc d|_d|_y)Nr)r7rBr;s r__init__zDummyFile.__init__s  r datac.|xjdz c_y)z8 Write data. @param data: data r(N)r7)r"rps rwritezDummyFile.writes q r c.|xjdz c_y)z Flush buffers. r(N)rBr;s rflushzDummyFile.flushs  r c|Srr5r;s r __enter__zDummyFile.__enter__s r exc_type exc_value tracebackcyrr5)r"rwrxrys r__exit__zDummyFile.__exit__s r rD)rr6)rErFrGrHrorrrrtrvrr BaseExceptionrboolr{r5r rr6r6sl&T  4 ./ M* M*  $  r r6N)rHiortypesrtypingrrrrr r zope.interface.exceptionsr zope.interface.verifyr twisted.python.failurer twisted.trial.unittestr_filerr _interfacesrrrKr6r5r rrsN88@.*+8&?48?4D>,x>,B   r