/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: Jelmer Vernooij
  • Date: 2018-11-16 18:35:30 UTC
  • mfrom: (7143.15.15 more-cleanups)
  • mto: This revision was merged to the branch mainline in revision 7178.
  • Revision ID: jelmer@jelmer.uk-20181116183530-ue8yx60h5tinl2wy
Merge more-cleanups.

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),
609
 
                             to_tree.get_file_size(to_tree.id2path(fileid)))
610
 
            self.assertEqual(base_tree.get_file_sha1(path, fileid),
611
 
                             to_tree.get_file_sha1(to_tree.id2path(fileid)))
 
598
            self.assertEqual(base_tree.get_file_size(path),
 
599
                    to_tree.get_file_size(to_tree.id2path(fileid)))
 
600
            self.assertEqual(base_tree.get_file_sha1(path),
 
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
614
604
            # self.assertEqual(base_tree.get_file(fileid).read(),
979
969
        self.tree1.commit('message', rev_id=b'revid1')
980
970
        bundle = self.get_valid_bundle(b'null:', b'revid1')
981
971
        tree = self.get_bundle_tree(bundle, b'revid1')
982
 
        root_revision = tree.get_file_revision(u'', tree.get_root_id())
 
972
        root_revision = tree.get_file_revision(u'')
983
973
        self.assertEqual(b'revid1', root_revision)
984
974
 
985
975
    def test_install_revisions(self):