133
133
tree = self.get_tree_with_utf8(tree)
135
135
revision_id = u'r\xe9v-1'.encode('utf8')
136
path_and_ids = [(u'', u'TREE_ROOT'),
137
(u'b\xe5r', u'b\xe5-r-id'),
138
(u'f\xf6', u'f\xf6-id'),
139
(u'b\xe5r/b\xe1z', u'b\xe1z-id'),
136
path_and_ids = [(u'', u'TREE_ROOT', None),
137
(u'b\xe5r', u'b\xe5r-id', u'TREE_ROOT'),
138
(u'f\xf6', u'f\xf6-id', u'TREE_ROOT'),
139
(u'b\xe5r/b\xe1z', u'b\xe1z-id', u'b\xe5r-id'),
147
for expected, actual in zip(path_and_ids, path_entries):
148
self.assertEqual(expected[0], actual[0]) # Paths should match
149
self.assertEqual(expected[1], actual[1].file_id)
150
if isinstance(actual[1].file_id, str):
147
for expected, (path, ie) in zip(path_and_ids, path_entries):
148
self.assertEqual(expected[0], path) # Paths should match
149
self.assertIsInstance(path, unicode)
150
self.assertEqual(expected[1], ie.file_id)
151
if isinstance(ie.file_id, str):
151
152
# file_ids might be plain strings, but only if they are ascii
152
actual[1].file_id.decode('ascii')
153
ie.file_id.decode('ascii')
154
self.assertIsInstance(actual[1].file_id, unicode)
155
self.assertIsInstance(ie.file_id, unicode)
156
self.assertEqual(expected[2], ie.parent_id)
157
if expected[2] is not None:
158
if isinstance(ie.parent_id, str):
159
ie.parent_id.decode('ascii')
161
self.assertIsInstance(ie.parent_id, unicode)
155
162
# WorkingTree's return None for the last modified revision
156
if actual[1].revision is not None:
157
self.assertIsInstance(actual[1].revision, str)
158
if expected[0] == '':
163
if ie.revision is not None:
164
self.assertIsInstance(ie.revision, str)
165
if expected[0] != '':
159
166
# Some trees will preserve the revision id of the tree root,
160
167
# but not all will
162
self.assertEqual(revision_id, actual[1].revision)
168
self.assertEqual(revision_id, ie.revision)
163
169
self.assertEqual(len(path_and_ids), len(path_entries))
164
170
get_revision_id = getattr(tree, 'get_revision_id', None)
165
171
if get_revision_id is not None:
175
181
revision_id_1 = u'r\xe9v-1'.encode('utf8')
176
182
revision_id_2 = u'r\xe9v-2'.encode('utf8')
177
path_and_ids = [(u'', u'TREE_ROOT', None),
178
(u'b\xe5r', u'b\xe5-r-id', revision_id_1),
179
(u'f\xf6', u'f\xf6-id', revision_id_1),
180
(u'b\xe5r/b\xe1z', u'b\xe1z-id', revision_id_1),
181
(u'b\xe5r/z\xf7z', u'z\xf7z-id', revision_id_2),
183
path_and_ids = [(u'', u'TREE_ROOT', None, None),
184
(u'b\xe5r', u'b\xe5r-id', u'TREE_ROOT', revision_id_1),
185
(u'f\xf6', u'f\xf6-id', u'TREE_ROOT', revision_id_1),
186
(u'b\xe5r/b\xe1z', u'b\xe1z-id', u'b\xe5r-id',
188
(u'b\xe5r/z\xf7z', u'z\xf7z-id', u'b\xe5r-id',
189
for expected, actual in zip(path_and_ids, path_entries):
190
self.assertEqual(expected[0], actual[0]) # Paths should match
191
self.assertEqual(expected[1], actual[1].file_id)
192
if isinstance(actual[1].file_id, str):
197
for expected, (path, ie) in zip(path_and_ids, path_entries):
198
self.assertEqual(expected[0], path) # Paths should match
199
self.assertIsInstance(path, unicode)
200
self.assertEqual(expected[1], ie.file_id)
201
if isinstance(ie.file_id, str):
193
202
# file_ids might be plain strings, but only if they are ascii
194
actual[1].file_id.decode('ascii')
203
ie.file_id.decode('ascii')
196
self.assertIsInstance(actual[1].file_id, unicode)
205
self.assertIsInstance(ie.file_id, unicode)
206
self.assertEqual(expected[2], ie.parent_id)
207
if expected[2] is not None:
208
if isinstance(ie.parent_id, str):
209
ie.parent_id.decode('ascii')
211
self.assertIsInstance(ie.parent_id, unicode)
197
212
# WorkingTree's return None for the last modified revision
198
if actual[1].revision is not None:
199
self.assertIsInstance(actual[1].revision, str)
213
if ie.revision is not None:
214
self.assertIsInstance(ie.revision, str)
200
215
if expected[0] == '':
201
216
# Some trees will preserve the revision id of the tree root,
202
217
# but not all will
204
self.assertEqual(expected[2], actual[1].revision)
219
self.assertEqual(expected[3], ie.revision)
205
220
self.assertEqual(len(path_and_ids), len(path_entries))
206
221
get_revision_id = getattr(tree, 'get_revision_id', None)
207
222
if get_revision_id is not None: