File: test_logging.py

package info (click to toggle)
ansimarkup 2.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 156 kB
  • sloc: python: 546; makefile: 4
file content (55 lines) | stat: -rw-r--r-- 1,272 bytes parent folder | download | duplicates (2)
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
# flake8: noqa

import io, sys
import logging

from pytest import raises, mark, fixture
from colorama import Style as S, Fore as F, Back as B

from ansimarkup.logformatter import AnsiMarkupFormatter
from ansimarkup import parse as p


class CaptureLogHandler(logging.StreamHandler):
    def __init__(self):
        logging.StreamHandler.__init__(self, io.StringIO())
        self.records = []
        self.output = ""

        if sys.version_info < (3, 0):
            old_write = self.stream.write

            def write(data):
                data = unicode(data.encode("utf8"))
                old_write(data)

            self.stream.write = write

    def close(self):
        logging.StreamHandler.close(self)
        self.stream.close()

    def emit(self, record):
        self.records.append(record)
        logging.StreamHandler.emit(self, record)
        self.stream.flush()
        self.last_msg = self.stream.getvalue().splitlines()[-1]


@fixture
def caplog():
    log = logging.Logger("test")
    hdl = CaptureLogHandler()
    fmt = AnsiMarkupFormatter()

    hdl.setFormatter(fmt)
    log.addHandler(hdl)

    return log, hdl


def test_basic(caplog):
    log, hdl = caplog

    log.info("<b>1</b>")
    assert hdl.last_msg == S.BRIGHT + "1" + S.RESET_ALL