~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml4.py

  • Committer: John Arbash Meinel
  • Date: 2008-08-18 22:34:21 UTC
  • mto: (3606.5.6 1.6)
  • mto: This revision was merged to the branch mainline in revision 3641.
  • Revision ID: john@arbash-meinel.com-20080818223421-todjny24vj4faj4t
Add tests for the fetching behavior.

The proper parameter passed is 'unordered' add an assert for it, and
fix callers that were passing 'unsorted' instead.
Add tests that we make the right get_record_stream call based
on the value of _fetch_uses_deltas.
Fix the fetch request for signatures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
from bzrlib.xml_serializer import (
18
 
    Element,
19
 
    SubElement,
20
 
    XMLSerializer,
21
 
    escape_invalid_chars,
22
 
    )
23
 
from bzrlib.inventory import ROOT_ID, Inventory
 
17
from bzrlib.xml_serializer import ElementTree, SubElement, Element, Serializer
 
18
from bzrlib.inventory import ROOT_ID, Inventory, InventoryEntry
24
19
import bzrlib.inventory as inventory
25
20
from bzrlib.revision import Revision
26
21
from bzrlib.errors import BzrError
27
22
 
28
23
 
29
 
class _Serializer_v4(XMLSerializer):
 
24
class _Serializer_v4(Serializer):
30
25
    """Version 0.0.4 serializer
31
26
 
32
27
    You should use the serializer_v4 singleton.
33
 
 
 
28
    
34
29
    v4 serialisation is no longer supported, only deserialisation.
35
30
    """
36
 
 
 
31
    
37
32
    __slots__ = []
38
 
 
 
33
    
39
34
    def _pack_entry(self, ie):
40
35
        """Convert InventoryEntry to XML element"""
41
36
        e = Element('entry')
62
57
        return e
63
58
 
64
59
 
65
 
    def _unpack_inventory(self, elt, revision_id=None, entry_cache=None,
66
 
                          return_from_cache=False):
 
60
    def _unpack_inventory(self, elt, revision_id=None):
67
61
        """Construct from XML Element
68
62
 
69
63
        :param revision_id: Ignored parameter used by xml5.
71
65
        root_id = elt.get('file_id') or ROOT_ID
72
66
        inv = Inventory(root_id)
73
67
        for e in elt:
74
 
            ie = self._unpack_entry(e, entry_cache=entry_cache,
75
 
                                    return_from_cache=return_from_cache)
 
68
            ie = self._unpack_entry(e)
76
69
            if ie.parent_id == ROOT_ID:
77
70
                ie.parent_id = root_id
78
71
            inv.add(ie)
79
72
        return inv
80
73
 
81
74
 
82
 
    def _unpack_entry(self, elt, entry_cache=None, return_from_cache=False):
 
75
    def _unpack_entry(self, elt):
83
76
        ## original format inventories don't have a parent_id for
84
77
        ## nodes in the root directory, but it's cleaner to use one
85
78
        ## internally.
127
120
        root.text = '\n'
128
121
 
129
122
        msg = SubElement(root, 'message')
130
 
        msg.text = escape_invalid_chars(rev.message)[0]
 
123
        msg.text = rev.message
131
124
        msg.tail = '\n'
132
125
 
133
126
        if rev.parents:
141
134
                    p.set('revision_sha1', rev.parent_sha1s[i])
142
135
        return root
143
136
 
144
 
 
 
137
    
145
138
    def _unpack_revision(self, elt):
146
139
        """XML Element -> Revision object"""
147
 
 
 
140
        
148
141
        # <changeset> is deprecated...
149
142
        if elt.tag not in ('revision', 'changeset'):
150
143
            raise BzrError("unexpected tag in revision file: %r" % elt)