/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_trace.py

  • Committer: Martin Pool
  • Date: 2007-09-14 06:31:28 UTC
  • mfrom: (2822 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2823.
  • Revision ID: mbp@sourcefrog.net-20070914063128-0p7mh6zfb4pzdg9p
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
    errors,
28
28
    )
29
29
from bzrlib.tests import TestCaseInTempDir, TestCase
30
 
from bzrlib.trace import mutter, report_exception
 
30
from bzrlib.trace import (
 
31
    mutter, mutter_callsite, report_exception,
 
32
    set_verbosity_level, get_verbosity_level, is_quiet, is_verbose, be_quiet,
 
33
    )
31
34
 
32
35
 
33
36
def _format_exception():
83
86
            pass
84
87
        msg = _format_exception()
85
88
        self.assertTrue(len(msg) > 0)
86
 
        self.assertEqualDiff(msg, 'bzr: ERROR: Not a branch: wibble\n')
 
89
        self.assertEqualDiff(msg, 'bzr: ERROR: Not a branch: \"wibble\".\n')
87
90
 
88
91
    def test_trace_unicode(self):
89
92
        """Write Unicode to trace log"""
113
116
        else:
114
117
            self.fail("expected error not raised")
115
118
 
 
119
    def test_mutter_callsite_1(self):
 
120
        """mutter_callsite can capture 1 level of stack frame."""
 
121
        mutter_callsite(1, "foo %s", "a string")
 
122
        log = self._get_log(keep_log_file=True)
 
123
        # begin with the message
 
124
        self.assertStartsWith(log, 'foo a string\nCalled from:\n')
 
125
        # should show two frame: this frame and the one above
 
126
        self.assertContainsRe(log,
 
127
            'test_trace\.py", line \d+, in test_mutter_callsite_1\n')
 
128
        # this frame should be the final one
 
129
        self.assertEndsWith(log, ' "a string")\n')
 
130
 
 
131
    def test_mutter_callsite_2(self):
 
132
        """mutter_callsite can capture 2 levels of stack frame."""
 
133
        mutter_callsite(2, "foo %s", "a string")
 
134
        log = self._get_log(keep_log_file=True)
 
135
        # begin with the message
 
136
        self.assertStartsWith(log, 'foo a string\nCalled from:\n')
 
137
        # should show two frame: this frame and the one above
 
138
        self.assertContainsRe(log,
 
139
            'test_trace.py", line \d+, in test_mutter_callsite_2\n')
 
140
        # this frame should be the final one
 
141
        self.assertEndsWith(log, ' "a string")\n')
 
142
 
116
143
    def test_mutter_never_fails(self):
117
144
        # Even if the decode/encode stage fails, mutter should not
118
145
        # raise an exception
123
150
        self.assertContainsRe(log, 'Writing a greek mu')
124
151
        self.assertContainsRe(log, "But fails in an ascii string")
125
152
        self.assertContainsRe(log, u"ascii argument: \xb5")
 
153
 
 
154
 
 
155
class TestVerbosityLevel(TestCase):
 
156
 
 
157
    def test_verbosity_level(self):
 
158
        set_verbosity_level(1)
 
159
        self.assertEqual(1, get_verbosity_level())
 
160
        self.assertTrue(is_verbose())
 
161
        self.assertFalse(is_quiet())
 
162
        set_verbosity_level(-1)
 
163
        self.assertEqual(-1, get_verbosity_level())
 
164
        self.assertFalse(is_verbose())
 
165
        self.assertTrue(is_quiet())
 
166
        set_verbosity_level(0)
 
167
        self.assertEqual(0, get_verbosity_level())
 
168
        self.assertFalse(is_verbose())
 
169
        self.assertFalse(is_quiet())
 
170
 
 
171
    def test_be_quiet(self):
 
172
        # Confirm the old API still works
 
173
        be_quiet(True)
 
174
        self.assertEqual(-1, get_verbosity_level())
 
175
        be_quiet(False)
 
176
        self.assertEqual(0, get_verbosity_level())