Viewing file: test_util.py (3.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details.
""" Test cases for L{twisted.logger._util}. """
from zope.interface import implementer
from twisted.trial import unittest from .._interfaces import ILogObserver, LogEvent from .._observer import LogPublisher from .._util import formatTrace
class UtilTests(unittest.TestCase): """ Utility tests. """
def test_trace(self) -> None: """ Tracing keeps track of forwarding done by the publisher. """ publisher = LogPublisher()
event: LogEvent = dict(log_trace=[])
@implementer(ILogObserver) def o1(e: LogEvent) -> None: pass
@implementer(ILogObserver) def o2(e: LogEvent) -> None: self.assertIs(e, event) self.assertEqual( e["log_trace"], [ (publisher, o1), (publisher, o2), # Event hasn't been sent to o3 yet ], )
@implementer(ILogObserver) def o3(e: LogEvent) -> None: self.assertIs(e, event) self.assertEqual( e["log_trace"], [ (publisher, o1), (publisher, o2), (publisher, o3), ], )
publisher.addObserver(o1) publisher.addObserver(o2) publisher.addObserver(o3) publisher(event)
def test_formatTrace(self) -> None: """ Format trace as string. """ event: LogEvent = dict(log_trace=[])
@implementer(ILogObserver) def o1(e: LogEvent) -> None: pass
@implementer(ILogObserver) def o2(e: LogEvent) -> None: pass
@implementer(ILogObserver) def o3(e: LogEvent) -> None: pass
@implementer(ILogObserver) def o4(e: LogEvent) -> None: pass
@implementer(ILogObserver) def o5(e: LogEvent) -> None: pass
o1.name = "root/o1" # type: ignore[attr-defined] o2.name = "root/p1/o2" o3.name = "root/p1/o3" o4.name = "root/p1/p2/o4" o5.name = "root/o5"
@implementer(ILogObserver) def testObserver(e: LogEvent) -> None: self.assertIs(e, event) trace = formatTrace(e["log_trace"]) self.assertEqual( trace, ( "{root} ({root.name})\n" " -> {o1} ({o1.name})\n" " -> {p1} ({p1.name})\n" " -> {o2} ({o2.name})\n" " -> {o3} ({o3.name})\n" " -> {p2} ({p2.name})\n" " -> {o4} ({o4.name})\n" " -> {o5} ({o5.name})\n" " -> {oTest}\n" ).format( root=root, o1=o1, o2=o2, o3=o3, o4=o4, o5=o5, p1=p1, p2=p2, oTest=oTest, ), )
oTest = testObserver
p2 = LogPublisher(o4) p1 = LogPublisher(o2, o3, p2)
p2.name = "root/p1/p2/" # type: ignore[attr-defined] p1.name = "root/p1/" # type: ignore[attr-defined]
root = LogPublisher(o1, p1, o5, oTest) root.name = "root/" # type: ignore[attr-defined] root(event)
|