/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 breezy/tests/test_bundle.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-11-16 15:19:49 UTC
  • mfrom: (7141.7.6 no-file-ids)
  • Revision ID: breezy.the.bot@gmail.com-20181116151949-hrmuv6s7ow1cqdhi
Drop file_id argument from read functions in Tree.

Merged from https://code.launchpad.net/~jelmer/brz/no-file-ids/+merge/357984

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
 
64
64
def get_inventory_text(repo, revision_id):
65
65
    """Get the fulltext for the inventory at revision id"""
66
 
    repo.lock_read()
67
 
    try:
 
66
    with repo.lock_read():
68
67
        return get_text(repo.inventories, (revision_id,))
69
 
    finally:
70
 
        repo.unlock()
71
68
 
72
69
 
73
70
class MockTree(object):
92
89
    def all_versioned_paths(self):
93
90
        return set(self.paths.values())
94
91
 
95
 
    def is_executable(self, path, file_id):
 
92
    def is_executable(self, path):
96
93
        # Not all the files are executable.
97
94
        return False
98
95
 
102
99
        else:
103
100
            return self.make_entry(file_id, self.paths[file_id])
104
101
 
 
102
    def get_entry_by_path(self, path):
 
103
        return self[self.path2id(path)]
 
104
 
105
105
    def parent_id(self, file_id):
106
106
        parent_dir = os.path.dirname(self.paths[file_id])
107
107
        if parent_dir == "":
112
112
        for path, file_id in self.ids.items():
113
113
            yield path, self[file_id]
114
114
 
115
 
    def kind(self, path, file_id=None):
116
 
        if file_id is None:
117
 
            file_id = self.path2id(path)
118
 
        if file_id in self.contents:
 
115
    def kind(self, path):
 
116
        if path in self.contents:
119
117
            kind = 'file'
120
118
        else:
121
119
            kind = 'directory'
127
125
        if not isinstance(file_id, bytes):
128
126
            raise TypeError(file_id)
129
127
        name = os.path.basename(path)
130
 
        kind = self.kind(path, file_id)
 
128
        kind = self.kind(path)
131
129
        parent_id = self.parent_id(file_id)
132
 
        text_sha_1, text_size = self.contents_stats(path, file_id)
 
130
        text_sha_1, text_size = self.contents_stats(path)
133
131
        if kind == 'directory':
134
132
            ie = InventoryDirectory(file_id, name, parent_id)
135
133
        elif kind == 'file':
152
150
        if not isinstance(file_id, bytes):
153
151
            raise TypeError(file_id)
154
152
        self.add_dir(file_id, path)
155
 
        self.contents[file_id] = contents
 
153
        self.contents[path] = contents
156
154
 
157
155
    def path2id(self, path):
158
156
        return self.ids.get(path)
163
161
    def has_id(self, file_id):
164
162
        return self.id2path(file_id) is not None
165
163
 
166
 
    def get_file(self, path, file_id=None):
167
 
        if file_id is None:
168
 
            file_id = self.path2id(path)
 
164
    def get_file(self, path):
169
165
        result = BytesIO()
170
166
        try:
171
 
            result.write(self.contents[file_id])
 
167
            result.write(self.contents[path])
172
168
        except KeyError:
173
169
            raise errors.NoSuchFile(path)
174
170
        result.seek(0, 0)
175
171
        return result
176
172
 
177
 
    def get_file_revision(self, path, file_id=None):
178
 
        if file_id is None:
179
 
            file_id = self.path2id(path)
180
 
        return self.inventory[file_id].revision
 
173
    def get_file_revision(self, path):
 
174
        return self.inventory.get_entry_by_path(path).revision
181
175
 
182
 
    def get_file_size(self, path, file_id=None):
183
 
        if file_id is None:
184
 
            file_id = self.path2id(path)
185
 
        return self.inventory[file_id].text_size
 
176
    def get_file_size(self, path):
 
177
        return self.inventory.get_entry_by_path(path).text_size
186
178
 
187
179
    def get_file_sha1(self, path, file_id=None):
188
 
        if file_id is None:
189
 
            file_id = self.path2id(path)
190
 
        return self.inventory[file_id].text_sha1
 
180
        return self.inventory.get_entry_by_path(path).text_sha1
191
181
 
192
 
    def contents_stats(self, path, file_id):
193
 
        if file_id not in self.contents:
 
182
    def contents_stats(self, path):
 
183
        if path not in self.contents:
194
184
            return None, None
195
 
        text_sha1 = osutils.sha_file(self.get_file(path, file_id))
196
 
        return text_sha1, len(self.contents[file_id])
 
185
        text_sha1 = osutils.sha_file(self.get_file(path))
 
186
        return text_sha1, len(self.contents[path])
197
187
 
198
188
 
199
189
class BTreeTester(tests.TestCase):
205
195
        mtree.add_dir(b"b", "grandparent/parent")
206
196
        mtree.add_file(b"c", "grandparent/parent/file", b"Hello\n")
207
197
        mtree.add_dir(b"d", "grandparent/alt_parent")
208
 
        return BundleTree(mtree, ''), mtree
 
198
        return BundleTree(mtree, b''), mtree
209
199
 
210
200
    def test_renames(self):
211
201
        """Ensure that file renames have the proper effect on children"""
605
595
 
606
596
        for path, status, kind, fileid, entry in base_files:
607
597
            # Check that the meta information is the same
608
 
            self.assertEqual(base_tree.get_file_size(path, fileid),
 
598
            self.assertEqual(base_tree.get_file_size(path),
609
599
                    to_tree.get_file_size(to_tree.id2path(fileid)))
610
 
            self.assertEqual(base_tree.get_file_sha1(path, fileid),
 
600
            self.assertEqual(base_tree.get_file_sha1(path),
611
601
                    to_tree.get_file_sha1(to_tree.id2path(fileid)))
612
602
            # Check that the contents are the same
613
603
            # This is pretty expensive
988
978
        self.tree1.commit('message', rev_id=b'revid1')
989
979
        bundle = self.get_valid_bundle(b'null:', b'revid1')
990
980
        tree = self.get_bundle_tree(bundle, b'revid1')
991
 
        root_revision = tree.get_file_revision(u'', tree.get_root_id())
 
981
        root_revision = tree.get_file_revision(u'')
992
982
        self.assertEqual(b'revid1', root_revision)
993
983
 
994
984
    def test_install_revisions(self):