~timo-jyrinki/ubuntu/trusty/pitivi/merge_debian_0.93-3

« back to all changes in this revision

Viewing changes to pitivi/log/test_log.py

  • Committer: Timo Jyrinki
  • Author(s): Sebastian Dröge
  • Date: 2014-04-05 13:28:16 UTC
  • mfrom: (1.5.8)
  • Revision ID: timo.jyrinki@canonical.com-20140405132816-wmv1rhbtmlxmx3ag
Tags: 0.93-3
* debian/control:
  + Depend on python-gi (>= 3.10), older versions do not work
    with pitivi (Closes: #732813).
  + Add missing dependency on gir1.2-clutter-gst-2.0 (Closes: #743692).
  + Add suggests on gir1.2-notify-0.7 and gir1.2-gnomedesktop-3.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- Mode: Python; test-case-name: test_log -*-
2
 
# vi:si:et:sw=4:sts=4:ts=4
3
 
#
4
 
# Flumotion - a streaming media server
5
 
# Copyright (C) 2004,2005,2006,2007 Fluendo, S.L. (www.fluendo.com).
6
 
# All rights reserved.
7
 
 
8
 
# This file may be distributed and/or modified under the terms of
9
 
# the GNU General Public License version 2 as published by
10
 
# the Free Software Foundation.
11
 
# This file is distributed without any warranty; without even the implied
12
 
# warranty of merchantability or fitness for a particular purpose.
13
 
# See "LICENSE.GPL" in the source distribution for more information.
14
 
 
15
 
# Licensees having purchased or holding a valid Flumotion Advanced
16
 
# Streaming Server license may use this file in accordance with the
17
 
# Flumotion Advanced Streaming Server Commercial License Agreement.
18
 
# See "LICENSE.Flumotion" in the source distribution for more information.
19
 
 
20
 
# Headers in this file shall remain intact.
21
 
 
22
 
from twisted.trial import unittest
23
 
 
24
 
import log
25
 
 
26
 
__version__ = "$Rev: 7162 $"
27
 
 
28
 
 
29
 
class LogTester(log.Loggable):
30
 
    logCategory = 'testlog'
31
 
 
32
 
 
33
 
class LogFunctionTester(log.Loggable):
34
 
 
35
 
    def logFunction(self, format, *args):
36
 
        return (("override " + format), ) + args[1:]
37
 
 
38
 
 
39
 
class TestLog(unittest.TestCase):
40
 
 
41
 
    def setUp(self):
42
 
        self.category = self.level = self.message = None
43
 
        self.tester = LogTester()
44
 
        # we want to remove the default handler so it doesn't show up stuff
45
 
        log.reset()
46
 
 
47
 
    # just test for parsing semi- or non-valid FLU_DEBUG variables
48
 
 
49
 
    def testSetDebug(self):
50
 
        log.setDebug(":5")
51
 
        log.setDebug("*")
52
 
        log.setDebug("5")
53
 
 
54
 
    # test for adding a log handler
55
 
 
56
 
    def handler(self, level, object, category, file, line, message):
57
 
        self.level = level
58
 
        self.object = object
59
 
        self.category = category
60
 
        self.file = file
61
 
        self.line = line
62
 
        self.message = message
63
 
 
64
 
    def testLimitInvisible(self):
65
 
        log.setDebug("testlog:3")
66
 
        log.addLimitedLogHandler(self.handler)
67
 
 
68
 
        # log 2 we shouldn't get
69
 
        self.tester.log("not visible")
70
 
        assert not self.category
71
 
        assert not self.level
72
 
        assert not self.message
73
 
 
74
 
        self.tester.debug("not visible")
75
 
        assert not self.category
76
 
        assert not self.level
77
 
        assert not self.message
78
 
 
79
 
    def testLimitedVisible(self):
80
 
        log.setDebug("testlog:3")
81
 
        log.addLimitedLogHandler(self.handler)
82
 
 
83
 
        # log 3 we should get
84
 
        self.tester.info("visible")
85
 
        assert self.category == 'testlog'
86
 
        assert self.level == log.INFO
87
 
        assert self.message == 'visible'
88
 
 
89
 
        self.tester.warning("also visible")
90
 
        assert self.category == 'testlog'
91
 
        assert self.level == log.WARN
92
 
        assert self.message == 'also visible'
93
 
 
94
 
    def testFormatStrings(self):
95
 
        log.setDebug("testlog:3")
96
 
        log.addLimitedLogHandler(self.handler)
97
 
 
98
 
        self.tester.info("%d %s", 42, 'the answer')
99
 
        assert self.category == 'testlog'
100
 
        assert self.level == log.INFO
101
 
        assert self.message == '42 the answer'
102
 
 
103
 
    def testLimitedError(self):
104
 
        log.setDebug("testlog:3")
105
 
        log.addLimitedLogHandler(self.handler)
106
 
 
107
 
        self.assertRaises(SystemExit, self.tester.error, "error")
108
 
        assert self.category == 'testlog'
109
 
        assert self.level == log.ERROR
110
 
        assert self.message == 'error'
111
 
 
112
 
    def testLogHandlerLimitedLevels(self):
113
 
        log.setDebug("testlog:3")
114
 
        log.addLimitedLogHandler(self.handler)
115
 
 
116
 
        # now try debug and log again too
117
 
        log.setDebug("testlog:5")
118
 
 
119
 
        self.tester.debug("debug")
120
 
        assert self.category == 'testlog'
121
 
        assert self.level == log.DEBUG
122
 
        assert self.message == 'debug'
123
 
 
124
 
        self.tester.log("log")
125
 
        assert self.category == 'testlog'
126
 
        assert self.level == log.LOG
127
 
        assert self.message == 'log'
128
 
 
129
 
    # test that we get all log messages
130
 
 
131
 
    def testLogHandler(self):
132
 
        log.setDebug("testlog:3")
133
 
        log.addLogHandler(self.handler)
134
 
 
135
 
        self.tester.log("visible")
136
 
        assert self.message == 'visible'
137
 
 
138
 
        self.tester.warning("also visible")
139
 
        assert self.message == 'also visible'
140
 
 
141
 
 
142
 
class TestOwnLogHandler(unittest.TestCase):
143
 
 
144
 
    def setUp(self):
145
 
        self.category = self.level = self.message = None
146
 
        self.tester = LogFunctionTester()
147
 
 
148
 
    def handler(self, level, object, category, file, line, message):
149
 
        self.level = level
150
 
        self.object = object
151
 
        self.category = category
152
 
        self.file = file
153
 
        self.line = line
154
 
        self.message = message
155
 
 
156
 
    # test if our own log handler correctly mangles the message
157
 
 
158
 
    def testOwnLogHandlerLimited(self):
159
 
        log.setDebug("testlog:3")
160
 
        log.addLogHandler(self.handler)
161
 
 
162
 
        self.tester.log("visible")
163
 
        assert self.message == 'override visible'
164
 
 
165
 
    def testLogHandlerAssertion(self):
166
 
        self.assertRaises(TypeError, log.addLimitedLogHandler, None)
167
 
 
168
 
 
169
 
class TestGetExceptionMessage(unittest.TestCase):
170
 
 
171
 
    def func3(self):
172
 
        self.func2()
173
 
 
174
 
    def func2(self):
175
 
        self.func1()
176
 
 
177
 
    def func1(self):
178
 
        raise TypeError("I am in func1")
179
 
 
180
 
    def testLevel2(self):
181
 
        try:
182
 
            self.func2()
183
 
            self.fail()
184
 
        except TypeError, e:
185
 
            self.verifyException(e)
186
 
 
187
 
    def testLevel3(self):
188
 
        try:
189
 
            self.func3()
190
 
            self.fail()
191
 
        except TypeError, e:
192
 
            self.verifyException(e)
193
 
 
194
 
    def verifyException(self, e):
195
 
        message = log.getExceptionMessage(e)
196
 
        self.failUnless("func1()" in message)
197
 
        self.failUnless("test_log.py" in message)
198
 
        self.failUnless("TypeError" in message)
199
 
 
200
 
 
201
 
class TestLogSettings(unittest.TestCase):
202
 
 
203
 
    def testSet(self):
204
 
        old = log.getLogSettings()
205
 
        log.setDebug('*:5')
206
 
        self.assertNotEquals(old, log.getLogSettings())
207
 
 
208
 
        log.setLogSettings(old)
209
 
        self.assertEquals(old, log.getLogSettings())
210
 
 
211
 
 
212
 
class TestWriteMark(unittest.TestCase):
213
 
 
214
 
    def handler(self, level, object, category, file, line, message):
215
 
        self.level = level
216
 
        self.object = object
217
 
        self.category = category
218
 
        self.file = file
219
 
        self.line = line
220
 
        self.message = message
221
 
 
222
 
    def testWriteMarkInDebug(self):
223
 
        loggable = log.Loggable()
224
 
        log.setDebug("4")
225
 
        log.addLogHandler(self.handler)
226
 
        marker = 'test'
227
 
        loggable.writeMarker(marker, log.DEBUG)
228
 
        self.assertEquals(self.message, marker)
229
 
 
230
 
    def testWriteMarkInWarn(self):
231
 
        loggable = log.Loggable()
232
 
        log.setDebug("2")
233
 
        log.addLogHandler(self.handler)
234
 
        marker = 'test'
235
 
        loggable.writeMarker(marker, log.WARN)
236
 
        self.assertEquals(self.message, marker)
237
 
 
238
 
    def testWriteMarkInInfo(self):
239
 
        loggable = log.Loggable()
240
 
        log.setDebug("3")
241
 
        log.addLogHandler(self.handler)
242
 
        marker = 'test'
243
 
        loggable.writeMarker(marker, log.INFO)
244
 
        self.assertEquals(self.message, marker)
245
 
 
246
 
    def testWriteMarkInLog(self):
247
 
        loggable = log.Loggable()
248
 
        log.setDebug("5")
249
 
        log.addLogHandler(self.handler)
250
 
        marker = 'test'
251
 
        loggable.writeMarker(marker, log.LOG)
252
 
        self.assertEquals(self.message, marker)
253
 
 
254
 
    def testWriteMarkInError(self):
255
 
        loggable = log.Loggable()
256
 
        log.setDebug("4")
257
 
        log.addLogHandler(self.handler)
258
 
        marker = 'test'
259
 
        self.assertRaises(SystemExit, loggable.writeMarker, marker, log.ERROR)
260
 
        self.assertEquals(self.message, marker)
261
 
 
262
 
 
263
 
class TestLogNames(unittest.TestCase):
264
 
 
265
 
    def testGetLevelNames(self):
266
 
        self.assertEquals(['ERROR', 'WARN', 'INFO', 'DEBUG', 'LOG'],
267
 
                          log.getLevelNames())
268
 
 
269
 
    def testGetLevelCode(self):
270
 
        self.assertEquals(1, log.getLevelInt('ERROR'))
271
 
        self.assertEquals(2, log.getLevelInt('WARN'))
272
 
        self.assertEquals(3, log.getLevelInt('INFO'))
273
 
        self.assertEquals(4, log.getLevelInt('DEBUG'))
274
 
        self.assertEquals(5, log.getLevelInt('LOG'))
275
 
 
276
 
    def testGetLevelName(self):
277
 
        self.assertEquals('ERROR', log.getLevelName(1))
278
 
        self.assertEquals('WARN', log.getLevelName(2))
279
 
        self.assertEquals('INFO', log.getLevelName(3))
280
 
        self.assertEquals('DEBUG', log.getLevelName(4))
281
 
        self.assertEquals('LOG', log.getLevelName(5))
282
 
 
283
 
if __name__ == '__main__':
284
 
    unittest.main()