/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_errors.py

  • Committer: John Arbash Meinel
  • Date: 2010-08-13 19:08:57 UTC
  • mto: (5050.17.7 2.2)
  • mto: This revision was merged to the branch mainline in revision 5379.
  • Revision ID: john@arbash-meinel.com-20100813190857-mvzwnimrxvm0zimp
Lots of documentation updates.

We had a lot of http links pointing to the old domain. They should
all now be properly updated to the new domain. (only bazaar-vcs.org
entry left is for pqm, which seems to still reside at the old url.)

Also removed one 'TODO' doc entry about switching to binary xdelta, since
we basically did just that with groupcompress.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Tests for the formatting and construction of errors."""
18
18
 
 
19
import inspect
 
20
import re
19
21
import socket
20
22
import sys
21
23
 
26
28
    symbol_versioning,
27
29
    urlutils,
28
30
    )
29
 
from bzrlib.tests import TestCase, TestCaseWithTransport
 
31
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
30
32
 
31
33
 
32
34
class TestErrors(TestCaseWithTransport):
33
35
 
 
36
    def test_no_arg_named_message(self):
 
37
        """Ensure the __init__ and _fmt in errors do not have "message" arg.
 
38
 
 
39
        This test fails if __init__ or _fmt in errors has an argument
 
40
        named "message" as this can cause errors in some Python versions.
 
41
        Python 2.5 uses a slot for StandardError.message.
 
42
        See bug #603461
 
43
        """
 
44
        fmt_pattern = re.compile("%\(message\)[sir]")
 
45
        subclasses_present = getattr(errors.BzrError, '__subclasses__', None)
 
46
        if not subclasses_present:
 
47
            raise TestSkipped('__subclasses__ attribute required for classes. '
 
48
                'Requires Python 2.5 or later.')
 
49
        for c in errors.BzrError.__subclasses__():
 
50
            init = getattr(c, '__init__', None)
 
51
            fmt = getattr(c, '_fmt', None)
 
52
            if init:
 
53
                args = inspect.getargspec(init)[0]
 
54
                self.assertFalse('message' in args,
 
55
                    ('Argument name "message" not allowed for '
 
56
                    '"errors.%s.__init__"' % c.__name__))
 
57
            if fmt and fmt_pattern.search(fmt):
 
58
                self.assertFalse(True, ('"message" not allowed in '
 
59
                    '"errors.%s._fmt"' % c.__name__))
 
60
 
34
61
    def test_bad_filename_encoding(self):
35
62
        error = errors.BadFilenameEncoding('bad/filen\xe5me', 'UTF-8')
36
63
        self.assertEqualDiff(
655
682
        str(err)
656
683
        self.assertEqual(['open_repository'], fake_bzrdir.calls)
657
684
 
 
685
    def test_invalid_pattern(self):
 
686
        error = errors.InvalidPattern('Bad pattern msg.')
 
687
        self.assertEqualDiff("Invalid pattern(s) found. Bad pattern msg.",
 
688
            str(error))
 
689
 
 
690
    def test_recursive_bind(self):
 
691
        error = errors.RecursiveBind('foo_bar_branch')
 
692
        msg = ('Branch "foo_bar_branch" appears to be bound to itself. '
 
693
            'Please use `bzr unbind` to fix.')
 
694
        self.assertEqualDiff(msg, str(error))
 
695
 
658
696
 
659
697
class PassThroughError(errors.BzrError):
660
698
 
703
741
            str(e), 'Unprintable exception ErrorWithBadFormat')
704
742
 
705
743
    def test_cannot_bind_address(self):
706
 
        # see <https://bugs.edge.launchpad.net/bzr/+bug/286871>
 
744
        # see <https://bugs.launchpad.net/bzr/+bug/286871>
707
745
        e = errors.CannotBindAddress('example.com', 22,
708
746
            socket.error(13, 'Permission denied'))
709
747
        self.assertContainsRe(str(e),
713
751
        e = errors.FileTimestampUnavailable("/path/foo")
714
752
        self.assertEquals("The filestamp for /path/foo is not available.",
715
753
            str(e))
 
754
            
 
755
    def test_transform_rename_failed(self):
 
756
        e = errors.TransformRenameFailed(u"from", u"to", "readonly file", 2)
 
757
        self.assertEquals(
 
758
            u"Failed to rename from to to: readonly file",
 
759
            str(e))