~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml5.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) 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008 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
17
from bzrlib import (
18
18
    cache_utf8,
19
 
    errors,
20
19
    inventory,
21
20
    xml6,
22
21
    xml8,
30
29
    format_num = '5'
31
30
    root_id = inventory.ROOT_ID
32
31
 
33
 
    def _unpack_inventory(self, elt, revision_id, entry_cache=None,
34
 
                          return_from_cache=False):
 
32
    def _unpack_inventory(self, elt, revision_id):
35
33
        """Construct from XML Element
36
34
        """
37
35
        root_id = elt.get('file_id') or inventory.ROOT_ID
40
38
        format = elt.get('format')
41
39
        if format is not None:
42
40
            if format != '5':
43
 
                raise errors.BzrError("invalid format version %r on inventory"
44
 
                                      % format)
 
41
                raise BzrError("invalid format version %r on inventory"
 
42
                                % format)
45
43
        data_revision_id = elt.get('revision_id')
46
44
        if data_revision_id is not None:
47
45
            revision_id = cache_utf8.encode(data_revision_id)
48
46
        inv = inventory.Inventory(root_id, revision_id=revision_id)
49
 
        # Optimizations tested
50
 
        #   baseline w/entry cache  2.85s
51
 
        #   using inv._byid         2.55s
52
 
        #   avoiding attributes     2.46s
53
 
        #   adding assertions       2.50s
54
 
        #   last_parent cache       2.52s (worse, removed)
55
 
        unpack_entry = self._unpack_entry
56
 
        byid = inv._byid
57
47
        for e in elt:
58
 
            ie = unpack_entry(e, entry_cache=entry_cache,
59
 
                              return_from_cache=return_from_cache)
60
 
            parent_id = ie.parent_id
61
 
            if parent_id is None:
62
 
                ie.parent_id = parent_id = root_id
63
 
            try:
64
 
                parent = byid[parent_id]
65
 
            except KeyError:
66
 
                raise errors.BzrError("parent_id {%s} not in inventory"
67
 
                                      % (parent_id,))
68
 
            if ie.file_id in byid:
69
 
                raise errors.DuplicateFileId(ie.file_id,
70
 
                                             byid[ie.file_id])
71
 
            if ie.name in parent.children:
72
 
                raise errors.BzrError("%s is already versioned"
73
 
                    % (osutils.pathjoin(inv.id2path(parent_id),
74
 
                       ie.name).encode('utf-8'),))
75
 
            parent.children[ie.name] = ie
76
 
            byid[ie.file_id] = ie
 
48
            ie = self._unpack_entry(e)
 
49
            if ie.parent_id is None:
 
50
                ie.parent_id = root_id
 
51
            inv.add(ie)
77
52
        if revision_id is not None:
78
53
            inv.root.revision = revision_id
79
 
        self._check_cache_size(len(inv), entry_cache)
80
54
        return inv
81
55
 
82
56
    def _check_revisions(self, inv):
85
59
        In this version, no checking is done.
86
60
 
87
61
        :param inv: An inventory about to be serialised, to be checked.
88
 
        :raises: AssertionError if an error has occurred.
 
62
        :raises: AssertionError if an error has occured.
89
63
        """
90
64
 
91
65
    def _append_inventory_root(self, append, inv):