forked from Delgan/loguru
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_pickling.py
51 lines (43 loc) · 1.34 KB
/
test_pickling.py
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
from loguru import logger
import pickle
import sys
import pytest
def test_pickling_logging_method(writer):
logger.add(writer, format="{level} - {function} - {message}")
pickled = pickle.dumps(logger.critical)
func = pickle.loads(pickled)
func("A message")
assert writer.read() == "CRITICAL - test_pickling_logging_method - A message\n"
def test_pickling_log_method(writer):
logger.add(writer, format="{level} - {function} - {message}")
pickled = pickle.dumps(logger.log)
func = pickle.loads(pickled)
func(19, "A message")
assert writer.read() == "Level 19 - test_pickling_log_method - A message\n"
def test_pickling_logger(writer):
pickled = pickle.dumps(logger)
inst = pickle.loads(pickled)
inst.add(writer, format="{level} - {function} - {message}")
inst.debug("A message")
assert writer.read() == "DEBUG - test_pickling_logger - A message\n"
@pytest.mark.parametrize(
"method",
[
logger.add,
logger.remove,
logger.catch,
logger.opt,
logger.bind,
logger.patch,
logger.level,
logger.disable,
logger.enable,
logger.configure,
logger.parse,
logger.exception,
],
)
def test_pickling_no_error(method):
pickled = pickle.dumps(method)
unpickled = pickle.loads(pickled)
assert unpickled