~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: John Arbash Meinel
  • Date: 2005-09-19 03:26:14 UTC
  • mto: (1393.2.1)
  • mto: This revision was merged to the branch mainline in revision 1396.
  • Revision ID: john@arbash-meinel.com-20050919032614-79751b0510f24929
Major refactoring of testtransport.
Rewrote test_transport() as a class which can be subclassed which provides
many test_* functions, rather than one large function.
Much easier to debug.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/env python
2
1
# -*- coding: UTF-8 -*-
3
2
 
4
3
# This program is free software; you can redistribute it and/or modify
25
24
class BzrError(StandardError):
26
25
    pass
27
26
 
 
27
 
28
28
class BzrCheckError(BzrError):
29
29
    pass
30
30
 
31
31
 
 
32
class InvalidRevisionNumber(BzrError):
 
33
    def __init__(self, revno):
 
34
        self.args = [revno]
 
35
        
 
36
    def __str__(self):
 
37
        return 'invalid revision number: %r' % self.args[0]
 
38
 
 
39
 
 
40
class InvalidRevisionId(BzrError):
 
41
    pass
 
42
 
 
43
 
32
44
class BzrCommandError(BzrError):
33
45
    # Error from malformed user command
34
46
    pass
70
82
 
71
83
class PointlessCommit(Exception):
72
84
    """Commit failed because nothing was changed."""
 
85
 
 
86
 
 
87
class NoSuchRevision(BzrError):
 
88
    def __init__(self, branch, revision):
 
89
        self.branch = branch
 
90
        self.revision = revision
 
91
        msg = "Branch %s has no revision %s" % (branch, revision)
 
92
        BzrError.__init__(self, msg)
 
93
 
 
94
 
 
95
class DivergedBranches(BzrError):
 
96
    def __init__(self, branch1, branch2):
 
97
        BzrError.__init__(self, "These branches have diverged.")
 
98
        self.branch1 = branch1
 
99
        self.branch2 = branch2
 
100
 
 
101
class UnrelatedBranches(BzrCommandError):
 
102
    def __init__(self):
 
103
        msg = "Branches have no common ancestor, and no base revision"\
 
104
            " specified."
 
105
        BzrCommandError.__init__(self, msg)
 
106
 
 
107
class NoCommonAncestor(BzrError):
 
108
    def __init__(self, revision_a, revision_b):
 
109
        msg = "Revisions have no common ancestor: %s %s." \
 
110
            % (revision_a, revision_b) 
 
111
        BzrError.__init__(self, msg)
 
112
 
 
113
class NoCommonRoot(BzrError):
 
114
    def __init__(self, revision_a, revision_b):
 
115
        msg = "Revisions are not derived from the same root: %s %s." \
 
116
            % (revision_a, revision_b) 
 
117
        BzrError.__init__(self, msg)
 
118
 
 
119
class NotAncestor(BzrError):
 
120
    def __init__(self, rev_id, not_ancestor_id):
 
121
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
 
122
                                                        rev_id)
 
123
        BzrError.__init__(self, msg)
 
124
        self.rev_id = rev_id
 
125
        self.not_ancestor_id = not_ancestor_id
 
126
 
 
127
 
 
128
class InstallFailed(BzrError):
 
129
    def __init__(self, revisions):
 
130
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
 
131
        BzrError.__init__(self, msg)
 
132
        self.revisions = revisions
 
133
 
 
134
 
 
135
class AmbiguousBase(BzrError):
 
136
    def __init__(self, bases):
 
137
        msg = "The correct base is unclear, becase %s are all equally close" %\
 
138
            ", ".join(bases)
 
139
        BzrError.__init__(self, msg)
 
140
        self.bases = bases
 
141
 
 
142
class NoCommits(BzrError):
 
143
    def __init__(self, branch):
 
144
        msg = "Branch %s has no commits." % branch
 
145
        BzrError.__init__(self, msg)
 
146
 
 
147
class TransportError(BzrError):
 
148
    """All errors thrown by Transport implementations should derive
 
149
    from this class.
 
150
    """
 
151
    def __init__(self, msg=None, orig_error=None):
 
152
        if msg is None and orig_error is not None:
 
153
            msg = str(orig_error)
 
154
        BzrError.__init__(self, msg)
 
155
        self.msg = msg
 
156
        self.orig_error = orig_error
 
157
 
 
158
# A set of semi-meaningful errors which can be thrown
 
159
class TransportNotPossible(TransportError):
 
160
    """This is for transports where a specific function is explicitly not
 
161
    possible. Such as pushing files to an HTTP server.
 
162
    """
 
163
    pass
 
164
 
 
165
class NonRelativePath(TransportError):
 
166
    """An absolute path was supplied, that could not be decoded into
 
167
    a relative path.
 
168
    """
 
169
    pass
 
170
 
 
171
class NoSuchFile(TransportError, IOError):
 
172
    """A get() was issued for a file that doesn't exist."""
 
173
    def __init__(self, msg=None, orig_error=None):
 
174
        import errno
 
175
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
176
        IOError.__init__(self, errno.ENOENT, self.msg)
 
177
 
 
178
class FileExists(TransportError, OSError):
 
179
    """An operation was attempted, which would overwrite an entry,
 
180
    but overwritting is not supported.
 
181
 
 
182
    mkdir() can throw this, but put() just overwites existing files.
 
183
    """
 
184
    def __init__(self, msg=None, orig_error=None):
 
185
        import errno
 
186
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
 
187
        OSError.__init__(self, errno.EEXIST, self.msg)
 
188
 
 
189
class PermissionDenied(TransportError):
 
190
    """An operation cannot succeed because of a lack of permissions."""
 
191
    pass
 
192
 
 
193
class ConnectionReset(TransportError):
 
194
    """The connection has been closed."""
 
195
    pass
 
196