summaryrefslogtreecommitdiffstats
path: root/third_party/python/pluggy/testing/test_tracer.py
blob: 4a3e16cec43638cd0362bd949d43d25909d96ef9 (plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from pluggy import _TagTracer


def test_simple():
    rootlogger = _TagTracer()
    log = rootlogger.get("pytest")
    log("hello")
    out = []
    rootlogger.setwriter(out.append)
    log("world")
    assert len(out) == 1
    assert out[0] == "world [pytest]\n"
    sublog = log.get("collection")
    sublog("hello")
    assert out[1] == "hello [pytest:collection]\n"


def test_indent():
    rootlogger = _TagTracer()
    log = rootlogger.get("1")
    out = []
    log.root.setwriter(lambda arg: out.append(arg))
    log("hello")
    log.root.indent += 1
    log("line1")
    log("line2")
    log.root.indent += 1
    log("line3")
    log("line4")
    log.root.indent -= 1
    log("line5")
    log.root.indent -= 1
    log("last")
    assert len(out) == 7
    names = [x[:x.rfind(' [')] for x in out]
    assert names == [
        'hello', '  line1', '  line2',
        '    line3', '    line4', '  line5', 'last']


def test_readable_output_dictargs():
    rootlogger = _TagTracer()

    out = rootlogger.format_message(['test'], [1])
    assert out == ['1 [test]\n']

    out2 = rootlogger.format_message(['test'], ['test', {'a': 1}])
    assert out2 == [
        'test [test]\n',
        '    a: 1\n'
    ]


def test_setprocessor():
    rootlogger = _TagTracer()
    log = rootlogger.get("1")
    log2 = log.get("2")
    assert log2.tags == tuple("12")
    out = []
    rootlogger.setprocessor(tuple("12"), lambda *args: out.append(args))
    log("not seen")
    log2("seen")
    assert len(out) == 1
    tags, args = out[0]
    assert "1" in tags
    assert "2" in tags
    assert args == ("seen",)
    l2 = []
    rootlogger.setprocessor("1:2", lambda *args: l2.append(args))
    log2("seen")
    tags, args = l2[0]
    assert args == ("seen",)


def test_setmyprocessor():
    rootlogger = _TagTracer()
    log = rootlogger.get("1")
    log2 = log.get("2")
    out = []
    log2.setmyprocessor(lambda *args: out.append(args))
    log("not seen")
    assert not out
    log2(42)
    assert len(out) == 1
    tags, args = out[0]
    assert "1" in tags
    assert "2" in tags
    assert args == (42,)