~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_errors.py

  • Committer: John Arbash Meinel
  • Date: 2006-08-23 23:21:12 UTC
  • mfrom: (1953 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1955.
  • Revision ID: john@arbash-meinel.com-20060823232112-f755378d583374a8
[merge] bzr.dev 1953

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Tests for the formatting and construction of errors."""
19
19
 
20
 
import bzrlib.bzrdir as bzrdir
21
 
import bzrlib.errors as errors
22
 
from bzrlib.tests import TestCaseWithTransport
 
20
from bzrlib import (
 
21
    bzrdir,
 
22
    errors,
 
23
    )
 
24
from bzrlib.tests import TestCase, TestCaseWithTransport
23
25
 
24
26
 
25
27
class TestErrors(TestCaseWithTransport):
44
46
                             "Please run bzr reconcile on this repository." %
45
47
                             repo.bzrdir.root_transport.base,
46
48
                             str(error))
 
49
 
 
50
 
 
51
class PassThroughError(errors.BzrNewError):
 
52
    """Pass through %(foo)s and %(bar)s"""
 
53
 
 
54
    def __init__(self, foo, bar):
 
55
        errors.BzrNewError.__init__(self, foo=foo, bar=bar)
 
56
 
 
57
 
 
58
class TestErrorFormatting(TestCase):
 
59
    
 
60
    def test_always_str(self):
 
61
        e = PassThroughError(u'\xb5', 'bar')
 
62
        self.assertIsInstance(e.__str__(), str)
 
63
        # In Python str(foo) *must* return a real byte string
 
64
        # not a Unicode string. The following line would raise a
 
65
        # Unicode error, because it tries to call str() on the string
 
66
        # returned from e.__str__(), and it has non ascii characters
 
67
        s = str(e)
 
68
        self.assertEqual('Pass through \xc2\xb5 and bar', s)