Completed
Pull Request — master (#2409)
by
unknown
01:55
created

LogPrinterTest.test_log_level()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
import unittest
2
from unittest import mock
3
from datetime import datetime
4
import logging
5
6
from pyprint.NullPrinter import NullPrinter
7
from pyprint.Printer import Printer
8
9
from coalib.misc import Constants
10
from coalib.output.printers.LogPrinter import (
11
    ColoredFormatter, LogPrinter, PrinterHandler)
12
from coalib.processes.communication.LogMessage import LOG_LEVEL, LogMessage
13
14
15
class PrinterHandlerTest(unittest.TestCase):
16
17
    def setUp(self):
18
        self.handler = PrinterHandler()
19
        self.record = logging.LogRecord('name', logging.DEBUG, 'pathname',
20
                                        0, "Test message!", [], None)
21
22
    @mock.patch('sys.stdout')
23
    def test_emit_printer_none(self, stdout):
24
        self.handler = PrinterHandler(None)
25
        self.handler.emit(self.record)
26
        stdout.write.assert_called_once_with("Test message!\n")
27
28
29
class ColoredFormatterTest(unittest.TestCase):
30
31
    def setUp(self):
32
        self.formatter = ColoredFormatter('%(levelname)s %(message)s',
33
                                          use_color=False)
34
        self.record = logging.LogRecord('name', logging.DEBUG, 'pathname',
35
                                        0, "Test message!", [], None)
36
37
    def test_format(self):
38
        msg = self.formatter.format(self.record)
39
        self.assertEqual(msg, '[DEBUG] Test message!')
40
41
    def test_colored(self):
42
        self.formatter = ColoredFormatter('%(levelname)s %(message)s',
43
                                          use_color=True)
44
        msg = self.formatter.format(self.record)
45
        self.assertTrue(msg.endswith('[DEBUG]\x1b[0m Test message!'))
46
47
48
class LogPrinterTest(unittest.TestCase):
49
    timestamp = datetime.today()
50
    log_message = LogMessage(LOG_LEVEL.ERROR,
51
                             Constants.COMPLEX_TEST_STRING,
52
                             timestamp=timestamp)
53
54
    def test_get_printer(self):
55
        self.assertIs(LogPrinter("logger").printer, "logger")
56
        printer = Printer()
57
        self.assertIs(LogPrinter(printer).printer, printer)
58
59
    def test_logging(self):
60
        self.timestamp = datetime.now()
61
        uut = LogPrinter(timestamp_format="")
62
        with self.assertLogs() as cm:
63
            uut.log_message(self.log_message)
64
65
        msg = Constants.COMPLEX_TEST_STRING
66
        self.assertListEqual(
67
            cm.output,
68
            ["ERROR:coala.raw:{msg}".format(msg=msg)])
69
70
        uut = LogPrinter(log_level=LOG_LEVEL.DEBUG)
71
        with self.assertLogs() as cm:
72
            uut.log_message(self.log_message)
73
        self.assertListEqual(
74
            cm.output,
75
            ["ERROR:coala.raw:{msg}".format(msg=msg)])
76
77
        with self.assertLogs() as cm:
78
            uut.log(LOG_LEVEL.ERROR, Constants.COMPLEX_TEST_STRING)
79
        self.assertListEqual(
80
            cm.output,
81
            ["ERROR:coala.raw:{msg}".format(msg=msg)])
82
83
        with self.assertLogs() as cm:
84
            uut.debug(Constants.COMPLEX_TEST_STRING, "d")
85
        self.assertListEqual(
86
            cm.output,
87
            ["DEBUG:coala.raw:{msg} d".format(msg=msg)])
88
89
        uut.log_level = LOG_LEVEL.DEBUG
90
        with self.assertLogs() as cm:
91
            uut.log_exception(
92
                "Something failed.",
93
                NotImplementedError(msg))
94
        print(cm.output)
95
        self.assertEqual(
96
            cm.output,
97
            ["ERROR:coala.raw:Something failed.",
98
             "DEBUG:coala.raw:Exception was:\n{exception}: {msg}".format(
99
                 exception="NotImplementedError",
100
                 msg=msg)])
101
102
    def test_raises(self):
103
        uut = LogPrinter(NullPrinter())
104
        self.assertRaises(TypeError, uut.log, 5)
105
        self.assertRaises(TypeError, uut.log_exception, "message", 5)
106
        self.assertRaises(TypeError, uut.log_message, 5)
107
108
    def test_log_level(self):
109
        uut = LogPrinter()
110
        self.assertEqual(uut.log_level, logging.INFO)
111
        uut.log_level = logging.DEBUG
112
        self.assertEqual(uut.log_level, logging.DEBUG)
113
114
    def test_get_state(self):
115
        uut = LogPrinter()
116
        self.assertNotIn('logger', uut.__getstate__())
117
118
    def test_set_state(self):
119
        uut = LogPrinter()
120
        state = uut.__getstate__()
121
        uut.__setstate__(state)
122
        self.assertEqual(uut.logger, logging.getLogger('coala.raw'))
123