File: test_stdlib.py

package info (click to toggle)
python-eliot 1.16.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 964 kB
  • sloc: python: 8,641; makefile: 151
file content (73 lines) | stat: -rw-r--r-- 2,253 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""Tests for standard library logging integration."""

from unittest import TestCase
import logging
import traceback

from ..testing import assertContainsFields, capture_logging
from ..stdlib import EliotHandler
from .test_traceback import assert_expected_traceback


class StdlibTests(TestCase):
    """Tests for stdlib integration."""

    @capture_logging(None)
    def test_handler(self, logger):
        """The EliotHandler routes messages to Eliot."""
        stdlib_logger = logging.getLogger("eliot-test")
        stdlib_logger.setLevel(logging.DEBUG)
        handler = EliotHandler()
        stdlib_logger.addHandler(handler)
        stdlib_logger.info("hello")
        stdlib_logger.warning("ono")
        message = logger.messages[0]
        assertContainsFields(
            self,
            message,
            {
                "message_type": "eliot:stdlib",
                "log_level": "INFO",
                "message": "hello",
                "logger": "eliot-test",
            },
        )
        message = logger.messages[1]
        assertContainsFields(
            self,
            message,
            {
                "message_type": "eliot:stdlib",
                "log_level": "WARNING",
                "message": "ono",
                "logger": "eliot-test",
            },
        )

    @capture_logging(None)
    def test_traceback(self, logger):
        """The EliotHandler routes tracebacks to Eliot."""
        stdlib_logger = logging.getLogger("eliot-test2")
        stdlib_logger.setLevel(logging.DEBUG)
        handler = EliotHandler()
        stdlib_logger.addHandler(handler)
        try:
            raise RuntimeError()
        except Exception as e:
            exception = e
            expected_traceback = traceback.format_exc()
            stdlib_logger.exception("ono")
        message = logger.messages[0]
        assertContainsFields(
            self,
            message,
            {
                "message_type": "eliot:stdlib",
                "log_level": "ERROR",
                "message": "ono",
                "logger": "eliot-test2",
            },
        )
        assert_expected_traceback(
            self, logger, logger.messages[1], exception, expected_traceback
        )