File: test_log.py

package info (click to toggle)
plover 5.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,356 kB
  • sloc: python: 21,589; sh: 682; ansic: 25; makefile: 11
file content (94 lines) | stat: -rw-r--r-- 2,600 bytes parent folder | download
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
90
91
92
93
94
# Copyright (c) 2013 Hesky Fisher
# See LICENSE.txt for details.

import os
from logging import Handler
from collections import defaultdict

import pytest

from plover.steno import Stroke
from plover import log


class FakeHandler(Handler):
    outputs = defaultdict(list)

    def __init__(self, filename, format=log.STROKE_LOG_FORMAT):
        super().__init__()
        self.baseFilename = filename

    def emit(self, record):
        FakeHandler.outputs[self.baseFilename].append(record.getMessage())


@pytest.fixture(autouse=True)
def fake_file_log(monkeypatch):
    monkeypatch.setattr("plover.log.FileHandler", FakeHandler)
    yield
    FakeHandler.outputs.clear()
    # Reset logger state.
    log.set_stroke_filename(None)
    log.enable_stroke_logging(False)
    log.enable_translation_logging(False)


def stroke_filename(path):
    return os.path.abspath(path)


def test_set_filename():
    sf1 = stroke_filename("/fn1")
    log.set_stroke_filename("/fn1")
    log.enable_stroke_logging(True)
    log.stroke(Stroke(("S-",)))
    sf2 = stroke_filename("/fn2")
    log.set_stroke_filename("/fn2")
    log.stroke(Stroke(("-T",)))
    log.set_stroke_filename(None)
    log.stroke(Stroke(("P-",)))
    assert FakeHandler.outputs == {
        sf1: ["Stroke(S : ['S-'])"],
        sf2: ["Stroke(-T : ['-T'])"],
    }


def test_stroke():
    sf = stroke_filename("/fn")
    log.set_stroke_filename(sf)
    log.enable_stroke_logging(True)
    log.stroke(Stroke(("S-", "-T", "T-")))
    log.stroke(Stroke(("#", "S-", "-T")))
    assert FakeHandler.outputs == {
        sf: ["Stroke(ST-T : ['S-', 'T-', '-T'])", "Stroke(1-9 : ['#', 'S-', '-T'])"],
    }


def test_log_translation():
    sf = stroke_filename("/fn")
    log.set_stroke_filename(sf)
    log.enable_translation_logging(True)
    log.translation(["a", "b"], ["c", "d"], None)
    assert FakeHandler.outputs == {sf: ["*a", "*b", "c", "d"]}


def test_enable_stroke_logging():
    sf = stroke_filename("/fn")
    log.set_stroke_filename(sf)
    log.stroke(Stroke(("S-",)))
    log.enable_stroke_logging(True)
    log.stroke(Stroke(("T-",)))
    log.enable_stroke_logging(False)
    log.stroke(Stroke(("K-",)))
    assert FakeHandler.outputs == {sf: ["Stroke(T : ['T-'])"]}


def test_enable_translation_logging():
    sf = stroke_filename("/fn")
    log.set_stroke_filename(sf)
    log.translation(["a"], ["b"], None)
    log.enable_translation_logging(True)
    log.translation(["c"], ["d"], None)
    log.enable_translation_logging(False)
    log.translation(["e"], ["f"], None)
    assert FakeHandler.outputs == {sf: ["*c", "d"]}