-
Notifications
You must be signed in to change notification settings - Fork 360
/
test_logging.py
84 lines (63 loc) · 2.16 KB
/
test_logging.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
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
from __future__ import division
import logging
import threading
import av.logging
import av.utils
from av import AVError
from .common import TestCase
def do_log(message):
av.logging.log(av.logging.INFO, 'test', message)
class TestLogging(TestCase):
def test_adapt_level(self):
self.assertEqual(
av.logging.adapt_level(av.logging.ERROR),
logging.ERROR
)
self.assertEqual(
av.logging.adapt_level(av.logging.WARNING),
logging.WARNING
)
self.assertEqual(
av.logging.adapt_level((av.logging.WARNING + av.logging.ERROR) // 2),
logging.WARNING
)
def test_threaded_captures(self):
with av.logging.Capture(local=True) as logs:
do_log('main')
thread = threading.Thread(target=do_log, args=('thread', ))
thread.start()
thread.join()
self.assertIn((av.logging.INFO, 'test', 'main'), logs)
def test_global_captures(self):
with av.logging.Capture(local=False) as logs:
do_log('main')
thread = threading.Thread(target=do_log, args=('thread', ))
thread.start()
thread.join()
self.assertIn((av.logging.INFO, 'test', 'main'), logs)
self.assertIn((av.logging.INFO, 'test', 'thread'), logs)
def test_repeats(self):
with av.logging.Capture() as logs:
do_log('foo')
do_log('foo')
do_log('bar')
do_log('bar')
do_log('bar')
do_log('baz')
logs = [l for l in logs if l[1] == 'test']
self.assertEqual(logs, [
(av.logging.INFO, 'test', 'foo'),
(av.logging.INFO, 'test', 'foo'),
(av.logging.INFO, 'test', 'bar'),
(av.logging.INFO, 'test', 'bar (repeated 2 more times)'),
(av.logging.INFO, 'test', 'baz'),
])
def test_error(self):
log = (av.logging.ERROR, 'test', 'This is a test.')
av.logging.log(*log)
try:
av.utils.err_check(-1)
except AVError as e:
self.assertEqual(e.log, log)
else:
self.fail()