blob: 643d890de8c3738926c1c41bc4b7ef5afc3380d8 (
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
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import logging
import time
import unittest
from mozunit import main
from mach.logging import StructuredHumanFormatter
class DummyLogger(logging.Logger):
def __init__(self, cb):
logging.Logger.__init__(self, "test")
self._cb = cb
def handle(self, record):
self._cb(record)
class TestStructuredHumanFormatter(unittest.TestCase):
def test_non_ascii_logging(self):
# Ensures the formatter doesn't choke when non-ASCII characters are
# present in printed parameters.
formatter = StructuredHumanFormatter(time.time())
def on_record(record):
result = formatter.format(record)
relevant = result[9:]
self.assertEqual(relevant, "Test: s\xe9curit\xe9")
logger = DummyLogger(on_record)
value = "s\xe9curit\xe9"
logger.log(
logging.INFO,
"Test: {utf}",
extra={"action": "action", "params": {"utf": value}},
)
if __name__ == "__main__":
main()
|