1
2
3
4
5
6
7
8
9 """Unit tests for PyMVPA verbose and debug output"""
10
11 import unittest, re
12 from StringIO import StringIO
13
14 from mvpa.base.verbosity import OnceLogger
15
16 from mvpa.base import verbose, error
17
18 if __debug__:
19 from mvpa.base import debug
20 debug.register('1', 'id 1')
21 debug.register('2', 'id 2')
22
23 from sets import Set
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
41
61
69
70
72 """Test if it doesn't output at higher levels"""
73 verbose(5, self.msg)
74 self.failUnlessEqual(self.sout.getvalue(), "")
75
76
78 """Test if outputs at lower levels and indents
79 by default with spaces
80 """
81 verbose(2, self.msg)
82 self.failUnlessEqual(self.sout.getvalue(),
83 " %s\n" % self.msg)
84
86 """Test indent symbol
87 """
88 verbose.indent = "."
89 verbose(2, self.msg)
90 self.failUnlessEqual(self.sout.getvalue(), "..%s\n" % self.msg)
91 verbose.indent = " "
92
94 """Test if chokes on negative level"""
95 self.failUnlessRaises( ValueError,
96 verbose._setLevel, -10 )
97
99 """Test if it works fine with no newline (LF) symbol"""
100 verbose(2, self.msg, lf=False)
101 verbose(2, " continue ", lf=False)
102 verbose(2, "end")
103 verbose(0, "new %s" % self.msg)
104 self.failUnlessEqual(self.sout.getvalue(),
105 " %s continue end\nnew %s\n" % \
106 (self.msg, self.msg))
107
109 """Test if works fine with carriage return (cr) symbol"""
110 verbose(2, self.msg, cr=True)
111 verbose(2, "rewrite", cr=True)
112 verbose(1, "rewrite 2", cr=True)
113 verbose(1, " add", cr=False, lf=False)
114 verbose(1, " finish")
115 target = '\r %s\r \rrewrite' % self.msg + \
116 '\r \rrewrite 2 add finish\n'
117 self.failUnlessEqual(self.sout.getvalue(), target)
118
120 """Test once logger"""
121 self.once("X", self.msg)
122 self.once("X", self.msg)
123 self.failUnlessEqual(self.sout.getvalue(), self.msg+"\n")
124
125 self.once("Y", "XXX", 2)
126 self.once("Y", "XXX", 2)
127 self.once("Y", "XXX", 2)
128 self.failUnlessEqual(self.sout.getvalue(), self.msg+"\nXXX\nXXX\n")
129
130
132 """Test error message"""
133 error(self.msg, critical=False)
134 self.failUnless(self.sout.getvalue().startswith("ERROR"))
135
136
137 if __debug__:
139 verbose.handlers = []
140 debug.active = ['1', '2', 'SLC']
141
142 debug('SLC', self.msg, lf=False)
143 self.failUnlessRaises(ValueError, debug, 3, 'bugga')
144
145 svalue = self.sout.getvalue()
146 regexp = "\[SLC\] DBG(?:{.*})?: %s" % self.msg
147 rematch = re.match(regexp, svalue)
148 self.failUnless(rematch, msg="Cannot match %s with regexp %s" %
149 (svalue, regexp))
150
151
167
168
169
170
173
174
175 if __name__ == '__main__':
176 import runner
177