Merge lp:~jelmer/brz/python3-dirstate into lp:brz
- python3-dirstate
- Merge into trunk
Proposed by
Jelmer Vernooij
Status: | Merged |
---|---|
Approved by: | Jelmer Vernooij |
Approved revision: | no longer in the source branch. |
Merge reported by: | The Breezy Bot |
Merged at revision: | not available |
Proposed branch: | lp:~jelmer/brz/python3-dirstate |
Merge into: | lp:brz |
Diff against target: |
3649 lines (+1060/-749) 5 files modified
breezy/bzr/_dirstate_helpers_pyx.pyx (+6/-6) breezy/bzr/dirstate.py (+86/-54) breezy/tests/test__dirstate_helpers.py (+7/-1) breezy/tests/test_dirstate.py (+682/-688) python3.passing (+279/-0) |
To merge this branch: | bzr merge lp:~jelmer/brz/python3-dirstate |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Martin Packman | Approve | ||
Review via email: mp+348791@code.launchpad.net |
Commit message
Description of the change
Port dirstate to python3, a bit.
To post a comment you must log in.
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Merging failed
https:/
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Running landing tests failed
https:/
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote : | # |
Running landing tests failed
https:/
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'breezy/bzr/_dirstate_helpers_pyx.pyx' |
2 | --- breezy/bzr/_dirstate_helpers_pyx.pyx 2017-07-30 23:53:38 +0000 |
3 | +++ breezy/bzr/_dirstate_helpers_pyx.pyx 2018-07-01 11:20:52 +0000 |
4 | @@ -29,7 +29,7 @@ |
5 | import sys |
6 | |
7 | from .. import cache_utf8, errors, osutils |
8 | -from .dirstate import DirState, DirstateCorrupt |
9 | +from .dirstate import DirState, DirstateCorrupt, is_inside_any, is_inside |
10 | from ..osutils import parent_directories, pathjoin, splitpath |
11 | |
12 | |
13 | @@ -1164,7 +1164,7 @@ |
14 | # add the source to the search path to find any children it |
15 | # has. TODO ? : only add if it is a container ? |
16 | if (not self.doing_consistency_expansion and |
17 | - not osutils.is_inside_any(self.searched_specific_files, |
18 | + not is_inside_any(self.searched_specific_files, |
19 | source_details[1])): |
20 | self.search_specific_files.add(source_details[1]) |
21 | # expanding from a user requested path, parent expansion |
22 | @@ -1385,7 +1385,7 @@ |
23 | # common case to rename dirs though, so a correct but slow |
24 | # implementation will do. |
25 | if (not self.doing_consistency_expansion and |
26 | - not osutils.is_inside_any(self.searched_specific_files, |
27 | + not is_inside_any(self.searched_specific_files, |
28 | target_details[1])): |
29 | self.search_specific_files.add(target_details[1]) |
30 | # We don't expand the specific files parents list here as |
31 | @@ -1432,7 +1432,7 @@ |
32 | |
33 | cdef int _update_current_block(self) except -1: |
34 | if (self.block_index < len(self.state._dirblocks) and |
35 | - osutils.is_inside(self.current_root, self.state._dirblocks[self.block_index][0])): |
36 | + is_inside(self.current_root, self.state._dirblocks[self.block_index][0])): |
37 | self.current_block = self.state._dirblocks[self.block_index] |
38 | self.current_block_list = self.current_block[1] |
39 | self.current_block_pos = 0 |
40 | @@ -1905,7 +1905,7 @@ |
41 | if path_utf8 in self.searched_exact_paths: |
42 | # We've examined this path. |
43 | continue |
44 | - if osutils.is_inside_any(self.searched_specific_files, path_utf8): |
45 | + if is_inside_any(self.searched_specific_files, path_utf8): |
46 | # We've examined this path. |
47 | continue |
48 | path_entries = self.state._entries_for_path(path_utf8) |
49 | @@ -1968,7 +1968,7 @@ |
50 | current_block = None |
51 | if block_index < len(self.state._dirblocks): |
52 | current_block = self.state._dirblocks[block_index] |
53 | - if not osutils.is_inside( |
54 | + if not is_inside( |
55 | entry_path_utf8, current_block[0]): |
56 | # No entries for this directory at all. |
57 | current_block = None |
58 | |
59 | === modified file 'breezy/bzr/dirstate.py' |
60 | --- breezy/bzr/dirstate.py 2018-06-30 15:18:05 +0000 |
61 | +++ breezy/bzr/dirstate.py 2018-07-01 11:20:52 +0000 |
62 | @@ -78,27 +78,27 @@ |
63 | |
64 | and the entries in there are:: |
65 | |
66 | - entries[0][0]: '' |
67 | - entries[0][1]: '' |
68 | + entries[0][0]: b'' |
69 | + entries[0][1]: b'' |
70 | entries[0][2]: file_id |
71 | entries[1][0]: The tree data for the current tree for this fileid at / |
72 | etc. |
73 | |
74 | Kinds:: |
75 | |
76 | - 'r' is a relocated entry: This path is not present in this tree with this |
77 | + b'r' is a relocated entry: This path is not present in this tree with this |
78 | id, but the id can be found at another location. The fingerprint is |
79 | used to point to the target location. |
80 | - 'a' is an absent entry: In that tree the id is not present at this path. |
81 | - 'd' is a directory entry: This path in this tree is a directory with the |
82 | + b'a' is an absent entry: In that tree the id is not present at this path. |
83 | + b'd' is a directory entry: This path in this tree is a directory with the |
84 | current file id. There is no fingerprint for directories. |
85 | - 'f' is a file entry: As for directory, but it's a file. The fingerprint is |
86 | + b'f' is a file entry: As for directory, but it's a file. The fingerprint is |
87 | the sha1 value of the file's canonical form, i.e. after any read |
88 | filters have been applied to the convenience form stored in the working |
89 | tree. |
90 | - 'l' is a symlink entry: As for directory, but a symlink. The fingerprint is |
91 | + b'l' is a symlink entry: As for directory, but a symlink. The fingerprint is |
92 | the link target. |
93 | - 't' is a reference to a nested subtree; the fingerprint is the referenced |
94 | + b't' is a reference to a nested subtree; the fingerprint is the referenced |
95 | revision. |
96 | |
97 | Ordering: |
98 | @@ -307,6 +307,38 @@ |
99 | return statvalue, sha1 |
100 | |
101 | |
102 | +def is_inside(dir, fname): |
103 | + """True if fname is inside dir. |
104 | + |
105 | + The parameters should typically be passed to osutils.normpath first, so |
106 | + that . and .. and repeated slashes are eliminated, and the separators |
107 | + are canonical for the platform. |
108 | + |
109 | + The empty string as a dir name is taken as top-of-tree and matches |
110 | + everything. |
111 | + |
112 | + This is based on breezy.osutils.is_inside, which uses filesystem strings. |
113 | + """ |
114 | + if dir == fname: |
115 | + return True |
116 | + |
117 | + if dir == b'': |
118 | + return True |
119 | + |
120 | + if not dir.endswith(b'/'): |
121 | + dir += b'/' |
122 | + |
123 | + return fname.startswith(dir) |
124 | + |
125 | + |
126 | +def is_inside_any(dir_list, fname): |
127 | + """True if fname is inside any of given dirs.""" |
128 | + for dirname in dir_list: |
129 | + if is_inside(dirname, fname): |
130 | + return True |
131 | + return False |
132 | + |
133 | + |
134 | class DirState(object): |
135 | """Record directory and metadata state for fast access. |
136 | |
137 | @@ -462,7 +494,7 @@ |
138 | def add(self, path, file_id, kind, stat, fingerprint): |
139 | """Add a path to be tracked. |
140 | |
141 | - :param path: The path within the dirstate - '' is the root, 'foo' is the |
142 | + :param path: The path within the dirstate - b'' is the root, 'foo' is the |
143 | path foo within the root, 'foo/bar' is the path bar within foo |
144 | within the root. |
145 | :param file_id: The file id of the path being added. |
146 | @@ -473,7 +505,7 @@ |
147 | after any read filters have been applied), |
148 | or the target of a symlink, |
149 | or the referenced revision id for tree-references, |
150 | - or '' for directories. |
151 | + or b'' for directories. |
152 | """ |
153 | # adding a file: |
154 | # find the block its in. |
155 | @@ -512,9 +544,9 @@ |
156 | if file_id_entry[0] != (dirname, basename, file_id): |
157 | # set the old name's current operation to rename |
158 | self.update_minimal(file_id_entry[0], |
159 | - 'r', |
160 | - path_utf8='', |
161 | - packed_stat='', |
162 | + b'r', |
163 | + path_utf8=b'', |
164 | + packed_stat=b'', |
165 | fingerprint=utf8path |
166 | ) |
167 | rename_from = file_id_entry[0][0:2] |
168 | @@ -523,7 +555,7 @@ |
169 | kind = DirState._minikind_to_kind[file_id_entry[1][0][0]] |
170 | info = '%s:%s' % (kind, path) |
171 | raise errors.DuplicateFileId(file_id, info) |
172 | - first_key = (dirname, basename, '') |
173 | + first_key = (dirname, basename, b'') |
174 | block_index, present = self._find_block_index_from_key(first_key) |
175 | if present: |
176 | # check the path is not in the tree |
177 | @@ -557,7 +589,7 @@ |
178 | minikind = DirState._kind_to_minikind[kind] |
179 | if rename_from is not None: |
180 | if rename_from[0]: |
181 | - old_path_utf8 = '%s/%s' % rename_from |
182 | + old_path_utf8 = b'%s/%s' % rename_from |
183 | else: |
184 | old_path_utf8 = rename_from[1] |
185 | parent_info[0] = (b'r', old_path_utf8, 0, False, b'') |
186 | @@ -619,7 +651,7 @@ |
187 | file_size = os.fstat(state_file.fileno()).st_size |
188 | # We end up with 2 extra fields, we should have a trailing '\n' to |
189 | # ensure that we read the whole record, and we should have a precursur |
190 | - # '' which ensures that we start after the previous '\n' |
191 | + # b'' which ensures that we start after the previous '\n' |
192 | entry_field_count = self._fields_per_entry() + 1 |
193 | |
194 | low = self._end_of_header |
195 | @@ -653,7 +685,7 @@ |
196 | if count > max_count: |
197 | raise errors.BzrError('Too many seeks, most likely a bug.') |
198 | |
199 | - mid = max(low, (low+high-page_size)/2) |
200 | + mid = max(low, (low+high-page_size)//2) |
201 | |
202 | state_file.seek(mid) |
203 | # limit the read size, so we don't end up reading data that we have |
204 | @@ -811,7 +843,7 @@ |
205 | file_size = os.fstat(state_file.fileno()).st_size |
206 | # We end up with 2 extra fields, we should have a trailing '\n' to |
207 | # ensure that we read the whole record, and we should have a precursur |
208 | - # '' which ensures that we start after the previous '\n' |
209 | + # b'' which ensures that we start after the previous '\n' |
210 | entry_field_count = self._fields_per_entry() + 1 |
211 | |
212 | low = self._end_of_header |
213 | @@ -845,7 +877,7 @@ |
214 | if count > max_count: |
215 | raise errors.BzrError('Too many seeks, most likely a bug.') |
216 | |
217 | - mid = max(low, (low+high-page_size)/2) |
218 | + mid = max(low, (low+high-page_size)//2) |
219 | |
220 | state_file.seek(mid) |
221 | # limit the read size, so we don't end up reading data that we have |
222 | @@ -970,7 +1002,7 @@ |
223 | directories. (and renames?) |
224 | |
225 | :param paths: A sorted list of (dir, name) pairs |
226 | - eg: [('', 'a'), ('', 'f'), ('a/b', 'c')] |
227 | + eg: [('', b'a'), ('', b'f'), ('a/b', b'c')] |
228 | :return: A dictionary mapping (dir, name, file_id) => [tree_info] |
229 | """ |
230 | # Map from (dir, name, file_id) => [tree_info] |
231 | @@ -1247,9 +1279,9 @@ |
232 | cache=self._split_path_cache) |
233 | # _right returns one-past-where-key is so we have to subtract |
234 | # one to use it. we use _right here because there are two |
235 | - # '' blocks - the root, and the contents of root |
236 | + # b'' blocks - the root, and the contents of root |
237 | # we always have a minimum of 2 in self._dirblocks: root and |
238 | - # root-contents, and for '', we get 2 back, so this is |
239 | + # root-contents, and for b'', we get 2 back, so this is |
240 | # simple and correct: |
241 | present = (block_index < len(self._dirblocks) and |
242 | self._dirblocks[block_index][0] == key[0]) |
243 | @@ -1568,10 +1600,10 @@ |
244 | # pair will result in the deleted item being reinserted, or |
245 | # renamed items being reinserted twice - and possibly at the |
246 | # wrong place. Splitting into a delete/add pair also simplifies |
247 | - # the handling of entries with ('f', ...), ('r' ...) because |
248 | - # the target of the 'r' is old_path here, and we add that to |
249 | + # the handling of entries with (b'f', ...), (b'r' ...) because |
250 | + # the target of the b'r' is old_path here, and we add that to |
251 | # deletes, meaning that the add handler does not need to check |
252 | - # for 'r' items on every pass. |
253 | + # for b'r' items on every pass. |
254 | self._update_basis_apply_deletes(deletes) |
255 | deletes = [] |
256 | # Split into an add/delete pair recursively. |
257 | @@ -1767,16 +1799,16 @@ |
258 | # rename records. |
259 | active_dir, active_name = active_entry[0][:2] |
260 | if active_dir: |
261 | - active_path = active_dir + '/' + active_name |
262 | + active_path = active_dir + b'/' + active_name |
263 | else: |
264 | active_path = active_name |
265 | - active_entry[1][1] = st('r', new_path, 0, False, '') |
266 | - entry[1][0] = st('r', active_path, 0, False, '') |
267 | - elif active_kind == 'r': |
268 | + active_entry[1][1] = st(b'r', new_path, 0, False, b'') |
269 | + entry[1][0] = st(b'r', active_path, 0, False, b'') |
270 | + elif active_kind == b'r': |
271 | raise NotImplementedError() |
272 | |
273 | new_kind = new_details[0] |
274 | - if new_kind == 'd': |
275 | + if new_kind == b'd': |
276 | self._ensure_block(block_index, entry_index, new_path) |
277 | |
278 | def _update_basis_apply_changes(self, changes): |
279 | @@ -1837,7 +1869,7 @@ |
280 | if active_entry[1][1][0] != b'r': |
281 | self._raise_invalid(old_path, file_id, |
282 | "Dirstate did not have matching rename entries") |
283 | - elif active_entry[1][0][0] in 'ar': |
284 | + elif active_entry[1][0][0] in b'ar': |
285 | self._raise_invalid(old_path, file_id, |
286 | "Dirstate had a rename pointing at an inactive" |
287 | " tree0") |
288 | @@ -1849,7 +1881,7 @@ |
289 | # exist. Remove its dirblock if present |
290 | (dir_block_index, |
291 | present) = self._find_block_index_from_key( |
292 | - (old_path, '', '')) |
293 | + (old_path, b'', b'')) |
294 | if present: |
295 | dir_block = self._dirblocks[dir_block_index][1] |
296 | if not dir_block: |
297 | @@ -1903,12 +1935,12 @@ |
298 | except KeyError: |
299 | # Unhandled kind |
300 | return None |
301 | - if minikind == 'f': |
302 | + if minikind == b'f': |
303 | if self._cutoff_time is None: |
304 | self._sha_cutoff_time() |
305 | if (stat_value.st_mtime < self._cutoff_time |
306 | and stat_value.st_ctime < self._cutoff_time): |
307 | - entry[1][0] = ('f', sha1, stat_value.st_size, entry[1][0][3], |
308 | + entry[1][0] = (b'f', sha1, stat_value.st_size, entry[1][0][3], |
309 | pack_stat(stat_value)) |
310 | self._mark_modified([entry]) |
311 | |
312 | @@ -2013,7 +2045,7 @@ |
313 | fields[3], # minikind |
314 | fields[4], # fingerprint |
315 | _int(fields[5]), # size |
316 | - fields[6] == 'y', # executable |
317 | + fields[6] == b'y', # executable |
318 | fields[7], # packed_stat or revision_id |
319 | )]) |
320 | return fields_to_entry_0_parents |
321 | @@ -2025,14 +2057,14 @@ |
322 | fields[3], # minikind |
323 | fields[4], # fingerprint |
324 | _int(fields[5]), # size |
325 | - fields[6] == 'y', # executable |
326 | + fields[6] == b'y', # executable |
327 | fields[7], # packed_stat or revision_id |
328 | ), |
329 | ( # Parent 1 |
330 | fields[8], # minikind |
331 | fields[9], # fingerprint |
332 | _int(fields[10]), # size |
333 | - fields[11] == 'y', # executable |
334 | + fields[11] == b'y', # executable |
335 | fields[12], # packed_stat or revision_id |
336 | ), |
337 | ]) |
338 | @@ -2045,21 +2077,21 @@ |
339 | fields[3], # minikind |
340 | fields[4], # fingerprint |
341 | _int(fields[5]), # size |
342 | - fields[6] == 'y', # executable |
343 | + fields[6] == b'y', # executable |
344 | fields[7], # packed_stat or revision_id |
345 | ), |
346 | ( # Parent 1 |
347 | fields[8], # minikind |
348 | fields[9], # fingerprint |
349 | _int(fields[10]), # size |
350 | - fields[11] == 'y', # executable |
351 | + fields[11] == b'y', # executable |
352 | fields[12], # packed_stat or revision_id |
353 | ), |
354 | ( # Parent 2 |
355 | fields[13], # minikind |
356 | fields[14], # fingerprint |
357 | _int(fields[15]), # size |
358 | - fields[16] == 'y', # executable |
359 | + fields[16] == b'y', # executable |
360 | fields[17], # packed_stat or revision_id |
361 | ), |
362 | ]) |
363 | @@ -2070,7 +2102,7 @@ |
364 | trees = [(fields[cur], # minikind |
365 | fields[cur+1], # fingerprint |
366 | _int(fields[cur+2]), # size |
367 | - fields[cur+3] == 'y', # executable |
368 | + fields[cur+3] == b'y', # executable |
369 | fields[cur+4], # stat or revision_id |
370 | ) for cur in range(3, len(fields)-1, 5)] |
371 | return path_name_file_id_key, trees |
372 | @@ -2274,7 +2306,7 @@ |
373 | def _iter_child_entries(self, tree_index, path_utf8): |
374 | """Iterate over all the entries that are children of path_utf. |
375 | |
376 | - This only returns entries that are present (not in 'a', 'r') in |
377 | + This only returns entries that are present (not in b'a', b'r') in |
378 | tree_index. tree_index data is not refreshed, so if tree 0 is used, |
379 | results may differ from that obtained if paths were statted to |
380 | determine what ones were directories. |
381 | @@ -2536,7 +2568,7 @@ |
382 | self._state_file = self._lock_token.f |
383 | # TODO: jam 20070315 We should validate the disk file has |
384 | # not changed contents. Since restore_read_lock may |
385 | - # not be an atomic operation. |
386 | + # not be an atomic operation. |
387 | |
388 | def _maybe_fdatasync(self): |
389 | """Flush to disk if possible and if not configured off.""" |
390 | @@ -2584,7 +2616,7 @@ |
391 | def set_path_id(self, path, new_id): |
392 | """Change the id of path to new_id in the current working tree. |
393 | |
394 | - :param path: The path inside the tree to set - '' is the root, 'foo' |
395 | + :param path: The path inside the tree to set - b'' is the root, 'foo' |
396 | is the path foo in the root. |
397 | :param new_id: The new id to assign to the path. This must be a utf8 |
398 | file id (not unicode, and not None). |
399 | @@ -2993,7 +3025,7 @@ |
400 | updated as well. |
401 | |
402 | :param key: (dir, name, file_id) for the new entry |
403 | - :param minikind: The type for the entry ('f' == 'file', 'd' == |
404 | + :param minikind: The type for the entry (b'f' == 'file', b'd' == |
405 | 'directory'), etc. |
406 | :param executable: Should the executable bit be set? |
407 | :param fingerprint: Simple fingerprint for new entry: canonical-form |
408 | @@ -3012,7 +3044,7 @@ |
409 | block = self._find_block(key)[1] |
410 | if packed_stat is None: |
411 | packed_stat = DirState.NULLSTAT |
412 | - # XXX: Some callers pass '' as the packed_stat, and it seems to be |
413 | + # XXX: Some callers pass b'' as the packed_stat, and it seems to be |
414 | # sometimes present in the dirstate - this seems oddly inconsistent. |
415 | # mbp 20071008 |
416 | entry_index, present = self._find_entry_index(key, block) |
417 | @@ -3188,7 +3220,7 @@ |
418 | # NOTE: This must always raise AssertionError not just assert, |
419 | # otherwise it may not behave properly under python -O |
420 | # |
421 | - # TODO: All entries must have some content that's not 'a' or 'r', |
422 | + # TODO: All entries must have some content that's not b'a' or b'r', |
423 | # otherwise it could just be removed. |
424 | # |
425 | # TODO: All relocations must point directly to a real entry. |
426 | @@ -3588,7 +3620,7 @@ |
427 | if source_minikind == b'r': |
428 | # add the source to the search path to find any children it |
429 | # has. TODO ? : only add if it is a container ? |
430 | - if not osutils.is_inside_any(self.searched_specific_files, |
431 | + if not is_inside_any(self.searched_specific_files, |
432 | source_details[1]): |
433 | self.search_specific_files.add(source_details[1]) |
434 | # generate the old path; this is needed for stating later |
435 | @@ -3798,7 +3830,7 @@ |
436 | # a renamed parent. TODO: handle this efficiently. Its not |
437 | # common case to rename dirs though, so a correct but slow |
438 | # implementation will do. |
439 | - if not osutils.is_inside_any(self.searched_specific_files, target_details[1]): |
440 | + if not is_inside_any(self.searched_specific_files, target_details[1]): |
441 | self.search_specific_files.add(target_details[1]) |
442 | elif source_minikind in _ra and target_minikind in _ra: |
443 | # neither of the selected trees contain this file, |
444 | @@ -3972,7 +4004,7 @@ |
445 | # walk until both the directory listing and the versioned metadata |
446 | # are exhausted. |
447 | if (block_index < len(self.state._dirblocks) and |
448 | - osutils.is_inside(current_root, self.state._dirblocks[block_index][0])): |
449 | + is_inside(current_root, self.state._dirblocks[block_index][0])): |
450 | current_block = self.state._dirblocks[block_index] |
451 | else: |
452 | current_block = None |
453 | @@ -4042,7 +4074,7 @@ |
454 | yield result |
455 | block_index +=1 |
456 | if (block_index < len(self.state._dirblocks) and |
457 | - osutils.is_inside(current_root, |
458 | + is_inside(current_root, |
459 | self.state._dirblocks[block_index][0])): |
460 | current_block = self.state._dirblocks[block_index] |
461 | else: |
462 | @@ -4166,7 +4198,7 @@ |
463 | if current_block is not None: |
464 | block_index += 1 |
465 | if (block_index < len(self.state._dirblocks) and |
466 | - osutils.is_inside(current_root, self.state._dirblocks[block_index][0])): |
467 | + is_inside(current_root, self.state._dirblocks[block_index][0])): |
468 | current_block = self.state._dirblocks[block_index] |
469 | else: |
470 | current_block = None |
471 | @@ -4185,7 +4217,7 @@ |
472 | # Even in extremely large trees this should be modest, so currently |
473 | # no attempt is made to optimise. |
474 | path_utf8 = self.search_specific_file_parents.pop() |
475 | - if osutils.is_inside_any(self.searched_specific_files, path_utf8): |
476 | + if is_inside_any(self.searched_specific_files, path_utf8): |
477 | # We've examined this path. |
478 | continue |
479 | if path_utf8 in self.searched_exact_paths: |
480 | @@ -4251,7 +4283,7 @@ |
481 | current_block = None |
482 | if block_index < len(self.state._dirblocks): |
483 | current_block = self.state._dirblocks[block_index] |
484 | - if not osutils.is_inside( |
485 | + if not is_inside( |
486 | entry_path_utf8, current_block[0]): |
487 | # No entries for this directory at all. |
488 | current_block = None |
489 | |
490 | === modified file 'breezy/tests/test__dirstate_helpers.py' |
491 | --- breezy/tests/test__dirstate_helpers.py 2018-06-18 20:53:01 +0000 |
492 | +++ breezy/tests/test__dirstate_helpers.py 2018-07-01 11:20:52 +0000 |
493 | @@ -1308,7 +1308,13 @@ |
494 | basis_tree = tree.basis_tree() |
495 | def is_inside_raises(*args, **kwargs): |
496 | raise RuntimeError('stop this') |
497 | - self.overrideAttr(osutils, 'is_inside', is_inside_raises) |
498 | + self.overrideAttr(dirstate, 'is_inside', is_inside_raises) |
499 | + try: |
500 | + from breezy.bzr import _dirstate_helpers_pyx |
501 | + except ImportError: |
502 | + pass |
503 | + else: |
504 | + self.overrideAttr(_dirstate_helpers_pyx, 'is_inside', is_inside_raises) |
505 | self.assertListRaises(RuntimeError, tree.iter_changes, basis_tree) |
506 | |
507 | def test_simple_changes(self): |
508 | |
509 | === modified file 'breezy/tests/test_dirstate.py' |
510 | --- breezy/tests/test_dirstate.py 2018-06-24 13:18:43 +0000 |
511 | +++ breezy/tests/test_dirstate.py 2018-07-01 11:20:52 +0000 |
512 | @@ -88,13 +88,13 @@ |
513 | |
514 | def create_dirstate_with_root(self): |
515 | """Return a write-locked state with a single root entry.""" |
516 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
517 | - root_entry_direntry = ('', '', 'a-root-value'), [ |
518 | - ('d', '', 0, False, packed_stat), |
519 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
520 | + root_entry_direntry = (b'', b'', b'a-root-value'), [ |
521 | + (b'd', b'', 0, False, packed_stat), |
522 | ] |
523 | dirblocks = [] |
524 | - dirblocks.append(('', [root_entry_direntry])) |
525 | - dirblocks.append(('', [])) |
526 | + dirblocks.append((b'', [root_entry_direntry])) |
527 | + dirblocks.append((b'', [])) |
528 | state = self.create_empty_dirstate() |
529 | try: |
530 | state._set_data([], dirblocks) |
531 | @@ -106,9 +106,9 @@ |
532 | |
533 | def create_dirstate_with_root_and_subdir(self): |
534 | """Return a locked DirState with a root and a subdir""" |
535 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
536 | - subdir_entry = ('', 'subdir', 'subdir-id'), [ |
537 | - ('d', '', 0, False, packed_stat), |
538 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
539 | + subdir_entry = (b'', b'subdir', b'subdir-id'), [ |
540 | + (b'd', b'', 0, False, packed_stat), |
541 | ] |
542 | state = self.create_dirstate_with_root() |
543 | try: |
544 | @@ -137,40 +137,40 @@ |
545 | |
546 | :return: The dirstate, still write-locked. |
547 | """ |
548 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
549 | - null_sha = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
550 | - root_entry = ('', '', 'a-root-value'), [ |
551 | - ('d', '', 0, False, packed_stat), |
552 | - ] |
553 | - a_entry = ('', 'a', 'a-dir'), [ |
554 | - ('d', '', 0, False, packed_stat), |
555 | - ] |
556 | - b_entry = ('', 'b', 'b-dir'), [ |
557 | - ('d', '', 0, False, packed_stat), |
558 | - ] |
559 | - c_entry = ('', 'c', 'c-file'), [ |
560 | - ('f', null_sha, 10, False, packed_stat), |
561 | - ] |
562 | - d_entry = ('', 'd', 'd-file'), [ |
563 | - ('f', null_sha, 20, False, packed_stat), |
564 | - ] |
565 | - e_entry = ('a', 'e', 'e-dir'), [ |
566 | - ('d', '', 0, False, packed_stat), |
567 | - ] |
568 | - f_entry = ('a', 'f', 'f-file'), [ |
569 | - ('f', null_sha, 30, False, packed_stat), |
570 | - ] |
571 | - g_entry = ('b', 'g', 'g-file'), [ |
572 | - ('f', null_sha, 30, False, packed_stat), |
573 | - ] |
574 | - h_entry = ('b', 'h\xc3\xa5', 'h-\xc3\xa5-file'), [ |
575 | - ('f', null_sha, 40, False, packed_stat), |
576 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
577 | + null_sha = b'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
578 | + root_entry = (b'', b'', b'a-root-value'), [ |
579 | + (b'd', b'', 0, False, packed_stat), |
580 | + ] |
581 | + a_entry = (b'', b'a', b'a-dir'), [ |
582 | + (b'd', b'', 0, False, packed_stat), |
583 | + ] |
584 | + b_entry = (b'', b'b', b'b-dir'), [ |
585 | + (b'd', b'', 0, False, packed_stat), |
586 | + ] |
587 | + c_entry = (b'', b'c', b'c-file'), [ |
588 | + (b'f', null_sha, 10, False, packed_stat), |
589 | + ] |
590 | + d_entry = (b'', b'd', b'd-file'), [ |
591 | + (b'f', null_sha, 20, False, packed_stat), |
592 | + ] |
593 | + e_entry = (b'a', b'e', b'e-dir'), [ |
594 | + (b'd', b'', 0, False, packed_stat), |
595 | + ] |
596 | + f_entry = (b'a', b'f', b'f-file'), [ |
597 | + (b'f', null_sha, 30, False, packed_stat), |
598 | + ] |
599 | + g_entry = (b'b', b'g', b'g-file'), [ |
600 | + (b'f', null_sha, 30, False, packed_stat), |
601 | + ] |
602 | + h_entry = (b'b', b'h\xc3\xa5', b'h-\xc3\xa5-file'), [ |
603 | + (b'f', null_sha, 40, False, packed_stat), |
604 | ] |
605 | dirblocks = [] |
606 | - dirblocks.append(('', [root_entry])) |
607 | - dirblocks.append(('', [a_entry, b_entry, c_entry, d_entry])) |
608 | - dirblocks.append(('a', [e_entry, f_entry])) |
609 | - dirblocks.append(('b', [g_entry, h_entry])) |
610 | + dirblocks.append((b'', [root_entry])) |
611 | + dirblocks.append((b'', [a_entry, b_entry, c_entry, d_entry])) |
612 | + dirblocks.append((b'a', [e_entry, f_entry])) |
613 | + dirblocks.append((b'b', [g_entry, h_entry])) |
614 | state = dirstate.DirState.initialize('dirstate') |
615 | state._validate() |
616 | try: |
617 | @@ -225,12 +225,12 @@ |
618 | """ |
619 | tree = self.make_branch_and_tree('tree') |
620 | paths = ['a', 'b/', 'b/c', 'b/d/', 'b/d/e', 'b-c', 'f'] |
621 | - file_ids = ['a-id', 'b-id', 'c-id', 'd-id', 'e-id', 'b-c-id', 'f-id'] |
622 | + file_ids = [b'a-id', b'b-id', b'c-id', b'd-id', b'e-id', b'b-c-id', b'f-id'] |
623 | self.build_tree(['tree/' + p for p in paths]) |
624 | tree.set_root_id(b'TREE_ROOT') |
625 | tree.add([p.rstrip('/') for p in paths], file_ids) |
626 | tree.commit('initial', rev_id=b'rev-1') |
627 | - revision_id = 'rev-1' |
628 | + revision_id = b'rev-1' |
629 | # a_packed_stat = dirstate.pack_stat(os.stat('tree/a')) |
630 | t = self.get_transport('tree') |
631 | a_text = t.get_bytes('a') |
632 | @@ -255,37 +255,37 @@ |
633 | f_len = len(f_text) |
634 | null_stat = dirstate.DirState.NULLSTAT |
635 | expected = { |
636 | - '': (('', '', 'TREE_ROOT'), [ |
637 | - ('d', '', 0, False, null_stat), |
638 | - ('d', '', 0, False, revision_id), |
639 | + b'': ((b'', b'', b'TREE_ROOT'), [ |
640 | + (b'd', b'', 0, False, null_stat), |
641 | + (b'd', b'', 0, False, revision_id), |
642 | ]), |
643 | - 'a': (('', 'a', 'a-id'), [ |
644 | - ('f', '', 0, False, null_stat), |
645 | - ('f', a_sha, a_len, False, revision_id), |
646 | - ]), |
647 | - 'b': (('', 'b', 'b-id'), [ |
648 | - ('d', '', 0, False, null_stat), |
649 | - ('d', '', 0, False, revision_id), |
650 | - ]), |
651 | - 'b/c': (('b', 'c', 'c-id'), [ |
652 | - ('f', '', 0, False, null_stat), |
653 | - ('f', c_sha, c_len, False, revision_id), |
654 | - ]), |
655 | - 'b/d': (('b', 'd', 'd-id'), [ |
656 | - ('d', '', 0, False, null_stat), |
657 | - ('d', '', 0, False, revision_id), |
658 | - ]), |
659 | - 'b/d/e': (('b/d', 'e', 'e-id'), [ |
660 | - ('f', '', 0, False, null_stat), |
661 | - ('f', e_sha, e_len, False, revision_id), |
662 | - ]), |
663 | - 'b-c': (('', 'b-c', 'b-c-id'), [ |
664 | - ('f', '', 0, False, null_stat), |
665 | - ('f', b_c_sha, b_c_len, False, revision_id), |
666 | - ]), |
667 | - 'f': (('', 'f', 'f-id'), [ |
668 | - ('f', '', 0, False, null_stat), |
669 | - ('f', f_sha, f_len, False, revision_id), |
670 | + b'a': ((b'', b'a', b'a-id'), [ |
671 | + (b'f', b'', 0, False, null_stat), |
672 | + (b'f', a_sha, a_len, False, revision_id), |
673 | + ]), |
674 | + b'b': ((b'', b'b', b'b-id'), [ |
675 | + (b'd', b'', 0, False, null_stat), |
676 | + (b'd', b'', 0, False, revision_id), |
677 | + ]), |
678 | + b'b/c': ((b'b', b'c', b'c-id'), [ |
679 | + (b'f', b'', 0, False, null_stat), |
680 | + (b'f', c_sha, c_len, False, revision_id), |
681 | + ]), |
682 | + b'b/d': ((b'b', b'd', b'd-id'), [ |
683 | + (b'd', b'', 0, False, null_stat), |
684 | + (b'd', b'', 0, False, revision_id), |
685 | + ]), |
686 | + b'b/d/e': ((b'b/d', b'e', b'e-id'), [ |
687 | + (b'f', b'', 0, False, null_stat), |
688 | + (b'f', e_sha, e_len, False, revision_id), |
689 | + ]), |
690 | + b'b-c': ((b'', b'b-c', b'b-c-id'), [ |
691 | + (b'f', b'', 0, False, null_stat), |
692 | + (b'f', b_c_sha, b_c_len, False, revision_id), |
693 | + ]), |
694 | + b'f': ((b'', b'f', b'f-id'), [ |
695 | + (b'f', b'', 0, False, null_stat), |
696 | + (b'f', f_sha, f_len, False, revision_id), |
697 | ]), |
698 | } |
699 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
700 | @@ -317,16 +317,16 @@ |
701 | # per entry. Unversion in reverse order so we handle subdirs |
702 | tree.unversion(['f', 'b-c', 'b/d/e', 'b/d', 'b/c', 'b', 'a']) |
703 | tree.add(['a', 'b', 'b/c', 'b/d', 'b/d/e', 'b-c', 'f'], |
704 | - ['a-id2', 'b-id2', 'c-id2', 'd-id2', 'e-id2', 'b-c-id2', 'f-id2']) |
705 | + [b'a-id2', b'b-id2', b'c-id2', b'd-id2', b'e-id2', b'b-c-id2', b'f-id2']) |
706 | |
707 | # Update the expected dictionary. |
708 | - for path in ['a', 'b', 'b/c', 'b/d', 'b/d/e', 'b-c', 'f']: |
709 | + for path in [b'a', b'b', b'b/c', b'b/d', b'b/d/e', b'b-c', b'f']: |
710 | orig = expected[path] |
711 | - path2 = path + '2' |
712 | + path2 = path + b'2' |
713 | # This record was deleted in the current tree |
714 | expected[path] = (orig[0], [dirstate.DirState.NULL_PARENT_DETAILS, |
715 | orig[1][1]]) |
716 | - new_key = (orig[0][0], orig[0][1], orig[0][2]+'2') |
717 | + new_key = (orig[0][0], orig[0][1], orig[0][2]+b'2') |
718 | # And didn't exist in the basis tree |
719 | expected[path2] = (new_key, [orig[1][0], |
720 | dirstate.DirState.NULL_PARENT_DETAILS]) |
721 | @@ -357,20 +357,20 @@ |
722 | # And a directory |
723 | tree.rename_one('b/d', 'h') |
724 | |
725 | - old_a = expected['a'] |
726 | - expected['a'] = (old_a[0], [('r', 'b/g', 0, False, ''), old_a[1][1]]) |
727 | - expected['b/g'] = (('b', 'g', b'a-id'), [old_a[1][0], |
728 | - ('r', 'a', 0, False, '')]) |
729 | + old_a = expected[b'a'] |
730 | + expected[b'a'] = (old_a[0], [(b'r', b'b/g', 0, False, b''), old_a[1][1]]) |
731 | + expected[b'b/g'] = ((b'b', b'g', b'a-id'), [old_a[1][0], |
732 | + (b'r', b'a', 0, False, b'')]) |
733 | old_d = expected['b/d'] |
734 | - expected['b/d'] = (old_d[0], [('r', 'h', 0, False, ''), old_d[1][1]]) |
735 | - expected['h'] = (('', 'h', b'd-id'), [old_d[1][0], |
736 | - ('r', 'b/d', 0, False, '')]) |
737 | + expected[b'b/d'] = (old_d[0], [(b'r', b'h', 0, False, b''), old_d[1][1]]) |
738 | + expected[b'h'] = ((b'', b'h', b'd-id'), [old_d[1][0], |
739 | + (b'r', b'b/d', 0, False, b'')]) |
740 | |
741 | old_e = expected['b/d/e'] |
742 | - expected['b/d/e'] = (old_e[0], [('r', 'h/e', 0, False, ''), |
743 | + expected[b'b/d/e'] = (old_e[0], [(b'r', b'h/e', 0, False, b''), |
744 | old_e[1][1]]) |
745 | - expected['h/e'] = (('h', 'e', b'e-id'), [old_e[1][0], |
746 | - ('r', 'b/d/e', 0, False, '')]) |
747 | + expected[b'h/e'] = ((b'h', b'e', b'e-id'), [old_e[1][0], |
748 | + (b'r', b'b/d/e', 0, False, b'')]) |
749 | |
750 | state.unlock() |
751 | try: |
752 | @@ -391,8 +391,8 @@ |
753 | # There are no files on disk and no parents |
754 | tree = self.make_branch_and_tree('tree') |
755 | expected_result = ([], [ |
756 | - (('', '', tree.get_root_id()), # common details |
757 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
758 | + ((b'', b'', tree.get_root_id()), # common details |
759 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
760 | ])]) |
761 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
762 | state._validate() |
763 | @@ -401,12 +401,12 @@ |
764 | def test_1_parents_empty_to_dirstate(self): |
765 | # create a parent by doing a commit |
766 | tree = self.make_branch_and_tree('tree') |
767 | - rev_id = tree.commit('first post').encode('utf8') |
768 | + rev_id = tree.commit('first post') |
769 | root_stat_pack = dirstate.pack_stat(os.stat(tree.basedir)) |
770 | expected_result = ([rev_id], [ |
771 | - (('', '', tree.get_root_id()), # common details |
772 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
773 | - ('d', '', 0, False, rev_id), # first parent details |
774 | + ((b'', b'', tree.get_root_id()), # common details |
775 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
776 | + (b'd', b'', 0, False, rev_id), # first parent details |
777 | ])]) |
778 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
779 | self.check_state_with_reopen(expected_result, state) |
780 | @@ -424,10 +424,10 @@ |
781 | rev_id2 = tree2.commit('second post', allow_pointless=True) |
782 | tree.merge_from_branch(tree2.branch) |
783 | expected_result = ([rev_id, rev_id2], [ |
784 | - (('', '', tree.get_root_id()), # common details |
785 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
786 | - ('d', '', 0, False, rev_id), # first parent details |
787 | - ('d', '', 0, False, rev_id), # second parent details |
788 | + ((b'', b'', tree.get_root_id()), # common details |
789 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
790 | + (b'd', b'', 0, False, rev_id), # first parent details |
791 | + (b'd', b'', 0, False, rev_id), # second parent details |
792 | ])]) |
793 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
794 | self.check_state_with_reopen(expected_result, state) |
795 | @@ -443,8 +443,8 @@ |
796 | tree = self.make_branch_and_tree('tree') |
797 | self.build_tree(['tree/unknown']) |
798 | expected_result = ([], [ |
799 | - (('', '', tree.get_root_id()), # common details |
800 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
801 | + ((b'', b'', tree.get_root_id()), # common details |
802 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
803 | ])]) |
804 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
805 | self.check_state_with_reopen(expected_result, state) |
806 | @@ -460,11 +460,11 @@ |
807 | # There are files on disk and no parents |
808 | tree = self.get_tree_with_a_file() |
809 | expected_result = ([], [ |
810 | - (('', '', tree.get_root_id()), # common details |
811 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
812 | + ((b'', b'', tree.get_root_id()), # common details |
813 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
814 | ]), |
815 | - (('', 'a file', b'a-file-id'), # common |
816 | - [('f', '', 0, False, dirstate.DirState.NULLSTAT), # current |
817 | + ((b'', b'a file', b'a-file-id'), # common |
818 | + [(b'f', b'', 0, False, dirstate.DirState.NULLSTAT), # current |
819 | ]), |
820 | ]) |
821 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
822 | @@ -473,18 +473,18 @@ |
823 | def test_1_parents_not_empty_to_dirstate(self): |
824 | # create a parent by doing a commit |
825 | tree = self.get_tree_with_a_file() |
826 | - rev_id = tree.commit('first post').encode('utf8') |
827 | + rev_id = tree.commit('first post') |
828 | # change the current content to be different this will alter stat, sha |
829 | # and length: |
830 | self.build_tree_contents([('tree/a file', b'new content\n')]) |
831 | expected_result = ([rev_id], [ |
832 | - (('', '', tree.get_root_id()), # common details |
833 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
834 | - ('d', '', 0, False, rev_id), # first parent details |
835 | + ((b'', b'', tree.get_root_id()), # common details |
836 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
837 | + (b'd', b'', 0, False, rev_id), # first parent details |
838 | ]), |
839 | - (('', 'a file', b'a-file-id'), # common |
840 | - [('f', '', 0, False, dirstate.DirState.NULLSTAT), # current |
841 | - ('f', 'c3ed76e4bfd45ff1763ca206055bca8e9fc28aa8', 24, False, |
842 | + ((b'', b'a file', b'a-file-id'), # common |
843 | + [(b'f', b'', 0, False, dirstate.DirState.NULLSTAT), # current |
844 | + (b'f', b'c3ed76e4bfd45ff1763ca206055bca8e9fc28aa8', 24, False, |
845 | rev_id), # first parent |
846 | ]), |
847 | ]) |
848 | @@ -494,27 +494,27 @@ |
849 | def test_2_parents_not_empty_to_dirstate(self): |
850 | # create a parent by doing a commit |
851 | tree = self.get_tree_with_a_file() |
852 | - rev_id = tree.commit('first post').encode('utf8') |
853 | + rev_id = tree.commit('first post') |
854 | tree2 = tree.controldir.sprout('tree2').open_workingtree() |
855 | # change the current content to be different this will alter stat, sha |
856 | # and length: |
857 | - self.build_tree_contents([('tree2/a file', 'merge content\n')]) |
858 | - rev_id2 = tree2.commit('second post').encode('utf8') |
859 | + self.build_tree_contents([('tree2/a file', b'merge content\n')]) |
860 | + rev_id2 = tree2.commit('second post') |
861 | tree.merge_from_branch(tree2.branch) |
862 | # change the current content to be different this will alter stat, sha |
863 | # and length again, giving us three distinct values: |
864 | self.build_tree_contents([('tree/a file', b'new content\n')]) |
865 | expected_result = ([rev_id, rev_id2], [ |
866 | - (('', '', tree.get_root_id()), # common details |
867 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
868 | - ('d', '', 0, False, rev_id), # first parent details |
869 | - ('d', '', 0, False, rev_id), # second parent details |
870 | + ((b'', b'', tree.get_root_id()), # common details |
871 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
872 | + (b'd', b'', 0, False, rev_id), # first parent details |
873 | + (b'd', b'', 0, False, rev_id), # second parent details |
874 | ]), |
875 | - (('', 'a file', b'a-file-id'), # common |
876 | - [('f', '', 0, False, dirstate.DirState.NULLSTAT), # current |
877 | - ('f', 'c3ed76e4bfd45ff1763ca206055bca8e9fc28aa8', 24, False, |
878 | + ((b'', b'a file', b'a-file-id'), # common |
879 | + [(b'f', b'', 0, False, dirstate.DirState.NULLSTAT), # current |
880 | + (b'f', b'c3ed76e4bfd45ff1763ca206055bca8e9fc28aa8', 24, False, |
881 | rev_id), # first parent |
882 | - ('f', '314d796174c9412647c3ce07dfb5d36a94e72958', 14, False, |
883 | + (b'f', b'314d796174c9412647c3ce07dfb5d36a94e72958', 14, False, |
884 | rev_id2), # second parent |
885 | ]), |
886 | ]) |
887 | @@ -530,8 +530,8 @@ |
888 | for i in range(7): |
889 | tree = self.make_branch_and_tree('tree%d' % i) |
890 | self.build_tree(['tree%d/name' % i,]) |
891 | - tree.add(['name'], ['file-id%d' % i]) |
892 | - revision_id = 'revid-%d' % i |
893 | + tree.add(['name'], [b'file-id%d' % i]) |
894 | + revision_id = b'revid-%d' % i |
895 | tree.commit('message', rev_id=revision_id) |
896 | parents.append((revision_id, |
897 | tree.branch.repository.revision_tree(revision_id))) |
898 | @@ -570,11 +570,11 @@ |
899 | # get a state object |
900 | # no parents, default tree content |
901 | expected_result = ([], [ |
902 | - (('', '', tree.get_root_id()), # common details |
903 | + ((b'', b'', tree.get_root_id()), # common details |
904 | # current tree details, but new from_tree skips statting, it |
905 | # uses set_state_from_inventory, and thus depends on the |
906 | # inventory state. |
907 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), |
908 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), |
909 | ]) |
910 | ]) |
911 | state = dirstate.DirState.on_file('dirstate') |
912 | @@ -595,7 +595,7 @@ |
913 | def test_can_save_in_read_lock(self): |
914 | state = self.create_updated_dirstate() |
915 | try: |
916 | - entry = state._get_entry(0, path_utf8='a-file') |
917 | + entry = state._get_entry(0, path_utf8=b'a-file') |
918 | # The current size should be 0 (default) |
919 | self.assertEqual(0, entry[1][0][2]) |
920 | # We should have a real entry. |
921 | @@ -625,7 +625,7 @@ |
922 | state = dirstate.DirState.on_file('dirstate') |
923 | state.lock_read() |
924 | try: |
925 | - entry = state._get_entry(0, path_utf8='a-file') |
926 | + entry = state._get_entry(0, path_utf8=b'a-file') |
927 | self.assertEqual(st.st_size, entry[1][0][2]) |
928 | finally: |
929 | state.unlock() |
930 | @@ -634,7 +634,7 @@ |
931 | """If dirstate is locked, save will fail without complaining.""" |
932 | state = self.create_updated_dirstate() |
933 | try: |
934 | - entry = state._get_entry(0, path_utf8='a-file') |
935 | + entry = state._get_entry(0, path_utf8=b'a-file') |
936 | # No cached sha1 yet. |
937 | self.assertEqual('', entry[1][0][1]) |
938 | # Set the cutoff-time into the future, so things look cacheable |
939 | @@ -671,7 +671,7 @@ |
940 | state = dirstate.DirState.on_file('dirstate') |
941 | state.lock_read() |
942 | try: |
943 | - entry = state._get_entry(0, path_utf8='a-file') |
944 | + entry = state._get_entry(0, path_utf8=b'a-file') |
945 | self.assertEqual('', entry[1][0][1]) |
946 | finally: |
947 | state.unlock() |
948 | @@ -681,17 +681,17 @@ |
949 | state = dirstate.DirState.initialize('dirstate') |
950 | try: |
951 | # No stat and no sha1 sum. |
952 | - state.add('a-file', b'a-file-id', 'file', None, '') |
953 | + state.add('a-file', b'a-file-id', 'file', None, b'') |
954 | state.save() |
955 | finally: |
956 | state.unlock() |
957 | |
958 | # The dirstate should include TREE_ROOT and 'a-file' and nothing else |
959 | expected_blocks = [ |
960 | - ('', [(('', '', b'TREE_ROOT'), |
961 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT)])]), |
962 | - ('', [(('', 'a-file', b'a-file-id'), |
963 | - [('f', '', 0, False, dirstate.DirState.NULLSTAT)])]), |
964 | + (b'', [((b'', b'', b'TREE_ROOT'), |
965 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT)])]), |
966 | + (b'', [((b'', b'a-file', b'a-file-id'), |
967 | + [(b'f', b'', 0, False, dirstate.DirState.NULLSTAT)])]), |
968 | ] |
969 | |
970 | state = dirstate.DirState.on_file('dirstate') |
971 | @@ -701,7 +701,7 @@ |
972 | self.assertEqual(expected_blocks, state._dirblocks) |
973 | |
974 | # Now modify the state, but mark it as inconsistent |
975 | - state.add(b'a-dir', b'a-dir-id', 'directory', None, '') |
976 | + state.add('a-dir', b'a-dir-id', 'directory', None, b'') |
977 | state._changes_aborted = True |
978 | state.save() |
979 | finally: |
980 | @@ -720,8 +720,8 @@ |
981 | |
982 | def test_initialize(self): |
983 | expected_result = ([], [ |
984 | - (('', '', 'TREE_ROOT'), # common details |
985 | - [('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
986 | + ((b'', b'', b'TREE_ROOT'), # common details |
987 | + [(b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
988 | ]) |
989 | ]) |
990 | state = dirstate.DirState.initialize('dirstate') |
991 | @@ -752,15 +752,15 @@ |
992 | state = self.create_dirstate_with_root_and_subdir() |
993 | self.addCleanup(state.unlock) |
994 | id_index = state._get_id_index() |
995 | - self.assertEqual(['a-root-value', b'subdir-id'], sorted(id_index)) |
996 | + self.assertEqual([b'a-root-value', b'subdir-id'], sorted(id_index)) |
997 | state.add('file-name', b'file-id', 'file', None, '') |
998 | - self.assertEqual(['a-root-value', b'file-id', b'subdir-id'], |
999 | - sorted(id_index)) |
1000 | - state.update_minimal(('', 'new-name', b'file-id'), 'f', |
1001 | - path_utf8='new-name') |
1002 | - self.assertEqual(['a-root-value', b'file-id', b'subdir-id'], |
1003 | - sorted(id_index)) |
1004 | - self.assertEqual([('', 'new-name', b'file-id')], |
1005 | + self.assertEqual([b'a-root-value', b'file-id', b'subdir-id'], |
1006 | + sorted(id_index)) |
1007 | + state.update_minimal((b'', b'new-name', b'file-id'), b'f', |
1008 | + path_utf8=b'new-name') |
1009 | + self.assertEqual([b'a-root-value', b'file-id', b'subdir-id'], |
1010 | + sorted(id_index)) |
1011 | + self.assertEqual([(b'', b'new-name', b'file-id')], |
1012 | sorted(id_index[b'file-id'])) |
1013 | state._validate() |
1014 | |
1015 | @@ -770,8 +770,8 @@ |
1016 | inv = tree1.root_inventory |
1017 | root_id = inv.path2id('') |
1018 | expected_result = [], [ |
1019 | - (('', '', root_id), [ |
1020 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT)])] |
1021 | + ((b'', b'', root_id), [ |
1022 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT)])] |
1023 | state = dirstate.DirState.initialize('dirstate') |
1024 | try: |
1025 | state.set_state_from_inventory(inv) |
1026 | @@ -791,8 +791,8 @@ |
1027 | inv = tree1.root_inventory |
1028 | root_id = inv.path2id('') |
1029 | expected_result = [], [ |
1030 | - (('', '', root_id), [ |
1031 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT)])] |
1032 | + ((b'', b'', root_id), [ |
1033 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT)])] |
1034 | state = dirstate.DirState.initialize('dirstate') |
1035 | try: |
1036 | state.set_state_from_scratch(inv, [], []) |
1037 | @@ -812,10 +812,10 @@ |
1038 | inv = tree1.root_inventory |
1039 | root_id = inv.path2id('') |
1040 | rev_tree1 = tree1.branch.repository.revision_tree(revid1) |
1041 | - d_entry = ('d', '', 0, False, dirstate.DirState.NULLSTAT) |
1042 | - parent_entry = ('d', '', 0, False, revid1) |
1043 | + d_entry = (b'd', b'', 0, False, dirstate.DirState.NULLSTAT) |
1044 | + parent_entry = (b'd', b'', 0, False, revid1) |
1045 | expected_result = [revid1], [ |
1046 | - (('', '', root_id), [d_entry, parent_entry])] |
1047 | + ((b'', b'', root_id), [d_entry, parent_entry])] |
1048 | state = dirstate.DirState.initialize('dirstate') |
1049 | try: |
1050 | state.set_state_from_scratch(inv, [(revid1, rev_tree1)], []) |
1051 | @@ -837,8 +837,7 @@ |
1052 | |
1053 | tree = self.make_branch_and_tree('.') |
1054 | # depends on the default format using dirstate... |
1055 | - tree.lock_write() |
1056 | - try: |
1057 | + with tree.lock_write(): |
1058 | # make a dirstate with some valid hashcache data |
1059 | # file on disk, but that's not needed for this test |
1060 | foo_contents = b'contents of foo' |
1061 | @@ -852,19 +851,19 @@ |
1062 | |
1063 | # should not be cached yet, because the file's too fresh |
1064 | self.assertEqual( |
1065 | - (('', 'foo', 'foo-id',), |
1066 | - [('f', '', 0, False, dirstate.DirState.NULLSTAT)]), |
1067 | - tree._dirstate._get_entry(0, 'foo-id')) |
1068 | + ((b'', b'foo', b'foo-id',), |
1069 | + [(b'f', b'', 0, False, dirstate.DirState.NULLSTAT)]), |
1070 | + tree._dirstate._get_entry(0, b'foo-id')) |
1071 | # poke in some hashcache information - it wouldn't normally be |
1072 | # stored because it's too fresh |
1073 | tree._dirstate.update_minimal( |
1074 | - ('', 'foo', 'foo-id'), |
1075 | - 'f', False, foo_sha, foo_packed, foo_size, 'foo') |
1076 | + (b'', b'foo', b'foo-id'), |
1077 | + b'f', False, foo_sha, foo_packed, foo_size, b'foo') |
1078 | # now should be cached |
1079 | self.assertEqual( |
1080 | - (('', 'foo', 'foo-id',), |
1081 | - [('f', foo_sha, foo_size, False, foo_packed)]), |
1082 | - tree._dirstate._get_entry(0, 'foo-id')) |
1083 | + ((b'', b'foo', b'foo-id',), |
1084 | + [(b'f', foo_sha, foo_size, False, foo_packed)]), |
1085 | + tree._dirstate._get_entry(0, b'foo-id')) |
1086 | |
1087 | # extract the inventory, and add something to it |
1088 | inv = tree._get_root_inventory() |
1089 | @@ -876,22 +875,17 @@ |
1090 | # this used to cause it to lose its hashcache |
1091 | tree._dirstate.set_state_from_inventory(inv) |
1092 | tree._dirstate._validate() |
1093 | - finally: |
1094 | - tree.unlock() |
1095 | |
1096 | - tree.lock_read() |
1097 | - try: |
1098 | + with tree.lock_read(): |
1099 | # now check that the state still has the original hashcache value |
1100 | state = tree._dirstate |
1101 | state._validate() |
1102 | - foo_tuple = state._get_entry(0, path_utf8='foo') |
1103 | + foo_tuple = state._get_entry(0, path_utf8=b'foo') |
1104 | self.assertEqual( |
1105 | - (('', 'foo', 'foo-id',), |
1106 | + (('', 'foo', b'foo-id',), |
1107 | [('f', foo_sha, len(foo_contents), False, |
1108 | dirstate.pack_stat(foo_stat))]), |
1109 | foo_tuple) |
1110 | - finally: |
1111 | - tree.unlock() |
1112 | |
1113 | def test_set_state_from_inventory_mixed_paths(self): |
1114 | tree1 = self.make_branch_and_tree('tree1') |
1115 | @@ -900,23 +894,23 @@ |
1116 | tree1.lock_write() |
1117 | try: |
1118 | tree1.add(['a', 'a/b', 'a-b', 'a/b/foo', 'a-b/bar'], |
1119 | - ['a-id', 'b-id', 'a-b-id', 'foo-id', 'bar-id']) |
1120 | + [b'a-id', b'b-id', b'a-b-id', b'foo-id', b'bar-id']) |
1121 | tree1.commit('rev1', rev_id=b'rev1') |
1122 | root_id = tree1.get_root_id() |
1123 | inv = tree1.root_inventory |
1124 | finally: |
1125 | tree1.unlock() |
1126 | - expected_result1 = [('', '', root_id, 'd'), |
1127 | - ('', 'a', 'a-id', 'd'), |
1128 | - ('', 'a-b', 'a-b-id', 'd'), |
1129 | - ('a', 'b', 'b-id', 'd'), |
1130 | - ('a/b', 'foo', 'foo-id', 'f'), |
1131 | - ('a-b', 'bar', 'bar-id', 'f'), |
1132 | + expected_result1 = [(b'', b'', root_id, b'd'), |
1133 | + (b'', b'a', b'a-id', b'd'), |
1134 | + (b'', b'a-b', b'a-b-id', b'd'), |
1135 | + (b'a', b'b', b'b-id', b'd'), |
1136 | + (b'a/b', b'foo', b'foo-id', b'f'), |
1137 | + (b'a-b', b'bar', b'bar-id', b'f'), |
1138 | ] |
1139 | - expected_result2 = [('', '', root_id, 'd'), |
1140 | - ('', 'a', 'a-id', 'd'), |
1141 | - ('', 'a-b', 'a-b-id', 'd'), |
1142 | - ('a-b', 'bar', 'bar-id', 'f'), |
1143 | + expected_result2 = [(b'', b'', root_id, b'd'), |
1144 | + (b'', b'a', b'a-id', b'd'), |
1145 | + (b'', b'a-b', b'a-b-id', b'd'), |
1146 | + (b'a-b', b'bar', b'bar-id', b'f'), |
1147 | ] |
1148 | state = dirstate.DirState.initialize('dirstate') |
1149 | try: |
1150 | @@ -925,7 +919,7 @@ |
1151 | for entry in state._iter_entries(): |
1152 | values.append(entry[0] + entry[1][0][:1]) |
1153 | self.assertEqual(expected_result1, values) |
1154 | - inv.delete('b-id') |
1155 | + inv.delete(b'b-id') |
1156 | state.set_state_from_inventory(inv) |
1157 | values = [] |
1158 | for entry in state._iter_entries(): |
1159 | @@ -939,23 +933,23 @@ |
1160 | state = dirstate.DirState.initialize('dirstate') |
1161 | try: |
1162 | # check precondition to be sure the state does change appropriately. |
1163 | - root_entry = (('', '', 'TREE_ROOT'), [('d', '', 0, False, 'x'*32)]) |
1164 | + root_entry = ((b'', b'', b'TREE_ROOT'), [(b'd', b'', 0, False, b'x'*32)]) |
1165 | self.assertEqual([root_entry], list(state._iter_entries())) |
1166 | - self.assertEqual(root_entry, state._get_entry(0, path_utf8='')) |
1167 | + self.assertEqual(root_entry, state._get_entry(0, path_utf8=b'')) |
1168 | self.assertEqual(root_entry, |
1169 | - state._get_entry(0, fileid_utf8='TREE_ROOT')) |
1170 | + state._get_entry(0, fileid_utf8=b'TREE_ROOT')) |
1171 | self.assertEqual((None, None), |
1172 | - state._get_entry(0, fileid_utf8='second-root-id')) |
1173 | - state.set_path_id('', 'second-root-id') |
1174 | - new_root_entry = (('', '', 'second-root-id'), |
1175 | - [('d', '', 0, False, 'x'*32)]) |
1176 | + state._get_entry(0, fileid_utf8=b'second-root-id')) |
1177 | + state.set_path_id('', b'second-root-id') |
1178 | + new_root_entry = ((b'', b'', b'second-root-id'), |
1179 | + [(b'd', b'', 0, False, b'x'*32)]) |
1180 | expected_rows = [new_root_entry] |
1181 | self.assertEqual(expected_rows, list(state._iter_entries())) |
1182 | - self.assertEqual(new_root_entry, state._get_entry(0, path_utf8='')) |
1183 | - self.assertEqual(new_root_entry, |
1184 | - state._get_entry(0, fileid_utf8='second-root-id')) |
1185 | + self.assertEqual(new_root_entry, state._get_entry(0, path_utf8=b'')) |
1186 | + self.assertEqual(new_root_entry, |
1187 | + state._get_entry(0, fileid_utf8=b'second-root-id')) |
1188 | self.assertEqual((None, None), |
1189 | - state._get_entry(0, fileid_utf8='TREE_ROOT')) |
1190 | + state._get_entry(0, fileid_utf8=b'TREE_ROOT')) |
1191 | # should work across save too |
1192 | state.save() |
1193 | finally: |
1194 | @@ -978,37 +972,37 @@ |
1195 | state = dirstate.DirState.initialize('dirstate') |
1196 | state._validate() |
1197 | try: |
1198 | - state.set_parent_trees([('parent-revid', rt)], ghosts=[]) |
1199 | - root_entry = (('', '', 'TREE_ROOT'), |
1200 | - [('d', '', 0, False, 'x'*32), |
1201 | - ('d', '', 0, False, 'parent-revid')]) |
1202 | - self.assertEqual(root_entry, state._get_entry(0, path_utf8='')) |
1203 | + state.set_parent_trees([(b'parent-revid', rt)], ghosts=[]) |
1204 | + root_entry = ((b'', b'', b'TREE_ROOT'), |
1205 | + [(b'd', b'', 0, False, b'x'*32), |
1206 | + (b'd', b'', 0, False, b'parent-revid')]) |
1207 | + self.assertEqual(root_entry, state._get_entry(0, path_utf8=b'')) |
1208 | self.assertEqual(root_entry, |
1209 | - state._get_entry(0, fileid_utf8='TREE_ROOT')) |
1210 | + state._get_entry(0, fileid_utf8=b'TREE_ROOT')) |
1211 | self.assertEqual((None, None), |
1212 | - state._get_entry(0, fileid_utf8='Asecond-root-id')) |
1213 | - state.set_path_id('', 'Asecond-root-id') |
1214 | + state._get_entry(0, fileid_utf8=b'Asecond-root-id')) |
1215 | + state.set_path_id(b'', b'Asecond-root-id') |
1216 | state._validate() |
1217 | # now see that it is what we expected |
1218 | - old_root_entry = (('', '', 'TREE_ROOT'), |
1219 | - [('a', '', 0, False, ''), |
1220 | - ('d', '', 0, False, 'parent-revid')]) |
1221 | - new_root_entry = (('', '', 'Asecond-root-id'), |
1222 | - [('d', '', 0, False, ''), |
1223 | - ('a', '', 0, False, '')]) |
1224 | + old_root_entry = ((b'', b'', b'TREE_ROOT'), |
1225 | + [(b'a', b'', 0, False, b''), |
1226 | + (b'd', b'', 0, False, b'parent-revid')]) |
1227 | + new_root_entry = ((b'', b'', b'Asecond-root-id'), |
1228 | + [(b'd', b'', 0, False, b''), |
1229 | + (b'a', b'', 0, False, b'')]) |
1230 | expected_rows = [new_root_entry, old_root_entry] |
1231 | state._validate() |
1232 | self.assertEqual(expected_rows, list(state._iter_entries())) |
1233 | - self.assertEqual(new_root_entry, state._get_entry(0, path_utf8='')) |
1234 | - self.assertEqual(old_root_entry, state._get_entry(1, path_utf8='')) |
1235 | + self.assertEqual(new_root_entry, state._get_entry(0, path_utf8=b'')) |
1236 | + self.assertEqual(old_root_entry, state._get_entry(1, path_utf8=b'')) |
1237 | self.assertEqual((None, None), |
1238 | - state._get_entry(0, fileid_utf8='TREE_ROOT')) |
1239 | + state._get_entry(0, fileid_utf8=b'TREE_ROOT')) |
1240 | self.assertEqual(old_root_entry, |
1241 | - state._get_entry(1, fileid_utf8='TREE_ROOT')) |
1242 | + state._get_entry(1, fileid_utf8=b'TREE_ROOT')) |
1243 | self.assertEqual(new_root_entry, |
1244 | - state._get_entry(0, fileid_utf8='Asecond-root-id')) |
1245 | + state._get_entry(0, fileid_utf8=b'Asecond-root-id')) |
1246 | self.assertEqual((None, None), |
1247 | - state._get_entry(1, fileid_utf8='Asecond-root-id')) |
1248 | + state._get_entry(1, fileid_utf8=b'Asecond-root-id')) |
1249 | # should work across save too |
1250 | state.save() |
1251 | finally: |
1252 | @@ -1025,7 +1019,7 @@ |
1253 | state.lock_write() |
1254 | try: |
1255 | state._validate() |
1256 | - state.set_path_id('', 'tree-root-2') |
1257 | + state.set_path_id(b'', b'tree-root-2') |
1258 | state._validate() |
1259 | finally: |
1260 | state.unlock() |
1261 | @@ -1049,12 +1043,12 @@ |
1262 | tree2.unlock() |
1263 | state = dirstate.DirState.initialize('dirstate') |
1264 | try: |
1265 | - state.set_path_id('', root_id) |
1266 | + state.set_path_id(b'', root_id) |
1267 | state.set_parent_trees( |
1268 | ((revid1, tree1.branch.repository.revision_tree(revid1)), |
1269 | (revid2, tree2.branch.repository.revision_tree(revid2)), |
1270 | - ('ghost-rev', None)), |
1271 | - ['ghost-rev']) |
1272 | + (b'ghost-rev', None)), |
1273 | + [b'ghost-rev']) |
1274 | # check we can reopen and use the dirstate after setting parent |
1275 | # trees. |
1276 | state._validate() |
1277 | @@ -1065,31 +1059,31 @@ |
1278 | state = dirstate.DirState.on_file('dirstate') |
1279 | state.lock_write() |
1280 | try: |
1281 | - self.assertEqual([revid1, revid2, 'ghost-rev'], |
1282 | + self.assertEqual([revid1, revid2, b'ghost-rev'], |
1283 | state.get_parent_ids()) |
1284 | # iterating the entire state ensures that the state is parsable. |
1285 | list(state._iter_entries()) |
1286 | # be sure that it sets not appends - change it |
1287 | state.set_parent_trees( |
1288 | ((revid1, tree1.branch.repository.revision_tree(revid1)), |
1289 | - ('ghost-rev', None)), |
1290 | - ['ghost-rev']) |
1291 | + (b'ghost-rev', None)), |
1292 | + [b'ghost-rev']) |
1293 | # and now put it back. |
1294 | state.set_parent_trees( |
1295 | ((revid1, tree1.branch.repository.revision_tree(revid1)), |
1296 | (revid2, tree2.branch.repository.revision_tree(revid2)), |
1297 | - ('ghost-rev', tree2.branch.repository.revision_tree( |
1298 | + (b'ghost-rev', tree2.branch.repository.revision_tree( |
1299 | _mod_revision.NULL_REVISION))), |
1300 | - ['ghost-rev']) |
1301 | - self.assertEqual([revid1, revid2, 'ghost-rev'], |
1302 | + [b'ghost-rev']) |
1303 | + self.assertEqual([revid1, revid2, b'ghost-rev'], |
1304 | state.get_parent_ids()) |
1305 | # the ghost should be recorded as such by set_parent_trees. |
1306 | - self.assertEqual(['ghost-rev'], state.get_ghosts()) |
1307 | + self.assertEqual([b'ghost-rev'], state.get_ghosts()) |
1308 | self.assertEqual( |
1309 | - [(('', '', root_id), [ |
1310 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), |
1311 | - ('d', '', 0, False, revid1), |
1312 | - ('d', '', 0, False, revid1) |
1313 | + [((b'', b'', root_id), [ |
1314 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), |
1315 | + (b'd', b'', 0, False, revid1), |
1316 | + (b'd', b'', 0, False, revid1) |
1317 | ])], |
1318 | list(state._iter_entries())) |
1319 | finally: |
1320 | @@ -1120,22 +1114,22 @@ |
1321 | tree2.unlock() |
1322 | # check the layout in memory |
1323 | expected_result = [revid1.encode('utf8'), revid2.encode('utf8')], [ |
1324 | - (('', '', root_id), [ |
1325 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), |
1326 | - ('d', '', 0, False, revid1.encode('utf8')), |
1327 | - ('d', '', 0, False, revid1.encode('utf8')) |
1328 | + ((b'', b'', root_id), [ |
1329 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), |
1330 | + (b'd', b'', 0, False, revid1.encode('utf8')), |
1331 | + (b'd', b'', 0, False, revid1.encode('utf8')) |
1332 | ]), |
1333 | - (('', 'a file', b'file-id'), [ |
1334 | - ('a', '', 0, False, ''), |
1335 | - ('f', '2439573625385400f2a669657a7db6ae7515d371', 12, False, |
1336 | + ((b'', 'a file', b'file-id'), [ |
1337 | + (b'a', b'', 0, False, ''), |
1338 | + (b'f', b'2439573625385400f2a669657a7db6ae7515d371', 12, False, |
1339 | revid1.encode('utf8')), |
1340 | - ('f', '542e57dc1cda4af37cb8e55ec07ce60364bb3c7d', 16, False, |
1341 | + (b'f', b'542e57dc1cda4af37cb8e55ec07ce60364bb3c7d', 16, False, |
1342 | revid2.encode('utf8')) |
1343 | ]) |
1344 | ] |
1345 | state = dirstate.DirState.initialize('dirstate') |
1346 | try: |
1347 | - state.set_path_id('', root_id) |
1348 | + state.set_path_id(b'', root_id) |
1349 | state.set_parent_trees( |
1350 | ((revid1, tree1.branch.repository.revision_tree(revid1)), |
1351 | (revid2, tree2.branch.repository.revision_tree(revid2)), |
1352 | @@ -1158,15 +1152,15 @@ |
1353 | # the 1*20 is the sha1 pretend value. |
1354 | state = dirstate.DirState.initialize('dirstate') |
1355 | expected_entries = [ |
1356 | - (('', '', b'TREE_ROOT'), [ |
1357 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1358 | + ((b'', b'', b'TREE_ROOT'), [ |
1359 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1360 | ]), |
1361 | - (('', 'a file', b'a-file-id'), [ |
1362 | - ('f', '1'*20, 19, False, dirstate.pack_stat(stat)), # current tree |
1363 | + ((b'', b'a file', b'a-file-id'), [ |
1364 | + (b'f', b'1'*20, 19, False, dirstate.pack_stat(stat)), # current tree |
1365 | ]), |
1366 | ] |
1367 | try: |
1368 | - state.add('a file', b'a-file-id', 'file', stat, '1'*20) |
1369 | + state.add('a file', b'a-file-id', 'file', stat, b'1'*20) |
1370 | # having added it, it should be in the output of iter_entries. |
1371 | self.assertEqual(expected_entries, list(state._iter_entries())) |
1372 | # saving and reloading should not affect this. |
1373 | @@ -1189,7 +1183,7 @@ |
1374 | state = dirstate.DirState.initialize('dirstate') |
1375 | self.addCleanup(state.unlock) |
1376 | self.assertRaises(errors.NotVersionedError, state.add, |
1377 | - 'unversioned/a file', 'a-file-id', 'file', None, None) |
1378 | + 'unversioned/a file', b'a-file-id', 'file', None, None) |
1379 | |
1380 | def test_add_directory_to_root_no_parents_all_data(self): |
1381 | # The most trivial addition of a dir is when there are no parents and |
1382 | @@ -1197,16 +1191,16 @@ |
1383 | self.build_tree(['a dir/']) |
1384 | stat = os.lstat('a dir') |
1385 | expected_entries = [ |
1386 | - (('', '', 'TREE_ROOT'), [ |
1387 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1388 | + ((b'', b'', b'TREE_ROOT'), [ |
1389 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1390 | ]), |
1391 | - (('', 'a dir', 'a dir id'), [ |
1392 | - ('d', '', 0, False, dirstate.pack_stat(stat)), # current tree |
1393 | + ((b'', b'a dir', b'a dir id'), [ |
1394 | + (b'd', b'', 0, False, dirstate.pack_stat(stat)), # current tree |
1395 | ]), |
1396 | ] |
1397 | state = dirstate.DirState.initialize('dirstate') |
1398 | try: |
1399 | - state.add('a dir', 'a dir id', 'directory', stat, None) |
1400 | + state.add('a dir', b'a dir id', 'directory', stat, None) |
1401 | # having added it, it should be in the output of iter_entries. |
1402 | self.assertEqual(expected_entries, list(state._iter_entries())) |
1403 | # saving and reloading should not affect this. |
1404 | @@ -1227,17 +1221,17 @@ |
1405 | os.symlink(target, link_name) |
1406 | stat = os.lstat(link_name) |
1407 | expected_entries = [ |
1408 | - (('', '', 'TREE_ROOT'), [ |
1409 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1410 | + ((b'', b'', b'TREE_ROOT'), [ |
1411 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1412 | ]), |
1413 | - (('', link_name.encode('UTF-8'), 'a link id'), [ |
1414 | - ('l', target.encode('UTF-8'), stat[6], |
1415 | + ((b'', link_name.encode('UTF-8'), b'a link id'), [ |
1416 | + (b'l', target.encode('UTF-8'), stat[6], |
1417 | False, dirstate.pack_stat(stat)), # current tree |
1418 | ]), |
1419 | ] |
1420 | state = dirstate.DirState.initialize('dirstate') |
1421 | try: |
1422 | - state.add(link_name, 'a link id', 'symlink', stat, |
1423 | + state.add(link_name, b'a link id', 'symlink', stat, |
1424 | target.encode('UTF-8')) |
1425 | # having added it, it should be in the output of iter_entries. |
1426 | self.assertEqual(expected_entries, list(state._iter_entries())) |
1427 | @@ -1264,21 +1258,21 @@ |
1428 | dirstat = os.lstat('a dir') |
1429 | filestat = os.lstat('a dir/a file') |
1430 | expected_entries = [ |
1431 | - (('', '', 'TREE_ROOT'), [ |
1432 | - ('d', '', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1433 | - ]), |
1434 | - (('', 'a dir', 'a dir id'), [ |
1435 | - ('d', '', 0, False, dirstate.pack_stat(dirstat)), # current tree |
1436 | - ]), |
1437 | - (('a dir', 'a file', 'a-file-id'), [ |
1438 | - ('f', '1'*20, 25, False, |
1439 | + ((b'', b'', b'TREE_ROOT'), [ |
1440 | + (b'd', b'', 0, False, dirstate.DirState.NULLSTAT), # current tree |
1441 | + ]), |
1442 | + ((b'', b'a dir', b'a dir id'), [ |
1443 | + (b'd', b'', 0, False, dirstate.pack_stat(dirstat)), # current tree |
1444 | + ]), |
1445 | + ((b'a dir', b'a file', b'a-file-id'), [ |
1446 | + (b'f', b'1'*20, 25, False, |
1447 | dirstate.pack_stat(filestat)), # current tree details |
1448 | ]), |
1449 | ] |
1450 | state = dirstate.DirState.initialize('dirstate') |
1451 | try: |
1452 | state.add('a dir', b'a dir id', 'directory', dirstat, None) |
1453 | - state.add('a dir/a file', b'a-file-id', 'file', filestat, '1'*20) |
1454 | + state.add('a dir/a file', b'a-file-id', 'file', filestat, b'1'*20) |
1455 | # added it, it should be in the output of iter_entries. |
1456 | self.assertEqual(expected_entries, list(state._iter_entries())) |
1457 | # saving and reloading should not affect this. |
1458 | @@ -1294,13 +1288,13 @@ |
1459 | # make a dirstate and add a tree reference |
1460 | state = dirstate.DirState.initialize('dirstate') |
1461 | expected_entry = ( |
1462 | - ('', 'subdir', b'subdir-id'), |
1463 | - [('t', 'subtree-123123', 0, False, |
1464 | - 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')], |
1465 | + (b'', b'subdir', b'subdir-id'), |
1466 | + [(b't', b'subtree-123123', 0, False, |
1467 | + b'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')], |
1468 | ) |
1469 | try: |
1470 | - state.add('subdir', b'subdir-id', 'tree-reference', None, 'subtree-123123') |
1471 | - entry = state._get_entry(0, b'subdir-id', 'subdir') |
1472 | + state.add('subdir', b'subdir-id', 'tree-reference', None, b'subtree-123123') |
1473 | + entry = state._get_entry(0, b'subdir-id', b'subdir') |
1474 | self.assertEqual(entry, expected_entry) |
1475 | state._validate() |
1476 | state.save() |
1477 | @@ -1310,7 +1304,7 @@ |
1478 | state.lock_read() |
1479 | self.addCleanup(state.unlock) |
1480 | state._validate() |
1481 | - entry2 = state._get_entry(0, b'subdir-id', 'subdir') |
1482 | + entry2 = state._get_entry(0, b'subdir-id', b'subdir') |
1483 | self.assertEqual(entry, entry2) |
1484 | self.assertEqual(entry, expected_entry) |
1485 | # and lookup by id should work too |
1486 | @@ -1321,9 +1315,9 @@ |
1487 | state = dirstate.DirState.initialize('dirstate') |
1488 | self.addCleanup(state.unlock) |
1489 | self.assertRaises(errors.BzrError, |
1490 | - state.add, '.', 'ass-id', 'directory', None, None) |
1491 | + state.add, '.', b'ass-id', 'directory', None, None) |
1492 | self.assertRaises(errors.BzrError, |
1493 | - state.add, '..', 'ass-id', 'directory', None, None) |
1494 | + state.add, '..', b'ass-id', 'directory', None, None) |
1495 | |
1496 | def test_set_state_with_rename_b_a_bug_395556(self): |
1497 | # bug 395556 uncovered a bug where the dirstate ends up with a false |
1498 | @@ -1342,11 +1336,11 @@ |
1499 | try: |
1500 | # Set the initial state with 'b' |
1501 | state.set_state_from_inventory(inv) |
1502 | - inv.rename('b-id', root_id, 'a') |
1503 | + inv.rename(b'b-id', root_id, 'a') |
1504 | # Set the new state with 'a', which currently corrupts. |
1505 | state.set_state_from_inventory(inv) |
1506 | - expected_result1 = [('', '', root_id, 'd'), |
1507 | - ('', 'a', 'b-id', 'f'), |
1508 | + expected_result1 = [(b'', b'', root_id, b'd'), |
1509 | + (b'', b'a', b'b-id', b'f'), |
1510 | ] |
1511 | values = [] |
1512 | for entry in state._iter_entries(): |
1513 | @@ -1419,15 +1413,15 @@ |
1514 | def test_get_line_with_2_rows(self): |
1515 | state = self.create_dirstate_with_root_and_subdir() |
1516 | try: |
1517 | - self.assertEqual(['#bazaar dirstate flat format 3\n', |
1518 | - 'crc32: 41262208\n', |
1519 | - 'num_entries: 2\n', |
1520 | - '0\x00\n\x00' |
1521 | - '0\x00\n\x00' |
1522 | - '\x00\x00a-root-value\x00' |
1523 | - 'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00\n\x00' |
1524 | - '\x00subdir\x00subdir-id\x00' |
1525 | - 'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00\n\x00' |
1526 | + self.assertEqual([b'#bazaar dirstate flat format 3\n', |
1527 | + b'crc32: 41262208\n', |
1528 | + b'num_entries: 2\n', |
1529 | + b'0\x00\n\x00' |
1530 | + b'0\x00\n\x00' |
1531 | + b'\x00\x00a-root-value\x00' |
1532 | + b'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00\n\x00' |
1533 | + b'\x00subdir\x00subdir-id\x00' |
1534 | + b'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00\n\x00' |
1535 | ], state.get_lines()) |
1536 | finally: |
1537 | state.unlock() |
1538 | @@ -1436,45 +1430,45 @@ |
1539 | state = self.create_dirstate_with_root() |
1540 | try: |
1541 | self.assertEqual( |
1542 | - '\x00\x00a-root-value\x00d\x00\x000\x00n' |
1543 | - '\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk', |
1544 | + b'\x00\x00a-root-value\x00d\x00\x000\x00n' |
1545 | + b'\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk', |
1546 | state._entry_to_line(state._dirblocks[0][1][0])) |
1547 | finally: |
1548 | state.unlock() |
1549 | |
1550 | def test_entry_to_line_with_parent(self): |
1551 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1552 | - root_entry = ('', '', 'a-root-value'), [ |
1553 | - ('d', '', 0, False, packed_stat), # current tree details |
1554 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1555 | + root_entry = (b'', b'', b'a-root-value'), [ |
1556 | + (b'd', b'', 0, False, packed_stat), # current tree details |
1557 | # first: a pointer to the current location |
1558 | - ('a', 'dirname/basename', 0, False, ''), |
1559 | + (b'a', b'dirname/basename', 0, False, b''), |
1560 | ] |
1561 | state = dirstate.DirState.initialize('dirstate') |
1562 | try: |
1563 | self.assertEqual( |
1564 | - '\x00\x00a-root-value\x00' |
1565 | - 'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00' |
1566 | - 'a\x00dirname/basename\x000\x00n\x00', |
1567 | + b'\x00\x00a-root-value\x00' |
1568 | + b'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00' |
1569 | + b'a\x00dirname/basename\x000\x00n\x00', |
1570 | state._entry_to_line(root_entry)) |
1571 | finally: |
1572 | state.unlock() |
1573 | |
1574 | def test_entry_to_line_with_two_parents_at_different_paths(self): |
1575 | # / in the tree, at / in one parent and /dirname/basename in the other. |
1576 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1577 | - root_entry = ('', '', 'a-root-value'), [ |
1578 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1579 | + root_entry = ('', '', b'a-root-value'), [ |
1580 | ('d', '', 0, False, packed_stat), # current tree details |
1581 | - ('d', '', 0, False, 'rev_id'), # first parent details |
1582 | + ('d', '', 0, False, b'rev_id'), # first parent details |
1583 | # second: a pointer to the current location |
1584 | ('a', 'dirname/basename', 0, False, ''), |
1585 | ] |
1586 | state = dirstate.DirState.initialize('dirstate') |
1587 | try: |
1588 | self.assertEqual( |
1589 | - '\x00\x00a-root-value\x00' |
1590 | - 'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00' |
1591 | - 'd\x00\x000\x00n\x00rev_id\x00' |
1592 | - 'a\x00dirname/basename\x000\x00n\x00', |
1593 | + b'\x00\x00a-root-value\x00' |
1594 | + b'd\x00\x000\x00n\x00AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk\x00' |
1595 | + b'd\x00\x000\x00n\x00rev_id\x00' |
1596 | + b'a\x00dirname/basename\x000\x00n\x00', |
1597 | state._entry_to_line(root_entry)) |
1598 | finally: |
1599 | state.unlock() |
1600 | @@ -1482,22 +1476,22 @@ |
1601 | def test_iter_entries(self): |
1602 | # we should be able to iterate the dirstate entries from end to end |
1603 | # this is for get_lines to be easy to read. |
1604 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1605 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1606 | dirblocks = [] |
1607 | - root_entries = [(('', '', 'a-root-value'), [ |
1608 | + root_entries = [(('', '', b'a-root-value'), [ |
1609 | ('d', '', 0, False, packed_stat), # current tree details |
1610 | ])] |
1611 | dirblocks.append(('', root_entries)) |
1612 | # add two files in the root |
1613 | - subdir_entry = ('', 'subdir', 'subdir-id'), [ |
1614 | + subdir_entry = ('', 'subdir', b'subdir-id'), [ |
1615 | ('d', '', 0, False, packed_stat), # current tree details |
1616 | ] |
1617 | - afile_entry = ('', 'afile', 'afile-id'), [ |
1618 | + afile_entry = ('', 'afile', b'afile-id'), [ |
1619 | ('f', 'sha1value', 34, False, packed_stat), # current tree details |
1620 | ] |
1621 | dirblocks.append(('', [subdir_entry, afile_entry])) |
1622 | # and one in subdir |
1623 | - file_entry2 = ('subdir', '2file', '2file-id'), [ |
1624 | + file_entry2 = ('subdir', '2file', b'2file-id'), [ |
1625 | ('f', 'sha1value', 23, False, packed_stat), # current tree details |
1626 | ] |
1627 | dirblocks.append(('subdir', [file_entry2])) |
1628 | @@ -1583,33 +1577,33 @@ |
1629 | def test_simple_structure(self): |
1630 | state = self.create_dirstate_with_root_and_subdir() |
1631 | self.addCleanup(state.unlock) |
1632 | - self.assertEntryEqual('', '', 'a-root-value', state, '', 0) |
1633 | - self.assertEntryEqual('', 'subdir', 'subdir-id', state, 'subdir', 0) |
1634 | - self.assertEntryEqual(None, None, None, state, 'missing', 0) |
1635 | - self.assertEntryEqual(None, None, None, state, 'missing/foo', 0) |
1636 | - self.assertEntryEqual(None, None, None, state, 'subdir/foo', 0) |
1637 | + self.assertEntryEqual(b'', b'', b'a-root-value', state, b'', 0) |
1638 | + self.assertEntryEqual(b'', b'subdir', b'subdir-id', state, b'subdir', 0) |
1639 | + self.assertEntryEqual(None, None, None, state, b'missing', 0) |
1640 | + self.assertEntryEqual(None, None, None, state, b'missing/foo', 0) |
1641 | + self.assertEntryEqual(None, None, None, state, b'subdir/foo', 0) |
1642 | |
1643 | def test_complex_structure_exists(self): |
1644 | state = self.create_complex_dirstate() |
1645 | self.addCleanup(state.unlock) |
1646 | - self.assertEntryEqual('', '', 'a-root-value', state, '', 0) |
1647 | - self.assertEntryEqual('', 'a', 'a-dir', state, 'a', 0) |
1648 | - self.assertEntryEqual('', 'b', 'b-dir', state, 'b', 0) |
1649 | - self.assertEntryEqual('', 'c', 'c-file', state, 'c', 0) |
1650 | - self.assertEntryEqual('', 'd', 'd-file', state, 'd', 0) |
1651 | - self.assertEntryEqual('a', 'e', 'e-dir', state, 'a/e', 0) |
1652 | - self.assertEntryEqual('a', 'f', 'f-file', state, 'a/f', 0) |
1653 | - self.assertEntryEqual('b', 'g', 'g-file', state, 'b/g', 0) |
1654 | - self.assertEntryEqual('b', 'h\xc3\xa5', 'h-\xc3\xa5-file', state, |
1655 | - 'b/h\xc3\xa5', 0) |
1656 | + self.assertEntryEqual(b'', b'', b'a-root-value', state, b'', 0) |
1657 | + self.assertEntryEqual(b'', b'a', b'a-dir', state, b'a', 0) |
1658 | + self.assertEntryEqual(b'', b'b', b'b-dir', state, b'b', 0) |
1659 | + self.assertEntryEqual(b'', b'c', b'c-file', state, b'c', 0) |
1660 | + self.assertEntryEqual(b'', b'd', b'd-file', state, b'd', 0) |
1661 | + self.assertEntryEqual(b'a', b'e', b'e-dir', state, b'a/e', 0) |
1662 | + self.assertEntryEqual(b'a', b'f', b'f-file', state, b'a/f', 0) |
1663 | + self.assertEntryEqual(b'b', b'g', b'g-file', state, b'b/g', 0) |
1664 | + self.assertEntryEqual(b'b', b'h\xc3\xa5', b'h-\xc3\xa5-file', state, |
1665 | + b'b/h\xc3\xa5', 0) |
1666 | |
1667 | def test_complex_structure_missing(self): |
1668 | state = self.create_complex_dirstate() |
1669 | self.addCleanup(state.unlock) |
1670 | - self.assertEntryEqual(None, None, None, state, '_', 0) |
1671 | - self.assertEntryEqual(None, None, None, state, '_\xc3\xa5', 0) |
1672 | - self.assertEntryEqual(None, None, None, state, 'a/b', 0) |
1673 | - self.assertEntryEqual(None, None, None, state, 'c/d', 0) |
1674 | + self.assertEntryEqual(None, None, None, state, b'_', 0) |
1675 | + self.assertEntryEqual(None, None, None, state, b'_\xc3\xa5', 0) |
1676 | + self.assertEntryEqual(None, None, None, state, b'a/b', 0) |
1677 | + self.assertEntryEqual(None, None, None, state, b'c/d', 0) |
1678 | |
1679 | def test_get_entry_uninitialized(self): |
1680 | """Calling get_entry will load data if it needs to""" |
1681 | @@ -1626,7 +1620,7 @@ |
1682 | state._header_state) |
1683 | self.assertEqual(dirstate.DirState.NOT_IN_MEMORY, |
1684 | state._dirblock_state) |
1685 | - self.assertEntryEqual('', '', 'a-root-value', state, '', 0) |
1686 | + self.assertEntryEqual(b'', b'', b'a-root-value', state, b'', 0) |
1687 | finally: |
1688 | state.unlock() |
1689 | |
1690 | @@ -1656,66 +1650,66 @@ |
1691 | |
1692 | :return: The dirstate, still write-locked. |
1693 | """ |
1694 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1695 | - null_sha = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
1696 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
1697 | + null_sha = b'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
1698 | NULL_PARENT_DETAILS = dirstate.DirState.NULL_PARENT_DETAILS |
1699 | - root_entry = ('', '', 'a-root-value'), [ |
1700 | - ('d', '', 0, False, packed_stat), |
1701 | - ('d', '', 0, False, 'parent-revid'), |
1702 | - ] |
1703 | - a_entry = ('', 'a', 'a-dir'), [ |
1704 | - ('d', '', 0, False, packed_stat), |
1705 | - ('d', '', 0, False, 'parent-revid'), |
1706 | - ] |
1707 | - b_entry = ('', 'b', 'b-dir'), [ |
1708 | - ('d', '', 0, False, packed_stat), |
1709 | - ('d', '', 0, False, 'parent-revid'), |
1710 | - ] |
1711 | - c_entry = ('', 'c', 'c-file'), [ |
1712 | - ('f', null_sha, 10, False, packed_stat), |
1713 | - ('r', 'b/j', 0, False, ''), |
1714 | - ] |
1715 | - d_entry = ('', 'd', 'd-file'), [ |
1716 | - ('f', null_sha, 20, False, packed_stat), |
1717 | - ('f', 'd', 20, False, 'parent-revid'), |
1718 | - ] |
1719 | - e_entry = ('a', 'e', 'e-dir'), [ |
1720 | - ('d', '', 0, False, packed_stat), |
1721 | - ('d', '', 0, False, 'parent-revid'), |
1722 | - ] |
1723 | - f_entry = ('a', 'f', 'f-file'), [ |
1724 | - ('f', null_sha, 30, False, packed_stat), |
1725 | - ('f', 'f', 20, False, 'parent-revid'), |
1726 | - ] |
1727 | - g_entry = ('b', 'g', 'g-file'), [ |
1728 | - ('f', null_sha, 30, False, packed_stat), |
1729 | - NULL_PARENT_DETAILS, |
1730 | - ] |
1731 | - h_entry1 = ('b', 'h\xc3\xa5', 'h-\xc3\xa5-file1'), [ |
1732 | - ('f', null_sha, 40, False, packed_stat), |
1733 | - NULL_PARENT_DETAILS, |
1734 | - ] |
1735 | - h_entry2 = ('b', 'h\xc3\xa5', 'h-\xc3\xa5-file2'), [ |
1736 | - NULL_PARENT_DETAILS, |
1737 | - ('f', 'h', 20, False, 'parent-revid'), |
1738 | - ] |
1739 | - i_entry = ('b', 'i', 'i-file'), [ |
1740 | - NULL_PARENT_DETAILS, |
1741 | - ('f', 'h', 20, False, 'parent-revid'), |
1742 | - ] |
1743 | - j_entry = ('b', 'j', 'c-file'), [ |
1744 | - ('r', 'c', 0, False, ''), |
1745 | - ('f', 'j', 20, False, 'parent-revid'), |
1746 | + root_entry = (b'', b'', b'a-root-value'), [ |
1747 | + (b'd', b'', 0, False, packed_stat), |
1748 | + (b'd', b'', 0, False, b'parent-revid'), |
1749 | + ] |
1750 | + a_entry = (b'', b'a', b'a-dir'), [ |
1751 | + (b'd', b'', 0, False, packed_stat), |
1752 | + (b'd', b'', 0, False, b'parent-revid'), |
1753 | + ] |
1754 | + b_entry = (b'', b'b', b'b-dir'), [ |
1755 | + (b'd', b'', 0, False, packed_stat), |
1756 | + (b'd', b'', 0, False, b'parent-revid'), |
1757 | + ] |
1758 | + c_entry = (b'', b'c', b'c-file'), [ |
1759 | + (b'f', null_sha, 10, False, packed_stat), |
1760 | + (b'r', b'b/j', 0, False, b''), |
1761 | + ] |
1762 | + d_entry = (b'', b'd', b'd-file'), [ |
1763 | + (b'f', null_sha, 20, False, packed_stat), |
1764 | + (b'f', b'd', 20, False, b'parent-revid'), |
1765 | + ] |
1766 | + e_entry = (b'a', b'e', b'e-dir'), [ |
1767 | + (b'd', b'', 0, False, packed_stat), |
1768 | + (b'd', b'', 0, False, b'parent-revid'), |
1769 | + ] |
1770 | + f_entry = (b'a', b'f', b'f-file'), [ |
1771 | + (b'f', null_sha, 30, False, packed_stat), |
1772 | + (b'f', b'f', 20, False, b'parent-revid'), |
1773 | + ] |
1774 | + g_entry = (b'b', b'g', b'g-file'), [ |
1775 | + (b'f', null_sha, 30, False, packed_stat), |
1776 | + NULL_PARENT_DETAILS, |
1777 | + ] |
1778 | + h_entry1 = (b'b', b'h\xc3\xa5', b'h-\xc3\xa5-file1'), [ |
1779 | + (b'f', null_sha, 40, False, packed_stat), |
1780 | + NULL_PARENT_DETAILS, |
1781 | + ] |
1782 | + h_entry2 = (b'b', b'h\xc3\xa5', b'h-\xc3\xa5-file2'), [ |
1783 | + NULL_PARENT_DETAILS, |
1784 | + (b'f', b'h', 20, False, b'parent-revid'), |
1785 | + ] |
1786 | + i_entry = (b'b', b'i', b'i-file'), [ |
1787 | + NULL_PARENT_DETAILS, |
1788 | + (b'f', b'h', 20, False, b'parent-revid'), |
1789 | + ] |
1790 | + j_entry = (b'b', b'j', b'c-file'), [ |
1791 | + (b'r', b'c', 0, False, b''), |
1792 | + (b'f', b'j', 20, False, b'parent-revid'), |
1793 | ] |
1794 | dirblocks = [] |
1795 | - dirblocks.append(('', [root_entry])) |
1796 | - dirblocks.append(('', [a_entry, b_entry, c_entry, d_entry])) |
1797 | - dirblocks.append(('a', [e_entry, f_entry])) |
1798 | - dirblocks.append(('b', [g_entry, h_entry1, h_entry2, i_entry, j_entry])) |
1799 | + dirblocks.append((b'', [root_entry])) |
1800 | + dirblocks.append((b'', [a_entry, b_entry, c_entry, d_entry])) |
1801 | + dirblocks.append((b'a', [e_entry, f_entry])) |
1802 | + dirblocks.append((b'b', [g_entry, h_entry1, h_entry2, i_entry, j_entry])) |
1803 | state = dirstate.DirState.initialize('dirstate') |
1804 | state._validate() |
1805 | try: |
1806 | - state._set_data(['parent'], dirblocks) |
1807 | + state._set_data([b'parent'], dirblocks) |
1808 | except: |
1809 | state.unlock() |
1810 | raise |
1811 | @@ -1760,21 +1754,21 @@ |
1812 | dirs = ['a', 'a/a', 'a/a/a', 'a/a/a/a', |
1813 | 'a-a', 'a/a-a', 'a/a/a-a', 'a/a/a/a-a', |
1814 | ] |
1815 | - null_sha = '' |
1816 | + null_sha = b'' |
1817 | state = dirstate.DirState.initialize('dirstate') |
1818 | self.addCleanup(state.unlock) |
1819 | |
1820 | fake_stat = os.stat('dirstate') |
1821 | for d in dirs: |
1822 | - d_id = d.replace('/', '_')+'-id' |
1823 | + d_id = d.encode('utf-8').replace(b'/', b'_')+b'-id' |
1824 | file_path = d + '/f' |
1825 | - file_id = file_path.replace('/', '_')+'-id' |
1826 | + file_id = file_path.encode('utf-8').replace(b'/', b'_')+b'-id' |
1827 | state.add(d, d_id, 'directory', fake_stat, null_sha) |
1828 | state.add(file_path, file_id, 'file', fake_stat, null_sha) |
1829 | |
1830 | - expected = ['', '', 'a', |
1831 | - 'a/a', 'a/a/a', 'a/a/a/a', |
1832 | - 'a/a/a/a-a', 'a/a/a-a', 'a/a-a', 'a-a', |
1833 | + expected = [b'', b'', b'a', |
1834 | + b'a/a', b'a/a/a', b'a/a/a/a', |
1835 | + b'a/a/a/a-a', b'a/a/a-a', b'a/a-a', b'a-a', |
1836 | ] |
1837 | split = lambda p:p.split('/') |
1838 | self.assertEqual(sorted(expected, key=split), expected) |
1839 | @@ -1784,19 +1778,19 @@ |
1840 | def test_set_parent_trees_correct_order(self): |
1841 | """After calling set_parent_trees() we should maintain the order.""" |
1842 | dirs = ['a', 'a-a', 'a/a'] |
1843 | - null_sha = '' |
1844 | + null_sha = b'' |
1845 | state = dirstate.DirState.initialize('dirstate') |
1846 | self.addCleanup(state.unlock) |
1847 | |
1848 | fake_stat = os.stat('dirstate') |
1849 | for d in dirs: |
1850 | - d_id = d.replace('/', '_')+'-id' |
1851 | + d_id = d.encode('utf-8').replace(b'/', b'_')+b'-id' |
1852 | file_path = d + '/f' |
1853 | - file_id = file_path.replace('/', '_')+'-id' |
1854 | + file_id = file_path.encode('utf-8').replace(b'/', b'_')+b'-id' |
1855 | state.add(d, d_id, 'directory', fake_stat, null_sha) |
1856 | state.add(file_path, file_id, 'file', fake_stat, null_sha) |
1857 | |
1858 | - expected = ['', '', 'a', 'a/a', 'a-a'] |
1859 | + expected = [b'', b'', b'a', b'a/a', b'a-a'] |
1860 | dirblock_names = [d[0] for d in state._dirblocks] |
1861 | self.assertEqual(expected, dirblock_names) |
1862 | |
1863 | @@ -1879,25 +1873,25 @@ |
1864 | def test_pack_stat_int(self): |
1865 | st = _FakeStat(6859, 1172758614, 1172758617, 777, 6499538, 0o100644) |
1866 | # Make sure that all parameters have an impact on the packed stat. |
1867 | - self.assertPackStat('AAAay0Xm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1868 | + self.assertPackStat(b'AAAay0Xm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1869 | st.st_size = 7000 |
1870 | # ay0 => bWE |
1871 | - self.assertPackStat('AAAbWEXm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1872 | + self.assertPackStat(b'AAAbWEXm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1873 | st.st_mtime = 1172758620 |
1874 | # 4FZ => 4Fx |
1875 | - self.assertPackStat('AAAbWEXm4FxF5uBZAAADCQBjLNIAAIGk', st) |
1876 | + self.assertPackStat(b'AAAbWEXm4FxF5uBZAAADCQBjLNIAAIGk', st) |
1877 | st.st_ctime = 1172758630 |
1878 | # uBZ => uBm |
1879 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1880 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1881 | st.st_dev = 888 |
1882 | # DCQ => DeA |
1883 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADeABjLNIAAIGk', st) |
1884 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADeABjLNIAAIGk', st) |
1885 | st.st_ino = 6499540 |
1886 | # LNI => LNQ |
1887 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADeABjLNQAAIGk', st) |
1888 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADeABjLNQAAIGk', st) |
1889 | st.st_mode = 0o100744 |
1890 | # IGk => IHk |
1891 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADeABjLNQAAIHk', st) |
1892 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADeABjLNQAAIHk', st) |
1893 | |
1894 | def test_pack_stat_float(self): |
1895 | """On some platforms mtime and ctime are floats. |
1896 | @@ -1908,18 +1902,18 @@ |
1897 | st = _FakeStat(7000, 1172758614.0, 1172758617.0, |
1898 | 777, 6499538, 0o100644) |
1899 | # These should all be the same as the integer counterparts |
1900 | - self.assertPackStat('AAAbWEXm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1901 | + self.assertPackStat(b'AAAbWEXm4FZF5uBZAAADCQBjLNIAAIGk', st) |
1902 | st.st_mtime = 1172758620.0 |
1903 | # FZF5 => FxF5 |
1904 | - self.assertPackStat('AAAbWEXm4FxF5uBZAAADCQBjLNIAAIGk', st) |
1905 | + self.assertPackStat(b'AAAbWEXm4FxF5uBZAAADCQBjLNIAAIGk', st) |
1906 | st.st_ctime = 1172758630.0 |
1907 | # uBZ => uBm |
1908 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1909 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1910 | # fractional seconds are discarded, so no change from above |
1911 | st.st_mtime = 1172758620.453 |
1912 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1913 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1914 | st.st_ctime = 1172758630.228 |
1915 | - self.assertPackStat('AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1916 | + self.assertPackStat(b'AAAbWEXm4FxF5uBmAAADCQBjLNIAAIGk', st) |
1917 | |
1918 | |
1919 | class TestBisect(TestCaseWithDirState): |
1920 | @@ -2003,162 +1997,162 @@ |
1921 | tree, state, expected = self.create_basic_dirstate() |
1922 | |
1923 | # Bisect should return the rows for the specified files. |
1924 | - self.assertBisect(expected, [['']], state, ['']) |
1925 | - self.assertBisect(expected, [['a']], state, ['a']) |
1926 | - self.assertBisect(expected, [['b']], state, ['b']) |
1927 | - self.assertBisect(expected, [['b/c']], state, ['b/c']) |
1928 | - self.assertBisect(expected, [['b/d']], state, ['b/d']) |
1929 | - self.assertBisect(expected, [['b/d/e']], state, ['b/d/e']) |
1930 | - self.assertBisect(expected, [['b-c']], state, ['b-c']) |
1931 | - self.assertBisect(expected, [['f']], state, ['f']) |
1932 | + self.assertBisect(expected, [[b'']], state, [b'']) |
1933 | + self.assertBisect(expected, [[b'a']], state, [b'a']) |
1934 | + self.assertBisect(expected, [[b'b']], state, [b'b']) |
1935 | + self.assertBisect(expected, [[b'b/c']], state, [b'b/c']) |
1936 | + self.assertBisect(expected, [[b'b/d']], state, [b'b/d']) |
1937 | + self.assertBisect(expected, [[b'b/d/e']], state, [b'b/d/e']) |
1938 | + self.assertBisect(expected, [[b'b-c']], state, [b'b-c']) |
1939 | + self.assertBisect(expected, [[b'f']], state, [b'f']) |
1940 | |
1941 | def test_bisect_multi(self): |
1942 | """Bisect can be used to find multiple records at the same time.""" |
1943 | tree, state, expected = self.create_basic_dirstate() |
1944 | # Bisect should be capable of finding multiple entries at the same time |
1945 | - self.assertBisect(expected, [['a'], ['b'], ['f']], |
1946 | - state, ['a', 'b', 'f']) |
1947 | - self.assertBisect(expected, [['f'], ['b/d'], ['b/d/e']], |
1948 | - state, ['f', 'b/d', 'b/d/e']) |
1949 | - self.assertBisect(expected, [['b'], ['b-c'], ['b/c']], |
1950 | - state, ['b', 'b-c', 'b/c']) |
1951 | + self.assertBisect(expected, [[b'a'], [b'b'], [b'f']], |
1952 | + state, [b'a', b'b', b'f']) |
1953 | + self.assertBisect(expected, [[b'f'], [b'b/d'], [b'b/d/e']], |
1954 | + state, [b'f', b'b/d', b'b/d/e']) |
1955 | + self.assertBisect(expected, [[b'b'], [b'b-c'], [b'b/c']], |
1956 | + state, [b'b', b'b-c', b'b/c']) |
1957 | |
1958 | def test_bisect_one_page(self): |
1959 | """Test bisect when there is only 1 page to read""" |
1960 | tree, state, expected = self.create_basic_dirstate() |
1961 | state._bisect_page_size = 5000 |
1962 | - self.assertBisect(expected, [['']], state, ['']) |
1963 | - self.assertBisect(expected, [['a']], state, ['a']) |
1964 | - self.assertBisect(expected, [['b']], state, ['b']) |
1965 | - self.assertBisect(expected, [['b/c']], state, ['b/c']) |
1966 | - self.assertBisect(expected, [['b/d']], state, ['b/d']) |
1967 | - self.assertBisect(expected, [['b/d/e']], state, ['b/d/e']) |
1968 | - self.assertBisect(expected, [['b-c']], state, ['b-c']) |
1969 | - self.assertBisect(expected, [['f']], state, ['f']) |
1970 | - self.assertBisect(expected, [['a'], ['b'], ['f']], |
1971 | - state, ['a', 'b', 'f']) |
1972 | - self.assertBisect(expected, [['b/d'], ['b/d/e'], ['f']], |
1973 | - state, ['b/d', 'b/d/e', 'f']) |
1974 | - self.assertBisect(expected, [['b'], ['b/c'], ['b-c']], |
1975 | - state, ['b', 'b/c', 'b-c']) |
1976 | + self.assertBisect(expected, [[b'']], state, [b'']) |
1977 | + self.assertBisect(expected, [[b'a']], state, [b'a']) |
1978 | + self.assertBisect(expected, [[b'b']], state, [b'b']) |
1979 | + self.assertBisect(expected, [[b'b/c']], state, [b'b/c']) |
1980 | + self.assertBisect(expected, [[b'b/d']], state, [b'b/d']) |
1981 | + self.assertBisect(expected, [[b'b/d/e']], state, [b'b/d/e']) |
1982 | + self.assertBisect(expected, [[b'b-c']], state, [b'b-c']) |
1983 | + self.assertBisect(expected, [[b'f']], state, [b'f']) |
1984 | + self.assertBisect(expected, [[b'a'], [b'b'], [b'f']], |
1985 | + state, [b'a', b'b', b'f']) |
1986 | + self.assertBisect(expected, [[b'b/d'], [b'b/d/e'], [b'f']], |
1987 | + state, [b'b/d', b'b/d/e', b'f']) |
1988 | + self.assertBisect(expected, [[b'b'], [b'b/c'], [b'b-c']], |
1989 | + state, [b'b', b'b/c', b'b-c']) |
1990 | |
1991 | def test_bisect_duplicate_paths(self): |
1992 | """When bisecting for a path, handle multiple entries.""" |
1993 | tree, state, expected = self.create_duplicated_dirstate() |
1994 | |
1995 | # Now make sure that both records are properly returned. |
1996 | - self.assertBisect(expected, [['']], state, ['']) |
1997 | - self.assertBisect(expected, [['a', 'a2']], state, ['a']) |
1998 | - self.assertBisect(expected, [['b', 'b2']], state, ['b']) |
1999 | - self.assertBisect(expected, [['b/c', 'b/c2']], state, ['b/c']) |
2000 | - self.assertBisect(expected, [['b/d', 'b/d2']], state, ['b/d']) |
2001 | - self.assertBisect(expected, [['b/d/e', 'b/d/e2']], |
2002 | - state, ['b/d/e']) |
2003 | - self.assertBisect(expected, [['b-c', 'b-c2']], state, ['b-c']) |
2004 | - self.assertBisect(expected, [['f', 'f2']], state, ['f']) |
2005 | + self.assertBisect(expected, [[b'']], state, [b'']) |
2006 | + self.assertBisect(expected, [[b'a', b'a2']], state, [b'a']) |
2007 | + self.assertBisect(expected, [[b'b', b'b2']], state, [b'b']) |
2008 | + self.assertBisect(expected, [[b'b/c', b'b/c2']], state, [b'b/c']) |
2009 | + self.assertBisect(expected, [[b'b/d', b'b/d2']], state, [b'b/d']) |
2010 | + self.assertBisect(expected, [[b'b/d/e', b'b/d/e2']], |
2011 | + state, [b'b/d/e']) |
2012 | + self.assertBisect(expected, [[b'b-c', b'b-c2']], state, [b'b-c']) |
2013 | + self.assertBisect(expected, [[b'f', b'f2']], state, [b'f']) |
2014 | |
2015 | def test_bisect_page_size_too_small(self): |
2016 | """If the page size is too small, we will auto increase it.""" |
2017 | tree, state, expected = self.create_basic_dirstate() |
2018 | state._bisect_page_size = 50 |
2019 | - self.assertBisect(expected, [None], state, ['b/e']) |
2020 | - self.assertBisect(expected, [['a']], state, ['a']) |
2021 | - self.assertBisect(expected, [['b']], state, ['b']) |
2022 | - self.assertBisect(expected, [['b/c']], state, ['b/c']) |
2023 | - self.assertBisect(expected, [['b/d']], state, ['b/d']) |
2024 | - self.assertBisect(expected, [['b/d/e']], state, ['b/d/e']) |
2025 | - self.assertBisect(expected, [['b-c']], state, ['b-c']) |
2026 | - self.assertBisect(expected, [['f']], state, ['f']) |
2027 | + self.assertBisect(expected, [None], state, [b'b/e']) |
2028 | + self.assertBisect(expected, [[b'a']], state, [b'a']) |
2029 | + self.assertBisect(expected, [[b'b']], state, [b'b']) |
2030 | + self.assertBisect(expected, [[b'b/c']], state, [b'b/c']) |
2031 | + self.assertBisect(expected, [[b'b/d']], state, [b'b/d']) |
2032 | + self.assertBisect(expected, [[b'b/d/e']], state, [b'b/d/e']) |
2033 | + self.assertBisect(expected, [[b'b-c']], state, [b'b-c']) |
2034 | + self.assertBisect(expected, [[b'f']], state, [b'f']) |
2035 | |
2036 | def test_bisect_missing(self): |
2037 | """Test that bisect return None if it cannot find a path.""" |
2038 | tree, state, expected = self.create_basic_dirstate() |
2039 | - self.assertBisect(expected, [None], state, ['foo']) |
2040 | - self.assertBisect(expected, [None], state, ['b/foo']) |
2041 | - self.assertBisect(expected, [None], state, ['bar/foo']) |
2042 | - self.assertBisect(expected, [None], state, ['b-c/foo']) |
2043 | + self.assertBisect(expected, [None], state, [b'foo']) |
2044 | + self.assertBisect(expected, [None], state, [b'b/foo']) |
2045 | + self.assertBisect(expected, [None], state, [b'bar/foo']) |
2046 | + self.assertBisect(expected, [None], state, [b'b-c/foo']) |
2047 | |
2048 | - self.assertBisect(expected, [['a'], None, ['b/d']], |
2049 | - state, ['a', 'foo', 'b/d']) |
2050 | + self.assertBisect(expected, [[b'a'], None, [b'b/d']], |
2051 | + state, [b'a', b'foo', b'b/d']) |
2052 | |
2053 | def test_bisect_rename(self): |
2054 | """Check that we find a renamed row.""" |
2055 | tree, state, expected = self.create_renamed_dirstate() |
2056 | |
2057 | # Search for the pre and post renamed entries |
2058 | - self.assertBisect(expected, [['a']], state, ['a']) |
2059 | - self.assertBisect(expected, [['b/g']], state, ['b/g']) |
2060 | - self.assertBisect(expected, [['b/d']], state, ['b/d']) |
2061 | - self.assertBisect(expected, [['h']], state, ['h']) |
2062 | + self.assertBisect(expected, [[b'a']], state, [b'a']) |
2063 | + self.assertBisect(expected, [[b'b/g']], state, [b'b/g']) |
2064 | + self.assertBisect(expected, [[b'b/d']], state, [b'b/d']) |
2065 | + self.assertBisect(expected, [[b'h']], state, [b'h']) |
2066 | |
2067 | # What about b/d/e? shouldn't that also get 2 directory entries? |
2068 | - self.assertBisect(expected, [['b/d/e']], state, ['b/d/e']) |
2069 | - self.assertBisect(expected, [['h/e']], state, ['h/e']) |
2070 | + self.assertBisect(expected, [[b'b/d/e']], state, [b'b/d/e']) |
2071 | + self.assertBisect(expected, [[b'h/e']], state, [b'h/e']) |
2072 | |
2073 | def test_bisect_dirblocks(self): |
2074 | tree, state, expected = self.create_duplicated_dirstate() |
2075 | self.assertBisectDirBlocks(expected, |
2076 | - [['', 'a', 'a2', 'b', 'b2', 'b-c', 'b-c2', 'f', 'f2']], |
2077 | - state, ['']) |
2078 | - self.assertBisectDirBlocks(expected, |
2079 | - [['b/c', 'b/c2', 'b/d', 'b/d2']], state, ['b']) |
2080 | - self.assertBisectDirBlocks(expected, |
2081 | - [['b/d/e', 'b/d/e2']], state, ['b/d']) |
2082 | - self.assertBisectDirBlocks(expected, |
2083 | - [['', 'a', 'a2', 'b', 'b2', 'b-c', 'b-c2', 'f', 'f2'], |
2084 | - ['b/c', 'b/c2', 'b/d', 'b/d2'], |
2085 | - ['b/d/e', 'b/d/e2'], |
2086 | - ], state, ['', 'b', 'b/d']) |
2087 | + [[b'', b'a', b'a2', b'b', b'b2', b'b-c', b'b-c2', b'f', b'f2']], |
2088 | + state, [b'']) |
2089 | + self.assertBisectDirBlocks(expected, |
2090 | + [[b'b/c', b'b/c2', b'b/d', b'b/d2']], state, [b'b']) |
2091 | + self.assertBisectDirBlocks(expected, |
2092 | + [[b'b/d/e', b'b/d/e2']], state, [b'b/d']) |
2093 | + self.assertBisectDirBlocks(expected, |
2094 | + [[b'', b'a', b'a2', b'b', b'b2', b'b-c', b'b-c2', b'f', b'f2'], |
2095 | + [b'b/c', b'b/c2', b'b/d', b'b/d2'], |
2096 | + [b'b/d/e', b'b/d/e2'], |
2097 | + ], state, [b'', b'b', b'b/d']) |
2098 | |
2099 | def test_bisect_dirblocks_missing(self): |
2100 | tree, state, expected = self.create_basic_dirstate() |
2101 | - self.assertBisectDirBlocks(expected, [['b/d/e'], None], |
2102 | - state, ['b/d', 'b/e']) |
2103 | + self.assertBisectDirBlocks(expected, [[b'b/d/e'], None], |
2104 | + state, [b'b/d', b'b/e']) |
2105 | # Files don't show up in this search |
2106 | - self.assertBisectDirBlocks(expected, [None], state, ['a']) |
2107 | - self.assertBisectDirBlocks(expected, [None], state, ['b/c']) |
2108 | - self.assertBisectDirBlocks(expected, [None], state, ['c']) |
2109 | - self.assertBisectDirBlocks(expected, [None], state, ['b/d/e']) |
2110 | - self.assertBisectDirBlocks(expected, [None], state, ['f']) |
2111 | + self.assertBisectDirBlocks(expected, [None], state, [b'a']) |
2112 | + self.assertBisectDirBlocks(expected, [None], state, [b'b/c']) |
2113 | + self.assertBisectDirBlocks(expected, [None], state, [b'c']) |
2114 | + self.assertBisectDirBlocks(expected, [None], state, [b'b/d/e']) |
2115 | + self.assertBisectDirBlocks(expected, [None], state, [b'f']) |
2116 | |
2117 | def test_bisect_recursive_each(self): |
2118 | tree, state, expected = self.create_basic_dirstate() |
2119 | - self.assertBisectRecursive(expected, ['a'], state, ['a']) |
2120 | - self.assertBisectRecursive(expected, ['b/c'], state, ['b/c']) |
2121 | - self.assertBisectRecursive(expected, ['b/d/e'], state, ['b/d/e']) |
2122 | - self.assertBisectRecursive(expected, ['b-c'], state, ['b-c']) |
2123 | - self.assertBisectRecursive(expected, ['b/d', 'b/d/e'], |
2124 | - state, ['b/d']) |
2125 | - self.assertBisectRecursive(expected, ['b', 'b/c', 'b/d', 'b/d/e'], |
2126 | - state, ['b']) |
2127 | - self.assertBisectRecursive(expected, ['', 'a', 'b', 'b-c', 'f', 'b/c', |
2128 | - 'b/d', 'b/d/e'], |
2129 | - state, ['']) |
2130 | + self.assertBisectRecursive(expected, [b'a'], state, [b'a']) |
2131 | + self.assertBisectRecursive(expected, [b'b/c'], state, [b'b/c']) |
2132 | + self.assertBisectRecursive(expected, [b'b/d/e'], state, [b'b/d/e']) |
2133 | + self.assertBisectRecursive(expected, [b'b-c'], state, [b'b-c']) |
2134 | + self.assertBisectRecursive(expected, [b'b/d', b'b/d/e'], |
2135 | + state, [b'b/d']) |
2136 | + self.assertBisectRecursive(expected, [b'b', b'b/c', b'b/d', b'b/d/e'], |
2137 | + state, [b'b']) |
2138 | + self.assertBisectRecursive(expected, [b'', b'a', b'b', b'b-c', b'f', b'b/c', |
2139 | + b'b/d', b'b/d/e'], |
2140 | + state, [b'']) |
2141 | |
2142 | def test_bisect_recursive_multiple(self): |
2143 | tree, state, expected = self.create_basic_dirstate() |
2144 | - self.assertBisectRecursive(expected, ['a', 'b/c'], state, ['a', 'b/c']) |
2145 | - self.assertBisectRecursive(expected, ['b/d', 'b/d/e'], |
2146 | - state, ['b/d', 'b/d/e']) |
2147 | + self.assertBisectRecursive(expected, [b'a', b'b/c'], state, [b'a', b'b/c']) |
2148 | + self.assertBisectRecursive(expected, [b'b/d', b'b/d/e'], |
2149 | + state, [b'b/d', b'b/d/e']) |
2150 | |
2151 | def test_bisect_recursive_missing(self): |
2152 | tree, state, expected = self.create_basic_dirstate() |
2153 | - self.assertBisectRecursive(expected, [], state, ['d']) |
2154 | - self.assertBisectRecursive(expected, [], state, ['b/e']) |
2155 | - self.assertBisectRecursive(expected, [], state, ['g']) |
2156 | - self.assertBisectRecursive(expected, ['a'], state, ['a', 'g']) |
2157 | + self.assertBisectRecursive(expected, [], state, [b'd']) |
2158 | + self.assertBisectRecursive(expected, [], state, [b'b/e']) |
2159 | + self.assertBisectRecursive(expected, [], state, [b'g']) |
2160 | + self.assertBisectRecursive(expected, [b'a'], state, [b'a', b'g']) |
2161 | |
2162 | def test_bisect_recursive_renamed(self): |
2163 | tree, state, expected = self.create_renamed_dirstate() |
2164 | |
2165 | # Looking for either renamed item should find the other |
2166 | - self.assertBisectRecursive(expected, ['a', 'b/g'], state, ['a']) |
2167 | - self.assertBisectRecursive(expected, ['a', 'b/g'], state, ['b/g']) |
2168 | + self.assertBisectRecursive(expected, [b'a', b'b/g'], state, [b'a']) |
2169 | + self.assertBisectRecursive(expected, [b'a', b'b/g'], state, [b'b/g']) |
2170 | # Looking in the containing directory should find the rename target, |
2171 | # and anything in a subdir of the renamed target. |
2172 | - self.assertBisectRecursive(expected, ['a', 'b', 'b/c', 'b/d', |
2173 | - 'b/d/e', 'b/g', 'h', 'h/e'], |
2174 | - state, ['b']) |
2175 | + self.assertBisectRecursive(expected, [b'a', b'b', b'b/c', b'b/d', |
2176 | + 'b/d/e', b'b/g', b'h', b'h/e'], |
2177 | + state, [b'b']) |
2178 | |
2179 | |
2180 | class TestDirstateValidation(TestCaseWithDirState): |
2181 | @@ -2181,9 +2175,9 @@ |
2182 | # we're appending to the dirblock, but this name comes before some of |
2183 | # the existing names; that's wrong |
2184 | last_dirblock[1].append( |
2185 | - (('h', 'aaaa', 'a-id'), |
2186 | - [('a', '', 0, False, ''), |
2187 | - ('a', '', 0, False, '')])) |
2188 | + ((b'h', b'aaaa', b'a-id'), |
2189 | + [(b'a', b'', 0, False, b''), |
2190 | + (b'a', b'', 0, False, b'')])) |
2191 | e = self.assertRaises(AssertionError, |
2192 | state._validate) |
2193 | self.assertContainsRe(str(e), 'not sorted') |
2194 | @@ -2194,9 +2188,9 @@ |
2195 | last_dirblock = state._dirblocks[-1] |
2196 | # add an entry with the wrong directory name |
2197 | last_dirblock[1].append( |
2198 | - (('', 'z', 'a-id'), |
2199 | - [('a', '', 0, False, ''), |
2200 | - ('a', '', 0, False, '')])) |
2201 | + ((b'', b'z', b'a-id'), |
2202 | + [(b'a', b'', 0, False, b''), |
2203 | + (b'a', b'', 0, False, b'')])) |
2204 | e = self.assertRaises(AssertionError, |
2205 | state._validate) |
2206 | self.assertContainsRe(str(e), |
2207 | @@ -2209,9 +2203,9 @@ |
2208 | # make another entry for a-id, without a correct 'r' pointer to |
2209 | # the real occurrence in the working tree |
2210 | last_dirblock[1].append( |
2211 | - (('h', 'z', 'a-id'), |
2212 | - [('a', '', 0, False, ''), |
2213 | - ('a', '', 0, False, '')])) |
2214 | + ((b'h', b'z', b'a-id'), |
2215 | + [(b'a', b'', 0, False, b''), |
2216 | + (b'a', b'', 0, False, b'')])) |
2217 | e = self.assertRaises(AssertionError, |
2218 | state._validate) |
2219 | self.assertContainsRe(str(e), |
2220 | @@ -2228,9 +2222,9 @@ |
2221 | tree.add_reference(subtree) |
2222 | tree.add('subtree') |
2223 | state = dirstate.DirState.from_tree(tree, 'dirstate') |
2224 | - key = ('', 'subtree', 'subtree') |
2225 | - expected = ('', [(key, |
2226 | - [('t', '', 0, False, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')])]) |
2227 | + key = (b'', b'subtree', b'subtree') |
2228 | + expected = (b'', [(key, |
2229 | + [(b't', b'', 0, False, b'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')])]) |
2230 | |
2231 | try: |
2232 | self.assertEqual(expected, state._find_block(key)) |
2233 | @@ -2249,18 +2243,18 @@ |
2234 | |
2235 | def test_discard_one_parent(self): |
2236 | # No-op |
2237 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
2238 | - root_entry_direntry = ('', '', 'a-root-value'), [ |
2239 | - ('d', '', 0, False, packed_stat), |
2240 | - ('d', '', 0, False, packed_stat), |
2241 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
2242 | + root_entry_direntry = (b'', b'', b'a-root-value'), [ |
2243 | + (b'd', b'', 0, False, packed_stat), |
2244 | + (b'd', b'', 0, False, packed_stat), |
2245 | ] |
2246 | dirblocks = [] |
2247 | - dirblocks.append(('', [root_entry_direntry])) |
2248 | - dirblocks.append(('', [])) |
2249 | + dirblocks.append((b'', [root_entry_direntry])) |
2250 | + dirblocks.append((b'', [])) |
2251 | |
2252 | state = self.create_empty_dirstate() |
2253 | self.addCleanup(state.unlock) |
2254 | - state._set_data(['parent-id'], dirblocks[:]) |
2255 | + state._set_data([b'parent-id'], dirblocks[:]) |
2256 | state._validate() |
2257 | |
2258 | state._discard_merge_parents() |
2259 | @@ -2269,42 +2263,42 @@ |
2260 | |
2261 | def test_discard_simple(self): |
2262 | # No-op |
2263 | - packed_stat = 'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
2264 | - root_entry_direntry = ('', '', 'a-root-value'), [ |
2265 | - ('d', '', 0, False, packed_stat), |
2266 | - ('d', '', 0, False, packed_stat), |
2267 | - ('d', '', 0, False, packed_stat), |
2268 | + packed_stat = b'AAAAREUHaIpFB2iKAAADAQAtkqUAAIGk' |
2269 | + root_entry_direntry = (b'', b'', b'a-root-value'), [ |
2270 | + (b'd', b'', 0, False, packed_stat), |
2271 | + (b'd', b'', 0, False, packed_stat), |
2272 | + (b'd', b'', 0, False, packed_stat), |
2273 | ] |
2274 | - expected_root_entry_direntry = ('', '', 'a-root-value'), [ |
2275 | - ('d', '', 0, False, packed_stat), |
2276 | - ('d', '', 0, False, packed_stat), |
2277 | + expected_root_entry_direntry = (b'', b'', b'a-root-value'), [ |
2278 | + (b'd', b'', 0, False, packed_stat), |
2279 | + (b'd', b'', 0, False, packed_stat), |
2280 | ] |
2281 | dirblocks = [] |
2282 | - dirblocks.append(('', [root_entry_direntry])) |
2283 | - dirblocks.append(('', [])) |
2284 | + dirblocks.append((b'', [root_entry_direntry])) |
2285 | + dirblocks.append((b'', [])) |
2286 | |
2287 | state = self.create_empty_dirstate() |
2288 | self.addCleanup(state.unlock) |
2289 | - state._set_data(['parent-id', 'merged-id'], dirblocks[:]) |
2290 | + state._set_data([b'parent-id', b'merged-id'], dirblocks[:]) |
2291 | state._validate() |
2292 | |
2293 | # This should strip of the extra column |
2294 | state._discard_merge_parents() |
2295 | state._validate() |
2296 | - expected_dirblocks = [('', [expected_root_entry_direntry]), ('', [])] |
2297 | + expected_dirblocks = [(b'', [expected_root_entry_direntry]), (b'', [])] |
2298 | self.assertEqual(expected_dirblocks, state._dirblocks) |
2299 | |
2300 | def test_discard_absent(self): |
2301 | """If entries are only in a merge, discard should remove the entries""" |
2302 | null_stat = dirstate.DirState.NULLSTAT |
2303 | - present_dir = ('d', '', 0, False, null_stat) |
2304 | - present_file = ('f', '', 0, False, null_stat) |
2305 | + present_dir = (b'd', b'', 0, False, null_stat) |
2306 | + present_file = (b'f', b'', 0, False, null_stat) |
2307 | absent = dirstate.DirState.NULL_PARENT_DETAILS |
2308 | - root_key = ('', '', 'a-root-value') |
2309 | - file_in_root_key = ('', 'file-in-root', 'a-file-id') |
2310 | - file_in_merged_key = ('', 'file-in-merged', 'b-file-id') |
2311 | - dirblocks = [('', [(root_key, [present_dir, present_dir, present_dir])]), |
2312 | - ('', [(file_in_merged_key, |
2313 | + root_key = (b'', b'', b'a-root-value') |
2314 | + file_in_root_key = (b'', b'file-in-root', b'a-file-id') |
2315 | + file_in_merged_key = (b'', b'file-in-merged', b'b-file-id') |
2316 | + dirblocks = [(b'', [(root_key, [present_dir, present_dir, present_dir])]), |
2317 | + (b'', [(file_in_merged_key, |
2318 | [absent, absent, present_file]), |
2319 | (file_in_root_key, |
2320 | [present_file, present_file, present_file]), |
2321 | @@ -2313,11 +2307,11 @@ |
2322 | |
2323 | state = self.create_empty_dirstate() |
2324 | self.addCleanup(state.unlock) |
2325 | - state._set_data(['parent-id', 'merged-id'], dirblocks[:]) |
2326 | + state._set_data([b'parent-id', b'merged-id'], dirblocks[:]) |
2327 | state._validate() |
2328 | |
2329 | - exp_dirblocks = [('', [(root_key, [present_dir, present_dir])]), |
2330 | - ('', [(file_in_root_key, |
2331 | + exp_dirblocks = [(b'', [(root_key, [present_dir, present_dir])]), |
2332 | + (b'', [(file_in_root_key, |
2333 | [present_file, present_file]), |
2334 | ]), |
2335 | ] |
2336 | @@ -2327,42 +2321,42 @@ |
2337 | |
2338 | def test_discard_renamed(self): |
2339 | null_stat = dirstate.DirState.NULLSTAT |
2340 | - present_dir = ('d', '', 0, False, null_stat) |
2341 | - present_file = ('f', '', 0, False, null_stat) |
2342 | + present_dir = (b'd', b'', 0, False, null_stat) |
2343 | + present_file = (b'f', b'', 0, False, null_stat) |
2344 | absent = dirstate.DirState.NULL_PARENT_DETAILS |
2345 | - root_key = ('', '', 'a-root-value') |
2346 | - file_in_root_key = ('', 'file-in-root', 'a-file-id') |
2347 | + root_key = (b'', b'', b'a-root-value') |
2348 | + file_in_root_key = (b'', b'file-in-root', b'a-file-id') |
2349 | # Renamed relative to parent |
2350 | - file_rename_s_key = ('', 'file-s', 'b-file-id') |
2351 | - file_rename_t_key = ('', 'file-t', 'b-file-id') |
2352 | + file_rename_s_key = (b'', b'file-s', b'b-file-id') |
2353 | + file_rename_t_key = (b'', b'file-t', b'b-file-id') |
2354 | # And one that is renamed between the parents, but absent in this |
2355 | - key_in_1 = ('', 'file-in-1', 'c-file-id') |
2356 | - key_in_2 = ('', 'file-in-2', 'c-file-id') |
2357 | + key_in_1 = (b'', b'file-in-1', b'c-file-id') |
2358 | + key_in_2 = (b'', b'file-in-2', b'c-file-id') |
2359 | |
2360 | dirblocks = [ |
2361 | - ('', [(root_key, [present_dir, present_dir, present_dir])]), |
2362 | - ('', [(key_in_1, |
2363 | - [absent, present_file, ('r', 'file-in-2', 'c-file-id')]), |
2364 | + (b'', [(root_key, [present_dir, present_dir, present_dir])]), |
2365 | + (b'', [(key_in_1, |
2366 | + [absent, present_file, (b'r', b'file-in-2', b'c-file-id')]), |
2367 | (key_in_2, |
2368 | - [absent, ('r', 'file-in-1', 'c-file-id'), present_file]), |
2369 | + [absent, (b'r', b'file-in-1', b'c-file-id'), present_file]), |
2370 | (file_in_root_key, |
2371 | [present_file, present_file, present_file]), |
2372 | (file_rename_s_key, |
2373 | - [('r', 'file-t', 'b-file-id'), absent, present_file]), |
2374 | + [(b'r', b'file-t', b'b-file-id'), absent, present_file]), |
2375 | (file_rename_t_key, |
2376 | - [present_file, absent, ('r', 'file-s', 'b-file-id')]), |
2377 | + [present_file, absent, (b'r', b'file-s', b'b-file-id')]), |
2378 | ]), |
2379 | ] |
2380 | exp_dirblocks = [ |
2381 | - ('', [(root_key, [present_dir, present_dir])]), |
2382 | - ('', [(key_in_1, [absent, present_file]), |
2383 | + (b'', [(root_key, [present_dir, present_dir])]), |
2384 | + (b'', [(key_in_1, [absent, present_file]), |
2385 | (file_in_root_key, [present_file, present_file]), |
2386 | (file_rename_t_key, [present_file, absent]), |
2387 | ]), |
2388 | ] |
2389 | state = self.create_empty_dirstate() |
2390 | self.addCleanup(state.unlock) |
2391 | - state._set_data(['parent-id', 'merged-id'], dirblocks[:]) |
2392 | + state._set_data([b'parent-id', b'merged-id'], dirblocks[:]) |
2393 | state._validate() |
2394 | |
2395 | state._discard_merge_parents() |
2396 | @@ -2371,31 +2365,31 @@ |
2397 | |
2398 | def test_discard_all_subdir(self): |
2399 | null_stat = dirstate.DirState.NULLSTAT |
2400 | - present_dir = ('d', '', 0, False, null_stat) |
2401 | - present_file = ('f', '', 0, False, null_stat) |
2402 | + present_dir = (b'd', b'', 0, False, null_stat) |
2403 | + present_file = (b'f', b'', 0, False, null_stat) |
2404 | absent = dirstate.DirState.NULL_PARENT_DETAILS |
2405 | - root_key = ('', '', 'a-root-value') |
2406 | - subdir_key = ('', 'sub', 'dir-id') |
2407 | - child1_key = ('sub', 'child1', 'child1-id') |
2408 | - child2_key = ('sub', 'child2', 'child2-id') |
2409 | - child3_key = ('sub', 'child3', 'child3-id') |
2410 | + root_key = (b'', b'', b'a-root-value') |
2411 | + subdir_key = (b'', b'sub', b'dir-id') |
2412 | + child1_key = (b'sub', b'child1', b'child1-id') |
2413 | + child2_key = (b'sub', b'child2', b'child2-id') |
2414 | + child3_key = (b'sub', b'child3', b'child3-id') |
2415 | |
2416 | dirblocks = [ |
2417 | - ('', [(root_key, [present_dir, present_dir, present_dir])]), |
2418 | - ('', [(subdir_key, [present_dir, present_dir, present_dir])]), |
2419 | - ('sub', [(child1_key, [absent, absent, present_file]), |
2420 | + (b'', [(root_key, [present_dir, present_dir, present_dir])]), |
2421 | + (b'', [(subdir_key, [present_dir, present_dir, present_dir])]), |
2422 | + (b'sub', [(child1_key, [absent, absent, present_file]), |
2423 | (child2_key, [absent, absent, present_file]), |
2424 | (child3_key, [absent, absent, present_file]), |
2425 | ]), |
2426 | ] |
2427 | exp_dirblocks = [ |
2428 | - ('', [(root_key, [present_dir, present_dir])]), |
2429 | - ('', [(subdir_key, [present_dir, present_dir])]), |
2430 | - ('sub', []), |
2431 | + (b'', [(root_key, [present_dir, present_dir])]), |
2432 | + (b'', [(subdir_key, [present_dir, present_dir])]), |
2433 | + (b'sub', []), |
2434 | ] |
2435 | state = self.create_empty_dirstate() |
2436 | self.addCleanup(state.unlock) |
2437 | - state._set_data(['parent-id', 'merged-id'], dirblocks[:]) |
2438 | + state._set_data([b'parent-id', b'merged-id'], dirblocks[:]) |
2439 | state._validate() |
2440 | |
2441 | state._discard_merge_parents() |
2442 | @@ -2411,19 +2405,19 @@ |
2443 | # details should always allow join() and always be a plain str when |
2444 | # finished |
2445 | (minikind, fingerprint, size, executable, tree_data) = details |
2446 | - self.assertIsInstance(minikind, str) |
2447 | - self.assertIsInstance(fingerprint, str) |
2448 | - self.assertIsInstance(tree_data, str) |
2449 | + self.assertIsInstance(minikind, bytes) |
2450 | + self.assertIsInstance(fingerprint, bytes) |
2451 | + self.assertIsInstance(tree_data, bytes) |
2452 | |
2453 | def test_unicode_symlink(self): |
2454 | inv_entry = inventory.InventoryLink(b'link-file-id', |
2455 | u'nam\N{Euro Sign}e', |
2456 | b'link-parent-id') |
2457 | - inv_entry.revision = 'link-revision-id' |
2458 | + inv_entry.revision = b'link-revision-id' |
2459 | target = u'link-targ\N{Euro Sign}t' |
2460 | inv_entry.symlink_target = target |
2461 | - self.assertDetails(('l', target.encode('UTF-8'), 0, False, |
2462 | - 'link-revision-id'), inv_entry) |
2463 | + self.assertDetails((b'l', target.encode('UTF-8'), 0, False, |
2464 | + b'link-revision-id'), inv_entry) |
2465 | |
2466 | |
2467 | class TestSHA1Provider(tests.TestCaseInTempDir): |
2468 | @@ -2477,20 +2471,20 @@ |
2469 | try: |
2470 | dir_id = dir_ids[dirname] |
2471 | except KeyError: |
2472 | - dir_id = osutils.basename(dirname) + '-id' |
2473 | + dir_id = osutils.basename(dirname).encode('utf-8') + b'-id' |
2474 | if is_dir: |
2475 | ie = inventory.InventoryDirectory(file_id, basename, dir_id) |
2476 | dir_ids[path] = file_id |
2477 | else: |
2478 | ie = inventory.InventoryFile(file_id, basename, dir_id) |
2479 | ie.text_size = 0 |
2480 | - ie.text_sha1 = '' |
2481 | + ie.text_sha1 = b'' |
2482 | ie.revision = rev_id |
2483 | return ie |
2484 | |
2485 | def create_tree_from_shape(self, rev_id, shape): |
2486 | - dir_ids = {'': 'root-id'} |
2487 | - inv = inventory.Inventory('root-id', rev_id) |
2488 | + dir_ids = {'': b'root-id'} |
2489 | + inv = inventory.Inventory(b'root-id', rev_id) |
2490 | for info in shape: |
2491 | if len(info) == 2: |
2492 | path, file_id = info |
2493 | @@ -2517,7 +2511,7 @@ |
2494 | |
2495 | def create_inv_delta(self, delta, rev_id): |
2496 | """Translate a 'delta shape' into an actual InventoryDelta""" |
2497 | - dir_ids = {'': 'root-id'} |
2498 | + dir_ids = {'': b'root-id'} |
2499 | inv_delta = [] |
2500 | for old_path, new_path, file_id in delta: |
2501 | if old_path is not None and old_path.endswith('/'): |
2502 | @@ -2539,18 +2533,18 @@ |
2503 | and assert that the DirState is still valid, and that its stored |
2504 | content matches the target_shape. |
2505 | """ |
2506 | - active_tree = self.create_tree_from_shape('active', active) |
2507 | - basis_tree = self.create_tree_from_shape('basis', basis) |
2508 | - target_tree = self.create_tree_from_shape('target', target) |
2509 | + active_tree = self.create_tree_from_shape(b'active', active) |
2510 | + basis_tree = self.create_tree_from_shape(b'basis', basis) |
2511 | + target_tree = self.create_tree_from_shape(b'target', target) |
2512 | state = self.create_empty_dirstate() |
2513 | state.set_state_from_scratch(active_tree.root_inventory, |
2514 | - [('basis', basis_tree)], []) |
2515 | + [(b'basis', basis_tree)], []) |
2516 | delta = target_tree.root_inventory._make_delta( |
2517 | basis_tree.root_inventory) |
2518 | - state.update_basis_by_delta(delta, 'target') |
2519 | + state.update_basis_by_delta(delta, b'target') |
2520 | state._validate() |
2521 | dirstate_tree = workingtree_4.DirStateRevisionTree(state, |
2522 | - 'target', _Repo()) |
2523 | + b'target', _Repo()) |
2524 | # The target now that delta has been applied should match the |
2525 | # RevisionTree |
2526 | self.assertEqual([], list(dirstate_tree.iter_changes(target_tree))) |
2527 | @@ -2558,7 +2552,7 @@ |
2528 | # it from scratch. |
2529 | state2 = self.create_empty_dirstate() |
2530 | state2.set_state_from_scratch(active_tree.root_inventory, |
2531 | - [('target', target_tree)], []) |
2532 | + [(b'target', target_tree)], []) |
2533 | self.assertEqual(state2._dirblocks, state._dirblocks) |
2534 | return state |
2535 | |
2536 | @@ -2570,18 +2564,18 @@ |
2537 | :param delta: A description of the delta to apply. Similar to the form |
2538 | for regular inventory deltas, but omitting the InventoryEntry. |
2539 | So adding a file is: (None, 'path', b'file-id') |
2540 | - Adding a directory is: (None, 'path/', 'dir-id') |
2541 | - Renaming a dir is: ('old/', 'new/', 'dir-id') |
2542 | + Adding a directory is: (None, 'path/', b'dir-id') |
2543 | + Renaming a dir is: ('old/', 'new/', b'dir-id') |
2544 | etc. |
2545 | """ |
2546 | - active_tree = self.create_tree_from_shape('active', active) |
2547 | - basis_tree = self.create_tree_from_shape('basis', basis) |
2548 | - inv_delta = self.create_inv_delta(delta, 'target') |
2549 | + active_tree = self.create_tree_from_shape(b'active', active) |
2550 | + basis_tree = self.create_tree_from_shape(b'basis', basis) |
2551 | + inv_delta = self.create_inv_delta(delta, b'target') |
2552 | state = self.create_empty_dirstate() |
2553 | state.set_state_from_scratch(active_tree.root_inventory, |
2554 | - [('basis', basis_tree)], []) |
2555 | + [(b'basis', basis_tree)], []) |
2556 | self.assertRaises(errors.InconsistentDelta, |
2557 | - state.update_basis_by_delta, inv_delta, 'target') |
2558 | + state.update_basis_by_delta, inv_delta, b'target') |
2559 | ## try: |
2560 | ## state.update_basis_by_delta(inv_delta, 'target') |
2561 | ## except errors.InconsistentDelta, e: |
2562 | @@ -2636,8 +2630,8 @@ |
2563 | def test_add_file_in_empty_dir_not_matching_active_state(self): |
2564 | state = self.assertUpdate( |
2565 | active=[], |
2566 | - basis=[('dir/', 'dir-id')], |
2567 | - target=[('dir/', 'dir-id', 'basis'), ('dir/file', b'file-id')], |
2568 | + basis=[('dir/', b'dir-id')], |
2569 | + target=[('dir/', b'dir-id', b'basis'), ('dir/file', b'file-id')], |
2570 | ) |
2571 | |
2572 | def test_add_file_missing_in_active_state(self): |
2573 | @@ -2717,40 +2711,40 @@ |
2574 | |
2575 | def test_rename_directory_with_contents(self): |
2576 | state = self.assertUpdate( # active matches basis |
2577 | - active=[('dir1/', 'dir-id'), |
2578 | - ('dir1/file', b'file-id')], |
2579 | - basis= [('dir1/', 'dir-id'), |
2580 | - ('dir1/file', b'file-id')], |
2581 | - target=[('dir2/', 'dir-id'), |
2582 | + active=[('dir1/', b'dir-id'), |
2583 | + ('dir1/file', b'file-id')], |
2584 | + basis= [('dir1/', b'dir-id'), |
2585 | + ('dir1/file', b'file-id')], |
2586 | + target=[('dir2/', b'dir-id'), |
2587 | ('dir2/file', b'file-id')]) |
2588 | state = self.assertUpdate( # active matches target |
2589 | - active=[('dir2/', 'dir-id'), |
2590 | + active=[('dir2/', b'dir-id'), |
2591 | ('dir2/file', b'file-id')], |
2592 | - basis= [('dir1/', 'dir-id'), |
2593 | + basis= [('dir1/', b'dir-id'), |
2594 | ('dir1/file', b'file-id')], |
2595 | - target=[('dir2/', 'dir-id'), |
2596 | + target=[('dir2/', b'dir-id'), |
2597 | ('dir2/file', b'file-id')]) |
2598 | state = self.assertUpdate( # active empty |
2599 | active=[], |
2600 | - basis= [('dir1/', 'dir-id'), |
2601 | + basis= [('dir1/', b'dir-id'), |
2602 | ('dir1/file', b'file-id')], |
2603 | - target=[('dir2/', 'dir-id'), |
2604 | + target=[('dir2/', b'dir-id'), |
2605 | ('dir2/file', b'file-id')]) |
2606 | state = self.assertUpdate( # active present at other location |
2607 | - active=[('dir3/', 'dir-id'), |
2608 | + active=[('dir3/', b'dir-id'), |
2609 | ('dir3/file', b'file-id')], |
2610 | - basis= [('dir1/', 'dir-id'), |
2611 | + basis= [('dir1/', b'dir-id'), |
2612 | ('dir1/file', b'file-id')], |
2613 | - target=[('dir2/', 'dir-id'), |
2614 | + target=[('dir2/', b'dir-id'), |
2615 | ('dir2/file', b'file-id')]) |
2616 | state = self.assertUpdate( # active has different ids |
2617 | - active=[('dir1/', 'dir1-id'), |
2618 | - ('dir1/file', 'file1-id'), |
2619 | - ('dir2/', 'dir2-id'), |
2620 | - ('dir2/file', 'file2-id')], |
2621 | - basis= [('dir1/', 'dir-id'), |
2622 | + active=[('dir1/', b'dir1-id'), |
2623 | + ('dir1/file', b'file1-id'), |
2624 | + ('dir2/', b'dir2-id'), |
2625 | + ('dir2/file', b'file2-id')], |
2626 | + basis= [('dir1/', b'dir-id'), |
2627 | ('dir1/file', b'file-id')], |
2628 | - target=[('dir2/', 'dir-id'), |
2629 | + target=[('dir2/', b'dir-id'), |
2630 | ('dir2/file', b'file-id')]) |
2631 | |
2632 | def test_invalid_file_not_present(self): |
2633 | @@ -2785,11 +2779,11 @@ |
2634 | # Note: we force the active tree to have the directory, by knowing how |
2635 | # path_to_ie handles entries with missing parents |
2636 | state = self.assertBadDelta( |
2637 | - active=[('path/', 'path-id')], |
2638 | + active=[('path/', b'path-id')], |
2639 | basis= [], |
2640 | delta=[(None, 'path/path2', b'file-id')]) |
2641 | state = self.assertBadDelta( |
2642 | - active=[('path/', 'path-id'), |
2643 | + active=[('path/', b'path-id'), |
2644 | ('path/path2', b'file-id')], |
2645 | basis= [], |
2646 | delta=[(None, 'path/path2', b'file-id')]) |
2647 | @@ -2798,95 +2792,95 @@ |
2648 | # We replace the parent directory, with another parent dir. But the C |
2649 | # file doesn't look like it has been moved. |
2650 | state = self.assertUpdate(# Same as basis |
2651 | - active=[('dir/', 'A-id'), |
2652 | - ('dir/B', 'B-id')], |
2653 | - basis= [('dir/', 'A-id'), |
2654 | - ('dir/B', 'B-id')], |
2655 | - target=[('dir/', 'C-id'), |
2656 | - ('dir/B', 'B-id')]) |
2657 | + active=[('dir/', b'A-id'), |
2658 | + ('dir/B', b'B-id')], |
2659 | + basis= [('dir/', b'A-id'), |
2660 | + ('dir/B', b'B-id')], |
2661 | + target=[('dir/', b'C-id'), |
2662 | + ('dir/B', b'B-id')]) |
2663 | state = self.assertUpdate(# Same as target |
2664 | - active=[('dir/', 'C-id'), |
2665 | - ('dir/B', 'B-id')], |
2666 | - basis= [('dir/', 'A-id'), |
2667 | - ('dir/B', 'B-id')], |
2668 | - target=[('dir/', 'C-id'), |
2669 | - ('dir/B', 'B-id')]) |
2670 | + active=[('dir/', b'C-id'), |
2671 | + ('dir/B', b'B-id')], |
2672 | + basis= [('dir/', b'A-id'), |
2673 | + ('dir/B', b'B-id')], |
2674 | + target=[('dir/', b'C-id'), |
2675 | + ('dir/B', b'B-id')]) |
2676 | state = self.assertUpdate(# empty active |
2677 | active=[], |
2678 | - basis= [('dir/', 'A-id'), |
2679 | - ('dir/B', 'B-id')], |
2680 | - target=[('dir/', 'C-id'), |
2681 | - ('dir/B', 'B-id')]) |
2682 | + basis= [('dir/', b'A-id'), |
2683 | + ('dir/B', b'B-id')], |
2684 | + target=[('dir/', b'C-id'), |
2685 | + ('dir/B', b'B-id')]) |
2686 | state = self.assertUpdate(# different active |
2687 | - active=[('dir/', 'D-id'), |
2688 | - ('dir/B', 'B-id')], |
2689 | - basis= [('dir/', 'A-id'), |
2690 | - ('dir/B', 'B-id')], |
2691 | - target=[('dir/', 'C-id'), |
2692 | - ('dir/B', 'B-id')]) |
2693 | + active=[('dir/', b'D-id'), |
2694 | + ('dir/B', b'B-id')], |
2695 | + basis= [('dir/', b'A-id'), |
2696 | + ('dir/B', b'B-id')], |
2697 | + target=[('dir/', b'C-id'), |
2698 | + ('dir/B', b'B-id')]) |
2699 | |
2700 | def test_parent_child_swap(self): |
2701 | state = self.assertUpdate(# Same as basis |
2702 | - active=[('A/', 'A-id'), |
2703 | - ('A/B/', 'B-id'), |
2704 | - ('A/B/C', 'C-id')], |
2705 | - basis= [('A/', 'A-id'), |
2706 | - ('A/B/', 'B-id'), |
2707 | - ('A/B/C', 'C-id')], |
2708 | - target=[('A/', 'B-id'), |
2709 | - ('A/B/', 'A-id'), |
2710 | - ('A/B/C', 'C-id')]) |
2711 | + active=[('A/', b'A-id'), |
2712 | + ('A/B/', b'B-id'), |
2713 | + ('A/B/C', b'C-id')], |
2714 | + basis= [('A/', b'A-id'), |
2715 | + ('A/B/', b'B-id'), |
2716 | + ('A/B/C', b'C-id')], |
2717 | + target=[('A/', b'B-id'), |
2718 | + ('A/B/', b'A-id'), |
2719 | + ('A/B/C', b'C-id')]) |
2720 | state = self.assertUpdate(# Same as target |
2721 | - active=[('A/', 'B-id'), |
2722 | - ('A/B/', 'A-id'), |
2723 | - ('A/B/C', 'C-id')], |
2724 | - basis= [('A/', 'A-id'), |
2725 | - ('A/B/', 'B-id'), |
2726 | - ('A/B/C', 'C-id')], |
2727 | - target=[('A/', 'B-id'), |
2728 | - ('A/B/', 'A-id'), |
2729 | - ('A/B/C', 'C-id')]) |
2730 | + active=[('A/', b'B-id'), |
2731 | + ('A/B/', b'A-id'), |
2732 | + ('A/B/C', b'C-id')], |
2733 | + basis= [('A/', b'A-id'), |
2734 | + ('A/B/', b'B-id'), |
2735 | + ('A/B/C', b'C-id')], |
2736 | + target=[('A/', b'B-id'), |
2737 | + ('A/B/', b'A-id'), |
2738 | + ('A/B/C', b'C-id')]) |
2739 | state = self.assertUpdate(# empty active |
2740 | active=[], |
2741 | - basis= [('A/', 'A-id'), |
2742 | - ('A/B/', 'B-id'), |
2743 | - ('A/B/C', 'C-id')], |
2744 | - target=[('A/', 'B-id'), |
2745 | - ('A/B/', 'A-id'), |
2746 | - ('A/B/C', 'C-id')]) |
2747 | + basis= [('A/', b'A-id'), |
2748 | + ('A/B/', b'B-id'), |
2749 | + ('A/B/C', b'C-id')], |
2750 | + target=[('A/', b'B-id'), |
2751 | + ('A/B/', b'A-id'), |
2752 | + ('A/B/C', b'C-id')]) |
2753 | state = self.assertUpdate(# different active |
2754 | - active=[('D/', 'A-id'), |
2755 | - ('D/E/', 'B-id'), |
2756 | - ('F', 'C-id')], |
2757 | - basis= [('A/', 'A-id'), |
2758 | - ('A/B/', 'B-id'), |
2759 | - ('A/B/C', 'C-id')], |
2760 | - target=[('A/', 'B-id'), |
2761 | - ('A/B/', 'A-id'), |
2762 | - ('A/B/C', 'C-id')]) |
2763 | + active=[('D/', b'A-id'), |
2764 | + ('D/E/', b'B-id'), |
2765 | + ('F', b'C-id')], |
2766 | + basis= [('A/', b'A-id'), |
2767 | + ('A/B/', b'B-id'), |
2768 | + ('A/B/C', b'C-id')], |
2769 | + target=[('A/', b'B-id'), |
2770 | + ('A/B/', b'A-id'), |
2771 | + ('A/B/C', b'C-id')]) |
2772 | |
2773 | def test_change_root_id(self): |
2774 | state = self.assertUpdate( # same as basis |
2775 | - active=[('', 'root-id'), |
2776 | - ('file', b'file-id')], |
2777 | - basis= [('', 'root-id'), |
2778 | - ('file', b'file-id')], |
2779 | - target=[('', 'target-root-id'), |
2780 | + active=[('', b'root-id'), |
2781 | + ('file', b'file-id')], |
2782 | + basis= [('', b'root-id'), |
2783 | + ('file', b'file-id')], |
2784 | + target=[('', b'target-root-id'), |
2785 | ('file', b'file-id')]) |
2786 | state = self.assertUpdate( # same as target |
2787 | - active=[('', 'target-root-id'), |
2788 | - ('file', b'file-id')], |
2789 | - basis= [('', 'root-id'), |
2790 | - ('file', b'file-id')], |
2791 | - target=[('', 'target-root-id'), |
2792 | - ('file', 'root-id')]) |
2793 | + active=[('', b'target-root-id'), |
2794 | + ('file', b'file-id')], |
2795 | + basis= [('', b'root-id'), |
2796 | + ('file', b'file-id')], |
2797 | + target=[('', b'target-root-id'), |
2798 | + ('file', b'root-id')]) |
2799 | state = self.assertUpdate( # all different |
2800 | - active=[('', 'active-root-id'), |
2801 | - ('file', b'file-id')], |
2802 | - basis= [('', 'root-id'), |
2803 | - ('file', b'file-id')], |
2804 | - target=[('', 'target-root-id'), |
2805 | - ('file', 'root-id')]) |
2806 | + active=[('', b'active-root-id'), |
2807 | + ('file', b'file-id')], |
2808 | + basis= [('', b'root-id'), |
2809 | + ('file', b'file-id')], |
2810 | + target=[('', b'target-root-id'), |
2811 | + ('file', b'root-id')]) |
2812 | |
2813 | def test_change_file_absent_in_active(self): |
2814 | state = self.assertUpdate( |
2815 | |
2816 | === modified file 'python3.passing' |
2817 | --- python3.passing 2018-07-01 10:40:19 +0000 |
2818 | +++ python3.passing 2018-07-01 11:20:52 +0000 |
2819 | @@ -374,9 +374,15 @@ |
2820 | breezy.plugins.upload.tests.test_upload.TestBranchUploadLocations.test_set_push_location(RemoteBranchFormat-default) |
2821 | breezy.plugins.upload.tests.test_upload.TestBranchUploadLocations.test_set_push_location(RemoteBranchFormat-v2) |
2822 | breezy.plugins.upload.tests.test_upload.TestBranchUploadLocations.test_set_push_location(RemoteGitBranchFormat) |
2823 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file_in_dir(SFTPTransport,SFTPAbsoluteServer) |
2824 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file_in_dir(SFTPTransport,SFTPHomeDirServer) |
2825 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file_in_dir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2826 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file(SFTPTransport,SFTPAbsoluteServer) |
2827 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file(SFTPTransport,SFTPHomeDirServer) |
2828 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_file(SFTPTransport,SFTPSiblingAbsoluteServer) |
2829 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_remote_dir_twice(SFTPTransport,SFTPAbsoluteServer) |
2830 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_remote_dir_twice(SFTPTransport,SFTPHomeDirServer) |
2831 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_remote_dir_twice(SFTPTransport,SFTPSiblingAbsoluteServer) |
2832 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_symlink(SFTPTransport,SFTPAbsoluteServer) |
2833 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_symlink(SFTPTransport,SFTPHomeDirServer) |
2834 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_create_symlink(SFTPTransport,SFTPSiblingAbsoluteServer) |
2835 | @@ -389,6 +395,9 @@ |
2836 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_file(SFTPTransport,SFTPAbsoluteServer) |
2837 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_file(SFTPTransport,SFTPHomeDirServer) |
2838 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_file(SFTPTransport,SFTPSiblingAbsoluteServer) |
2839 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_nested_directory(SFTPTransport,SFTPAbsoluteServer) |
2840 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_nested_directory(SFTPTransport,SFTPHomeDirServer) |
2841 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_nested_directory(SFTPTransport,SFTPSiblingAbsoluteServer) |
2842 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_regexp(SFTPTransport,SFTPAbsoluteServer) |
2843 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_regexp(SFTPTransport,SFTPHomeDirServer) |
2844 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_ignore_regexp(SFTPTransport,SFTPSiblingAbsoluteServer) |
2845 | @@ -407,12 +416,21 @@ |
2846 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_auto(SFTPTransport,SFTPAbsoluteServer) |
2847 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_auto(SFTPTransport,SFTPHomeDirServer) |
2848 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_auto(SFTPTransport,SFTPSiblingAbsoluteServer) |
2849 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_from_subdir(SFTPTransport,SFTPAbsoluteServer) |
2850 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_from_subdir(SFTPTransport,SFTPHomeDirServer) |
2851 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_from_subdir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2852 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_noauto(SFTPTransport,SFTPAbsoluteServer) |
2853 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_noauto(SFTPTransport,SFTPHomeDirServer) |
2854 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_noauto(SFTPTransport,SFTPSiblingAbsoluteServer) |
2855 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPAbsoluteServer) |
2856 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPHomeDirServer) |
2857 | +breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2858 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revision(SFTPTransport,SFTPAbsoluteServer) |
2859 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revision(SFTPTransport,SFTPHomeDirServer) |
2860 | breezy.plugins.upload.tests.test_upload.TestFullUpload.test_upload_revision(SFTPTransport,SFTPSiblingAbsoluteServer) |
2861 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file_in_dir(SFTPTransport,SFTPAbsoluteServer) |
2862 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file_in_dir(SFTPTransport,SFTPHomeDirServer) |
2863 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file_in_dir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2864 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file(SFTPTransport,SFTPAbsoluteServer) |
2865 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file(SFTPTransport,SFTPHomeDirServer) |
2866 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_create_file(SFTPTransport,SFTPSiblingAbsoluteServer) |
2867 | @@ -434,6 +452,9 @@ |
2868 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_file(SFTPTransport,SFTPAbsoluteServer) |
2869 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_file(SFTPTransport,SFTPHomeDirServer) |
2870 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_file(SFTPTransport,SFTPSiblingAbsoluteServer) |
2871 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_nested_directory(SFTPTransport,SFTPAbsoluteServer) |
2872 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_nested_directory(SFTPTransport,SFTPHomeDirServer) |
2873 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_nested_directory(SFTPTransport,SFTPSiblingAbsoluteServer) |
2874 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_regexp(SFTPTransport,SFTPAbsoluteServer) |
2875 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_regexp(SFTPTransport,SFTPHomeDirServer) |
2876 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_ignore_regexp(SFTPTransport,SFTPSiblingAbsoluteServer) |
2877 | @@ -452,9 +473,15 @@ |
2878 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_for_the_first_time_do_a_full_upload(SFTPTransport,SFTPAbsoluteServer) |
2879 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_for_the_first_time_do_a_full_upload(SFTPTransport,SFTPHomeDirServer) |
2880 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_for_the_first_time_do_a_full_upload(SFTPTransport,SFTPSiblingAbsoluteServer) |
2881 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_from_subdir(SFTPTransport,SFTPAbsoluteServer) |
2882 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_from_subdir(SFTPTransport,SFTPHomeDirServer) |
2883 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_from_subdir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2884 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_noauto(SFTPTransport,SFTPAbsoluteServer) |
2885 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_noauto(SFTPTransport,SFTPHomeDirServer) |
2886 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_noauto(SFTPTransport,SFTPSiblingAbsoluteServer) |
2887 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPAbsoluteServer) |
2888 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPHomeDirServer) |
2889 | +breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revid_path_in_dir(SFTPTransport,SFTPSiblingAbsoluteServer) |
2890 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revision(SFTPTransport,SFTPAbsoluteServer) |
2891 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revision(SFTPTransport,SFTPHomeDirServer) |
2892 | breezy.plugins.upload.tests.test_upload.TestIncrementalUpload.test_upload_revision(SFTPTransport,SFTPSiblingAbsoluteServer) |
2893 | @@ -4888,7 +4915,9 @@ |
2894 | breezy.tests.per_interrepository.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser(InterSameDataRepository,RepositoryFormatKnit3,RepositoryFormatKnit3) |
2895 | breezy.tests.per_interrepository.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser(InterToLocalGitRepository,RepositoryFormat2a,GitRepositoryFormat) |
2896 | breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterDirStateTree(C)) |
2897 | +breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterDirStateTree(PY)) |
2898 | breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree) |
2899 | +breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree(CHKInventory)) |
2900 | breezy.tests.per_intertree.test_compare.TestCompare.test_abc_content_to_empty(InterTree(PreviewTree)) |
2901 | breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(C)) |
2902 | breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterDirStateTree(PY)) |
2903 | @@ -4896,7 +4925,9 @@ |
2904 | breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(CHKInventory)) |
2905 | breezy.tests.per_intertree.test_compare.TestCompare.test_compare_empty_trees(InterTree(PreviewTree)) |
2906 | breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterDirStateTree(C)) |
2907 | +breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterDirStateTree(PY)) |
2908 | breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterTree) |
2909 | +breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterTree(CHKInventory)) |
2910 | breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterTree(PreviewTree)) |
2911 | breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C)) |
2912 | breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY)) |
2913 | @@ -4908,35 +4939,49 @@ |
2914 | breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree(PreviewTree)) |
2915 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C)) |
2916 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterTree) |
2917 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterTree(CHKInventory)) |
2918 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_and_c_only(InterTree(PreviewTree)) |
2919 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterDirStateTree(C)) |
2920 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterDirStateTree(PY)) |
2921 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterTree) |
2922 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterTree(CHKInventory)) |
2923 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_a_only(InterTree(PreviewTree)) |
2924 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterDirStateTree(C)) |
2925 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterDirStateTree(PY)) |
2926 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterTree) |
2927 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterTree(CHKInventory)) |
2928 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_b_only(InterTree(PreviewTree)) |
2929 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterDirStateTree(C)) |
2930 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterDirStateTree(PY)) |
2931 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterTree) |
2932 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterTree(CHKInventory)) |
2933 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content_c_only(InterTree(PreviewTree)) |
2934 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterDirStateTree(C)) |
2935 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterDirStateTree(PY)) |
2936 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree) |
2937 | +breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree(CHKInventory)) |
2938 | breezy.tests.per_intertree.test_compare.TestCompare.test_empty_to_abc_content(InterTree(PreviewTree)) |
2939 | breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterDirStateTree(C)) |
2940 | breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterTree) |
2941 | breezy.tests.per_intertree.test_compare.TestCompare.test_extra_trees_finds_ids(InterTree(PreviewTree)) |
2942 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterDirStateTree(C)) |
2943 | +breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterDirStateTree(PY)) |
2944 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree) |
2945 | +breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree(CHKInventory)) |
2946 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_meta_modification(InterTree(PreviewTree)) |
2947 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_modification(InterTree) |
2948 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename_and_modification(InterTree(PreviewTree)) |
2949 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree) |
2950 | breezy.tests.per_intertree.test_compare.TestCompare.test_file_rename(InterTree(PreviewTree)) |
2951 | breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterDirStateTree(C)) |
2952 | +breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterDirStateTree(PY)) |
2953 | breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree) |
2954 | +breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree(CHKInventory)) |
2955 | breezy.tests.per_intertree.test_compare.TestCompare.test_meta_modification(InterTree(PreviewTree)) |
2956 | breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(C)) |
2957 | breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterDirStateTree(PY)) |
2958 | breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree) |
2959 | +breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree(CHKInventory)) |
2960 | breezy.tests.per_intertree.test_compare.TestCompare.test_require_versioned(InterTree(PreviewTree)) |
2961 | breezy.tests.per_intertree.test_compare.TestCompare.test_unchanged_with_renames_and_modifications(InterTree) |
2962 | breezy.tests.per_intertree.test_compare.TestCompare.test_unchanged_with_renames_and_modifications(InterTree(PreviewTree)) |
2963 | @@ -4947,12 +4992,15 @@ |
2964 | breezy.tests.per_intertree.test_compare.TestCompare.test_unversioned_paths_in_tree(InterTree(PreviewTree)) |
2965 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterDirStateTree(C)) |
2966 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree) |
2967 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree(CHKInventory)) |
2968 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_a_only(InterTree(PreviewTree)) |
2969 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterDirStateTree(C)) |
2970 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree) |
2971 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree(CHKInventory)) |
2972 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty_b_only(InterTree(PreviewTree)) |
2973 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterDirStateTree(C)) |
2974 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree) |
2975 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree(CHKInventory)) |
2976 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_abc_content_to_empty(InterTree(PreviewTree)) |
2977 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(C)) |
2978 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_empty_trees(InterDirStateTree(PY)) |
2979 | @@ -4965,7 +5013,9 @@ |
2980 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterTree(CHKInventory)) |
2981 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_compare_subtrees(InterTree(PreviewTree)) |
2982 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_content_modification(InterDirStateTree(C)) |
2983 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_content_modification(InterDirStateTree(PY)) |
2984 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_content_modification(InterTree) |
2985 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_content_modification(InterTree(CHKInventory)) |
2986 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_content_modification(InterTree(PreviewTree)) |
2987 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterDirStateTree(C)) |
2988 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree) |
2989 | @@ -4983,13 +5033,16 @@ |
2990 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(C)) |
2991 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterDirStateTree(PY)) |
2992 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree) |
2993 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree(CHKInventory)) |
2994 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_specific_files(InterTree(PreviewTree)) |
2995 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_and_c_only(InterDirStateTree(C)) |
2996 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterDirStateTree(C)) |
2997 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterTree) |
2998 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterTree(CHKInventory)) |
2999 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content_a_only(InterTree(PreviewTree)) |
3000 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterDirStateTree(C)) |
3001 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree) |
3002 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree(CHKInventory)) |
3003 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_empty_to_abc_content(InterTree(PreviewTree)) |
3004 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(C)) |
3005 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterDirStateTree(PY)) |
3006 | @@ -4997,22 +5050,29 @@ |
3007 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(CHKInventory)) |
3008 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_becomes_unversionable_bug_438569(InterTree(PreviewTree)) |
3009 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterDirStateTree(C)) |
3010 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterDirStateTree(PY)) |
3011 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree) |
3012 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree(CHKInventory)) |
3013 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_meta_modification(InterTree(PreviewTree)) |
3014 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_modification(InterTree) |
3015 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename_and_modification(InterTree(PreviewTree)) |
3016 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree) |
3017 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_file_rename(InterTree(PreviewTree)) |
3018 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterDirStateTree(C)) |
3019 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterDirStateTree(PY)) |
3020 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree) |
3021 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree(CHKInventory)) |
3022 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_meta_modification(InterTree(PreviewTree)) |
3023 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterDirStateTree(C)) |
3024 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_and_renamed(InterTree(CHKInventory)) |
3025 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterDirStateTree(C)) |
3026 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterDirStateTree(PY)) |
3027 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree) |
3028 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree(CHKInventory)) |
3029 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_missing_in_target(InterTree(PreviewTree)) |
3030 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterDirStateTree(C)) |
3031 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree) |
3032 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree(CHKInventory)) |
3033 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_no_specific_files(InterTree(PreviewTree)) |
3034 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(C)) |
3035 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_source_and_missing(InterDirStateTree(PY)) |
3036 | @@ -5020,6 +5080,7 @@ |
3037 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_target_and_missing(InterDirStateTree(C)) |
3038 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_target_and_missing(InterTree(CHKInventory)) |
3039 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_target_missing_subtree_specific_bug_367632(InterDirStateTree(C)) |
3040 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_only_in_target_missing_subtree_specific_bug_367632(InterTree(CHKInventory)) |
3041 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterDirStateTree(C)) |
3042 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree) |
3043 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory)) |
3044 | @@ -5032,35 +5093,47 @@ |
3045 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_rename_over_deleted(InterTree(PreviewTree)) |
3046 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterDirStateTree(C)) |
3047 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterTree) |
3048 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterTree(CHKInventory)) |
3049 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents(InterTree(PreviewTree)) |
3050 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterDirStateTree(C)) |
3051 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterTree) |
3052 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterTree(CHKInventory)) |
3053 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_content_modification_grabs_parents_root_changes(InterTree(PreviewTree)) |
3054 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterDirStateTree(C)) |
3055 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterTree) |
3056 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterTree(CHKInventory)) |
3057 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_becomes_file(InterTree(PreviewTree)) |
3058 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterDirStateTree(C)) |
3059 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterTree) |
3060 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterTree(CHKInventory)) |
3061 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_collides_with_unselected_new(InterTree(PreviewTree)) |
3062 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterDirStateTree(C)) |
3063 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterTree) |
3064 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterTree(CHKInventory)) |
3065 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_child_dir_stops_being_dir(InterTree(PreviewTree)) |
3066 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterDirStateTree(C)) |
3067 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterTree) |
3068 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterTree(CHKInventory)) |
3069 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_old_parent_same_path_new_parent(InterTree(PreviewTree)) |
3070 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_dir_under_new_dir_reports_new_dir(InterTree) |
3071 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_dir_under_new_dir_reports_new_dir(InterTree(PreviewTree)) |
3072 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterDirStateTree(C)) |
3073 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterTree) |
3074 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterTree(CHKInventory)) |
3075 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_specific_with_rename_under_new_dir_reports_new_dir(InterTree(PreviewTree)) |
3076 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterDirStateTree(C)) |
3077 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree) |
3078 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree(CHKInventory)) |
3079 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_deleted_dir(InterTree(PreviewTree)) |
3080 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_trees_with_special_names(InterDirStateTree(C)) |
3081 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_tree_with_special_names(InterDirStateTree(C)) |
3082 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_tree_with_special_names(InterTree) |
3083 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_tree_with_special_names(InterTree(CHKInventory)) |
3084 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_tree_with_special_names(InterTree(PreviewTree)) |
3085 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterDirStateTree(C)) |
3086 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterDirStateTree(PY)) |
3087 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree) |
3088 | +breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree(CHKInventory)) |
3089 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_empty_dir(InterTree(PreviewTree)) |
3090 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C)) |
3091 | breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory)) |
3092 | @@ -5829,9 +5902,12 @@ |
3093 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_dir_link(RepositoryFormatKnitPack6RichRoot) |
3094 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_dir_link(RepositoryFormatPackDevelopment2Subtree) |
3095 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(GitRepositoryFormat) |
3096 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat2a) |
3097 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat2aSubtree) |
3098 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat4) |
3099 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat5) |
3100 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat6) |
3101 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_dir(RepositoryFormat7) |
3102 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_link(RepositoryFormat2a) |
3103 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_link(RepositoryFormat2aSubtree) |
3104 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_link(RepositoryFormat4) |
3105 | @@ -5848,9 +5924,12 @@ |
3106 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_link(RepositoryFormatKnitPack6RichRoot) |
3107 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_file_link(RepositoryFormatPackDevelopment2Subtree) |
3108 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(GitRepositoryFormat) |
3109 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat2a) |
3110 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat2aSubtree) |
3111 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat4) |
3112 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat5) |
3113 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat6) |
3114 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_dir(RepositoryFormat7) |
3115 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_file(RepositoryFormat2a) |
3116 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_file(RepositoryFormat2aSubtree) |
3117 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_link_file(RepositoryFormat4) |
3118 | @@ -5887,6 +5966,8 @@ |
3119 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormat5) |
3120 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormat6) |
3121 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormat7) |
3122 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_revision_after_commit_dir_contents_unchanged(RepositoryFormat2a) |
3123 | +breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_revision_after_commit_dir_contents_unchanged(RepositoryFormat2aSubtree) |
3124 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormatKnitPack1) |
3125 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormatKnitPack3) |
3126 | breezy.tests.per_repository.test_commit_builder.TestCommitBuilder.test_last_modified_rev_after_content_unicode_link_changes(RepositoryFormatKnitPack4) |
3127 | @@ -6949,16 +7030,24 @@ |
3128 | breezy.tests.per_repository.test_refresh_data.TestRefreshData.test_refresh_data_write_locked(RepositoryFormatKnitPack6) |
3129 | breezy.tests.per_repository.test_refresh_data.TestRefreshData.test_refresh_data_write_locked(RepositoryFormatKnitPack6RichRoot) |
3130 | breezy.tests.per_repository.test_refresh_data.TestRefreshData.test_refresh_data_write_locked(RepositoryFormatPackDevelopment2Subtree) |
3131 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_directory(RepositoryFormat2a) |
3132 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_directory(RepositoryFormat2aSubtree) |
3133 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_directory(RepositoryFormat4) |
3134 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_directory(RepositoryFormat5) |
3135 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_directory(RepositoryFormat6) |
3136 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_directory(RepositoryFormat2a) |
3137 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_directory(RepositoryFormat2aSubtree) |
3138 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_directory(RepositoryFormat4) |
3139 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_directory(RepositoryFormat5) |
3140 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_directory(RepositoryFormat6) |
3141 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_file_in_unchanged_directory(RepositoryFormat4) |
3142 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_multiple_files(RepositoryFormat2a) |
3143 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_multiple_files(RepositoryFormat2aSubtree) |
3144 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_multiple_files(RepositoryFormat4) |
3145 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_multiple_files(RepositoryFormat5) |
3146 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_multiple_files(RepositoryFormat6) |
3147 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_unrelated(RepositoryFormat2a) |
3148 | +breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_unrelated(RepositoryFormat2aSubtree) |
3149 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_unrelated(RepositoryFormat4) |
3150 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_unrelated(RepositoryFormat5) |
3151 | breezy.tests.per_repository.test_repository.TestDeltaRevisionFiltered.test_unrelated(RepositoryFormat6) |
3152 | @@ -11446,29 +11535,68 @@ |
3153 | breezy.tests.per_tree.test_get_symlink_target.TestGetSymlinkTarget.test_get_unicode_symlink_target(WorkingTreeFormat5) |
3154 | breezy.tests.per_tree.test_get_symlink_target.TestGetSymlinkTarget.test_get_unicode_symlink_target(WorkingTreeFormat6) |
3155 | breezy.tests.per_tree.test_get_symlink_target.TestGetSymlinkTarget.test_get_unicode_symlink_target(WorkingTreeFormat6,remote) |
3156 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(DirStateRevisionTree,WT4) |
3157 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(DirStateRevisionTree,WT5) |
3158 | breezy.tests.per_tree.test_ids.IdTests.test_id2path(GitWorkingTreeFormat) |
3159 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(PreviewTree) |
3160 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(PreviewTreePost) |
3161 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(RevisionTree) |
3162 | breezy.tests.per_tree.test_ids.IdTests.test_id2path(WorkingTreeFormat2) |
3163 | breezy.tests.per_tree.test_ids.IdTests.test_id2path(WorkingTreeFormat3) |
3164 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(WorkingTreeFormat4) |
3165 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(WorkingTreeFormat5) |
3166 | +breezy.tests.per_tree.test_ids.IdTests.test_id2path(WorkingTreeFormat6) |
3167 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(DirStateRevisionTree,WT4) |
3168 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(DirStateRevisionTree,WT5) |
3169 | breezy.tests.per_tree.test_ids.IdTests.test_path2id(GitWorkingTreeFormat) |
3170 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(DirStateRevisionTree,WT4) |
3171 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(DirStateRevisionTree,WT5) |
3172 | breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(GitWorkingTreeFormat) |
3173 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(RevisionTree) |
3174 | breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(WorkingTreeFormat2) |
3175 | breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(WorkingTreeFormat3) |
3176 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(WorkingTreeFormat4) |
3177 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(WorkingTreeFormat5) |
3178 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id_list(WorkingTreeFormat6) |
3179 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(RevisionTree) |
3180 | breezy.tests.per_tree.test_ids.IdTests.test_path2id(WorkingTreeFormat2) |
3181 | breezy.tests.per_tree.test_ids.IdTests.test_path2id(WorkingTreeFormat3) |
3182 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(WorkingTreeFormat4) |
3183 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(WorkingTreeFormat5) |
3184 | +breezy.tests.per_tree.test_ids.IdTests.test_path2id(WorkingTreeFormat6) |
3185 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_invalid_child(WorkingTreeFormat2) |
3186 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_invalid_child(WorkingTreeFormat3) |
3187 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_before_commit(WorkingTreeFormat2) |
3188 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_before_commit(WorkingTreeFormat3) |
3189 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_dir(WorkingTreeFormat2) |
3190 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_dir(WorkingTreeFormat3) |
3191 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(DirStateRevisionTree,WT4) |
3192 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(DirStateRevisionTree,WT5) |
3193 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(PreviewTree) |
3194 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(PreviewTreePost) |
3195 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(RevisionTree) |
3196 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(WorkingTreeFormat2) |
3197 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(WorkingTreeFormat3) |
3198 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(WorkingTreeFormat4) |
3199 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(WorkingTreeFormat5) |
3200 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_invalid_all(WorkingTreeFormat6) |
3201 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(DirStateRevisionTree,WT4) |
3202 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(DirStateRevisionTree,WT5) |
3203 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(PreviewTree) |
3204 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(PreviewTreePost) |
3205 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(RevisionTree) |
3206 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(WorkingTreeFormat2) |
3207 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(WorkingTreeFormat3) |
3208 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(WorkingTreeFormat4) |
3209 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(WorkingTreeFormat5) |
3210 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path_root(WorkingTreeFormat6) |
3211 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path(WorkingTreeFormat2) |
3212 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_path(WorkingTreeFormat3) |
3213 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(DirStateRevisionTree,WT4) |
3214 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(DirStateRevisionTree,WT5) |
3215 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(PreviewTree) |
3216 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(PreviewTreePost) |
3217 | +breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(RevisionTree) |
3218 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(WorkingTreeFormat2) |
3219 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(WorkingTreeFormat3) |
3220 | breezy.tests.per_tree.test_inv.TestInventory.test_canonical_tree_name_mismatch(WorkingTreeFormat4) |
3221 | @@ -11485,6 +11613,7 @@ |
3222 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_forget_old(WorkingTreeFormat4) |
3223 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_forget_old(WorkingTreeFormat5) |
3224 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_forget_old(WorkingTreeFormat6) |
3225 | +breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_recursive(RevisionTree) |
3226 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_recursive(WorkingTreeFormat2) |
3227 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_recursive(WorkingTreeFormat3) |
3228 | breezy.tests.per_tree.test_inv.TestInventory.test_paths2ids_recursive(WorkingTreeFormat4) |
3229 | @@ -11503,16 +11632,22 @@ |
3230 | breezy.tests.per_tree.test_iter_search_rules.TestIterSearchRules.test_iter_search_rules_no_tree(WorkingTreeFormat5) |
3231 | breezy.tests.per_tree.test_iter_search_rules.TestIterSearchRules.test_iter_search_rules_no_tree(WorkingTreeFormat6) |
3232 | breezy.tests.per_tree.test_iter_search_rules.TestIterSearchRules.test_iter_search_rules_no_tree(WorkingTreeFormat6,remote) |
3233 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir_no_recurse(RevisionTree) |
3234 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir_no_recurse(WorkingTreeFormat2) |
3235 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir_no_recurse(WorkingTreeFormat3) |
3236 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir(RevisionTree) |
3237 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir(WorkingTreeFormat2) |
3238 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_from_dir(WorkingTreeFormat3) |
3239 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root_no_recurse(RevisionTree) |
3240 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root_no_recurse(WorkingTreeFormat2) |
3241 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root_no_recurse(WorkingTreeFormat3) |
3242 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root(RevisionTree) |
3243 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root(WorkingTreeFormat2) |
3244 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_no_root(WorkingTreeFormat3) |
3245 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root_no_recurse(RevisionTree) |
3246 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root_no_recurse(WorkingTreeFormat2) |
3247 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root_no_recurse(WorkingTreeFormat3) |
3248 | +breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root(RevisionTree) |
3249 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root(WorkingTreeFormat2) |
3250 | breezy.tests.per_tree.test_list_files.TestListFiles.test_list_files_with_root(WorkingTreeFormat3) |
3251 | breezy.tests.per_tree.test_locking.TestLocking.test_lock_read(DirStateRevisionTree,WT4) |
3252 | @@ -11609,9 +11744,11 @@ |
3253 | breezy.tests.per_tree.test_revision_tree.TestRevisionTree.test_get_random_tree_raises(WorkingTreeFormat6) |
3254 | breezy.tests.per_tree.test_revision_tree.TestRevisionTree.test_get_random_tree_raises(WorkingTreeFormat6,remote) |
3255 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_2_no_parents(PreviewTree) |
3256 | +breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_2_no_parents(RevisionTree) |
3257 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_2_no_parents(WorkingTreeFormat2) |
3258 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_2_no_parents(WorkingTreeFormat3) |
3259 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_3_no_parents(PreviewTree) |
3260 | +breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_3_no_parents(RevisionTree) |
3261 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_3_no_parents(WorkingTreeFormat2) |
3262 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_3_no_parents(WorkingTreeFormat3) |
3263 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_4_no_parents(WorkingTreeFormat2) |
3264 | @@ -11623,6 +11760,7 @@ |
3265 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_6_no_parents(WorkingTreeFormat2) |
3266 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_content_6_no_parents(WorkingTreeFormat3) |
3267 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_no_parents(PreviewTree) |
3268 | +breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_no_parents(RevisionTree) |
3269 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_no_parents(WorkingTreeFormat2) |
3270 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_abc_tree_no_parents(WorkingTreeFormat3) |
3271 | breezy.tests.per_tree.test_test_trees.TestTreeShapes.test_empty_tree_no_parents(DirStateRevisionTree,WT4) |
3272 | @@ -11666,13 +11804,20 @@ |
3273 | breezy.tests.per_tree.test_tree.TestExtras.test_extras(RevisionTree) |
3274 | breezy.tests.per_tree.test_tree.TestExtras.test_extras(WorkingTreeFormat2) |
3275 | breezy.tests.per_tree.test_tree.TestExtras.test_extras(WorkingTreeFormat3) |
3276 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(DirStateRevisionTree,WT4) |
3277 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(DirStateRevisionTree,WT5) |
3278 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(PreviewTree) |
3279 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(RevisionTree) |
3280 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat2) |
3281 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat3) |
3282 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat4) |
3283 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat5) |
3284 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat6) |
3285 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_context_manager(WorkingTreeFormat6,remote) |
3286 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(DirStateRevisionTree,WT4) |
3287 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(DirStateRevisionTree,WT5) |
3288 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(DirStateRevisionTree,WT4) |
3289 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(DirStateRevisionTree,WT5) |
3290 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines_multi_line_breaks(DirStateRevisionTree,WT4) |
3291 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines_multi_line_breaks(DirStateRevisionTree,WT5) |
3292 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines_multi_line_breaks(PreviewTree) |
3293 | @@ -11684,6 +11829,7 @@ |
3294 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines_multi_line_breaks(WorkingTreeFormat6) |
3295 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines_multi_line_breaks(WorkingTreeFormat6,remote) |
3296 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(PreviewTree) |
3297 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(RevisionTree) |
3298 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(WorkingTreeFormat2) |
3299 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(WorkingTreeFormat3) |
3300 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(WorkingTreeFormat4) |
3301 | @@ -11691,7 +11837,11 @@ |
3302 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(WorkingTreeFormat6) |
3303 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_lines(WorkingTreeFormat6,remote) |
3304 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(PreviewTree) |
3305 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(RevisionTree) |
3306 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(DirStateRevisionTree,WT4) |
3307 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(DirStateRevisionTree,WT5) |
3308 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(PreviewTree) |
3309 | +breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(RevisionTree) |
3310 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(WorkingTreeFormat2) |
3311 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(WorkingTreeFormat3) |
3312 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file_text(WorkingTreeFormat4) |
3313 | @@ -11704,12 +11854,16 @@ |
3314 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(WorkingTreeFormat5) |
3315 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(WorkingTreeFormat6) |
3316 | breezy.tests.per_tree.test_tree.TestFileContent.test_get_file(WorkingTreeFormat6,remote) |
3317 | +breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(RevisionTree) |
3318 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat2) |
3319 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat3) |
3320 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat4) |
3321 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat5) |
3322 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat6) |
3323 | breezy.tests.per_tree.test_tree.TestFileIds.test_all_file_ids(WorkingTreeFormat6,remote) |
3324 | +breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(DirStateRevisionTree,WT4) |
3325 | +breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(DirStateRevisionTree,WT5) |
3326 | +breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(RevisionTree) |
3327 | breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(WorkingTreeFormat2) |
3328 | breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(WorkingTreeFormat3) |
3329 | breezy.tests.per_tree.test_tree.TestFileIds.test_id2path(WorkingTreeFormat4) |
3330 | @@ -11748,8 +11902,10 @@ |
3331 | breezy.tests.per_tree.test_tree.TestIterChildEntries.test_does_not_exist(WorkingTreeFormat5) |
3332 | breezy.tests.per_tree.test_tree.TestIterChildEntries.test_does_not_exist(WorkingTreeFormat6) |
3333 | breezy.tests.per_tree.test_tree.TestIterChildEntries.test_does_not_exist(WorkingTreeFormat6,remote) |
3334 | +breezy.tests.per_tree.test_tree.TestIterChildEntries.test_iteration_order(RevisionTree) |
3335 | breezy.tests.per_tree.test_tree.TestIterChildEntries.test_iteration_order(WorkingTreeFormat2) |
3336 | breezy.tests.per_tree.test_tree.TestIterChildEntries.test_iteration_order(WorkingTreeFormat3) |
3337 | +breezy.tests.per_tree.test_tree.TestIterEntriesByDir.test_iteration_order(RevisionTree) |
3338 | breezy.tests.per_tree.test_tree.TestIterEntriesByDir.test_iteration_order(WorkingTreeFormat2) |
3339 | breezy.tests.per_tree.test_tree.TestIterEntriesByDir.test_iteration_order(WorkingTreeFormat3) |
3340 | breezy.tests.per_tree.test_tree.TestPlanFileMerge.test_plan_file_merge(RevisionTree) |
3341 | @@ -11794,6 +11950,9 @@ |
3342 | breezy.tests.per_tree.test_tree.TestReference.test_iter_references(WorkingTreeFormat5) |
3343 | breezy.tests.per_tree.test_tree.TestReference.test_iter_references(WorkingTreeFormat6) |
3344 | breezy.tests.per_tree.test_tree.TestReference.test_iter_references(WorkingTreeFormat6,remote) |
3345 | +breezy.tests.per_tree.test_tree.TestStoredKind.test_stored_kind(DirStateRevisionTree,WT4) |
3346 | +breezy.tests.per_tree.test_tree.TestStoredKind.test_stored_kind(DirStateRevisionTree,WT5) |
3347 | +breezy.tests.per_tree.test_tree.TestStoredKind.test_stored_kind(RevisionTree) |
3348 | breezy.tests.per_tree.test_tree.TestStoredKind.test_stored_kind(WorkingTreeFormat2) |
3349 | breezy.tests.per_tree.test_tree.TestStoredKind.test_stored_kind(WorkingTreeFormat3) |
3350 | breezy.tests.per_tree.test_tree.TestSupportsRenameTracking.test_supports_rename_tracking(DirStateRevisionTree,WT4) |
3351 | @@ -12382,8 +12541,14 @@ |
3352 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(GitWorkingTreeFormat) |
3353 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(WorkingTreeFormat2) |
3354 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(WorkingTreeFormat3) |
3355 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(WorkingTreeFormat4) |
3356 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(WorkingTreeFormat5) |
3357 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis_with_file_ids(WorkingTreeFormat6) |
3358 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis(WorkingTreeFormat2) |
3359 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis(WorkingTreeFormat3) |
3360 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis(WorkingTreeFormat4) |
3361 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis(WorkingTreeFormat5) |
3362 | +breezy.tests.per_workingtree.test_add.TestAdd.test_add_present_in_basis(WorkingTreeFormat6) |
3363 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_previously_added_with_file_id(GitWorkingTreeFormat) |
3364 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_previously_added_with_file_id(WorkingTreeFormat2) |
3365 | breezy.tests.per_workingtree.test_add.TestAdd.test_add_previously_added_with_file_id(WorkingTreeFormat3) |
3366 | @@ -12454,8 +12619,14 @@ |
3367 | breezy.tests.per_workingtree.test_break_lock.TestBreakLock.test_unlocked(WorkingTreeFormat6,remote) |
3368 | breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown_specific_file(WorkingTreeFormat2) |
3369 | breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown_specific_file(WorkingTreeFormat3) |
3370 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown_specific_file(WorkingTreeFormat4) |
3371 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown_specific_file(WorkingTreeFormat5) |
3372 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown_specific_file(WorkingTreeFormat6) |
3373 | breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown(WorkingTreeFormat2) |
3374 | breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown(WorkingTreeFormat3) |
3375 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown(WorkingTreeFormat4) |
3376 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown(WorkingTreeFormat5) |
3377 | +breezy.tests.per_workingtree.test_changes_from.TestChangesFrom.test_unknown(WorkingTreeFormat6) |
3378 | breezy.tests.per_workingtree.test_check_state.TestCheckState.test_check_broken_dirstate(GitWorkingTreeFormat) |
3379 | breezy.tests.per_workingtree.test_check_state.TestCheckState.test_check_broken_dirstate(WorkingTreeFormat2) |
3380 | breezy.tests.per_workingtree.test_check_state.TestCheckState.test_check_broken_dirstate(WorkingTreeFormat3) |
3381 | @@ -12501,6 +12672,9 @@ |
3382 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_shows_pre_hook_names(WorkingTreeFormat6) |
3383 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_steps(WorkingTreeFormat2) |
3384 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_steps(WorkingTreeFormat3) |
3385 | +breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_steps(WorkingTreeFormat4) |
3386 | +breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_steps(WorkingTreeFormat5) |
3387 | +breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_commit_progress_steps(WorkingTreeFormat6) |
3388 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_post_commit_hook(WorkingTreeFormat2) |
3389 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_post_commit_hook(WorkingTreeFormat3) |
3390 | breezy.tests.per_workingtree.test_commit.TestCommitProgress.test_post_commit_hook(WorkingTreeFormat4) |
3391 | @@ -12521,8 +12695,14 @@ |
3392 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_aborted_does_not_apply_automatic_changes_bug_282402(WorkingTreeFormat6,remote) |
3393 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_and_files_updates_workingtree(WorkingTreeFormat2) |
3394 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_and_files_updates_workingtree(WorkingTreeFormat3) |
3395 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_and_files_updates_workingtree(WorkingTreeFormat4) |
3396 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_and_files_updates_workingtree(WorkingTreeFormat5) |
3397 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_and_files_updates_workingtree(WorkingTreeFormat6) |
3398 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_with_removed(WorkingTreeFormat2) |
3399 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_with_removed(WorkingTreeFormat3) |
3400 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_with_removed(WorkingTreeFormat4) |
3401 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_with_removed(WorkingTreeFormat5) |
3402 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_deleted_subtree_with_removed(WorkingTreeFormat6) |
3403 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_exclude_changed_is_pointless(WorkingTreeFormat2) |
3404 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_exclude_changed_is_pointless(WorkingTreeFormat3) |
3405 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_exclude_changed_is_pointless(WorkingTreeFormat4) |
3406 | @@ -12539,6 +12719,9 @@ |
3407 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_pending_merge_fails(WorkingTreeFormat6) |
3408 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_subtree_of_selected(WorkingTreeFormat2) |
3409 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_subtree_of_selected(WorkingTreeFormat3) |
3410 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_subtree_of_selected(WorkingTreeFormat4) |
3411 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_subtree_of_selected(WorkingTreeFormat5) |
3412 | +breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_exclude_subtree_of_selected(WorkingTreeFormat6) |
3413 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_local_unbound(GitWorkingTreeFormat) |
3414 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_local_unbound(WorkingTreeFormat2) |
3415 | breezy.tests.per_workingtree.test_commit.TestCommit.test_commit_local_unbound(WorkingTreeFormat3) |
3416 | @@ -12834,6 +13017,10 @@ |
3417 | breezy.tests.per_workingtree.test_executable.TestExecutable.test_commit_with_exec_from_basis(WorkingTreeFormat6) |
3418 | breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat2) |
3419 | breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat3) |
3420 | +breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat4) |
3421 | +breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat5) |
3422 | +breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat6) |
3423 | +breezy.tests.per_workingtree.test_executable.TestExecutable.test_use_exec_from_basis(WorkingTreeFormat6,remote) |
3424 | breezy.tests.per_workingtree.test_flush.TestFlush.test_flush_fresh_tree(GitWorkingTreeFormat) |
3425 | breezy.tests.per_workingtree.test_flush.TestFlush.test_flush_fresh_tree(WorkingTreeFormat2) |
3426 | breezy.tests.per_workingtree.test_flush.TestFlush.test_flush_fresh_tree(WorkingTreeFormat3) |
3427 | @@ -12933,6 +13120,8 @@ |
3428 | breezy.tests.per_workingtree.test_inv.TestApplyInventoryDelta.test_rename_swap(WorkingTreeFormat6) |
3429 | breezy.tests.per_workingtree.test_inv.TestApplyInventoryDelta.test_rename_swap(WorkingTreeFormat6,remote) |
3430 | breezy.tests.per_workingtree.test_inv.TestApplyInventoryDelta.test_replace_root(GitWorkingTreeFormat) |
3431 | +breezy.tests.per_workingtree.test_inv.TestApplyInventoryDelta.test_replace_root(WorkingTreeFormat2) |
3432 | +breezy.tests.per_workingtree.test_inv.TestApplyInventoryDelta.test_replace_root(WorkingTreeFormat3) |
3433 | breezy.tests.per_workingtree.test_inv.TestRevert.test_dangling_id(WorkingTreeFormat2) |
3434 | breezy.tests.per_workingtree.test_inv.TestRevert.test_dangling_id(WorkingTreeFormat3) |
3435 | breezy.tests.per_workingtree.test_inv.TestTreeReference.test_tree_reference_matches_inv(WorkingTreeFormat2) |
3436 | @@ -13152,6 +13341,9 @@ |
3437 | breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self_root(WorkingTreeFormat6) |
3438 | breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self(WorkingTreeFormat2) |
3439 | breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self(WorkingTreeFormat3) |
3440 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self(WorkingTreeFormat4) |
3441 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self(WorkingTreeFormat5) |
3442 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_onto_self(WorkingTreeFormat6) |
3443 | breezy.tests.per_workingtree.test_move.TestMove.test_move_over_deleted(WorkingTreeFormat2) |
3444 | breezy.tests.per_workingtree.test_move.TestMove.test_move_over_deleted(WorkingTreeFormat3) |
3445 | breezy.tests.per_workingtree.test_move.TestMove.test_move_parent_dir(WorkingTreeFormat2) |
3446 | @@ -13175,6 +13367,9 @@ |
3447 | breezy.tests.per_workingtree.test_move.TestMove.test_move_unversioned(WorkingTreeFormat6) |
3448 | breezy.tests.per_workingtree.test_move.TestMove.test_move_via_rm_and_add(WorkingTreeFormat2) |
3449 | breezy.tests.per_workingtree.test_move.TestMove.test_move_via_rm_and_add(WorkingTreeFormat3) |
3450 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_via_rm_and_add(WorkingTreeFormat4) |
3451 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_via_rm_and_add(WorkingTreeFormat5) |
3452 | +breezy.tests.per_workingtree.test_move.TestMove.test_move_via_rm_and_add(WorkingTreeFormat6) |
3453 | breezy.tests.per_workingtree.test_nested_specifics.TestNestedSupport.test_comparison_data_does_not_autodetect_subtree(WorkingTreeFormat2) |
3454 | breezy.tests.per_workingtree.test_nested_specifics.TestNestedSupport.test_comparison_data_does_not_autodetect_subtree(WorkingTreeFormat3) |
3455 | breezy.tests.per_workingtree.test_nested_specifics.TestNestedSupport.test_comparison_data_does_not_autodetect_subtree(WorkingTreeFormat4) |
3456 | @@ -13435,6 +13630,9 @@ |
3457 | breezy.tests.per_workingtree.test_put_file.TestPutFileBytesNonAtomic.test_put_new_file(WorkingTreeFormat5) |
3458 | breezy.tests.per_workingtree.test_put_file.TestPutFileBytesNonAtomic.test_put_new_file(WorkingTreeFormat6) |
3459 | breezy.tests.per_workingtree.test_put_file.TestPutFileBytesNonAtomic.test_put_new_file(WorkingTreeFormat6,remote) |
3460 | +breezy.tests.per_workingtree.test_readonly.TestReadonly.test_readonly_unclean(WorkingTreeFormat4) |
3461 | +breezy.tests.per_workingtree.test_readonly.TestReadonly.test_readonly_unclean(WorkingTreeFormat5) |
3462 | +breezy.tests.per_workingtree.test_readonly.TestReadonly.test_readonly_unclean(WorkingTreeFormat6) |
3463 | breezy.tests.per_workingtree.test_read_working_inventory.TestReadWorkingInventory.test_read_after_inventory_modification(GitWorkingTreeFormat) |
3464 | breezy.tests.per_workingtree.test_read_working_inventory.TestReadWorkingInventory.test_read_after_inventory_modification(WorkingTreeFormat2) |
3465 | breezy.tests.per_workingtree.test_read_working_inventory.TestReadWorkingInventory.test_read_after_inventory_modification(WorkingTreeFormat3) |
3466 | @@ -13455,6 +13653,9 @@ |
3467 | breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_changed_files(WorkingTreeFormat6,remote) |
3468 | breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_directory_with_unknowns(WorkingTreeFormat2) |
3469 | breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_directory_with_unknowns(WorkingTreeFormat3) |
3470 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_directory_with_unknowns(WorkingTreeFormat4) |
3471 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_directory_with_unknowns(WorkingTreeFormat5) |
3472 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_force_remove_directory_with_unknowns(WorkingTreeFormat6) |
3473 | breezy.tests.per_workingtree.test_remove.TestRemove.test_non_cwd(WorkingTreeFormat2) |
3474 | breezy.tests.per_workingtree.test_remove.TestRemove.test_non_cwd(WorkingTreeFormat3) |
3475 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_absent_directory(WorkingTreeFormat2) |
3476 | @@ -13463,8 +13664,15 @@ |
3477 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_added_files(WorkingTreeFormat3) |
3478 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_file(WorkingTreeFormat2) |
3479 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_file(WorkingTreeFormat3) |
3480 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_file(WorkingTreeFormat4) |
3481 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_file(WorkingTreeFormat5) |
3482 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_file(WorkingTreeFormat6) |
3483 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat2) |
3484 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat3) |
3485 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat4) |
3486 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat5) |
3487 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat6) |
3488 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_changed_ignored_files(WorkingTreeFormat6,remote) |
3489 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_deleted_files(WorkingTreeFormat2) |
3490 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_deleted_files(WorkingTreeFormat3) |
3491 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_dir_before_bzr(WorkingTreeFormat2) |
3492 | @@ -13477,8 +13685,14 @@ |
3493 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_directory_with_renames(WorkingTreeFormat3) |
3494 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_file_and_containing_dir(WorkingTreeFormat2) |
3495 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_file_and_containing_dir(WorkingTreeFormat3) |
3496 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_file_and_containing_dir(WorkingTreeFormat4) |
3497 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_file_and_containing_dir(WorkingTreeFormat5) |
3498 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_file_and_containing_dir(WorkingTreeFormat6) |
3499 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_force_directory_with_changed_file(WorkingTreeFormat2) |
3500 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_force_directory_with_changed_file(WorkingTreeFormat3) |
3501 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_force_directory_with_changed_file(WorkingTreeFormat4) |
3502 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_force_directory_with_changed_file(WorkingTreeFormat5) |
3503 | +breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_force_directory_with_changed_file(WorkingTreeFormat6) |
3504 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_keep_subtree(WorkingTreeFormat2) |
3505 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_keep_subtree(WorkingTreeFormat3) |
3506 | breezy.tests.per_workingtree.test_remove.TestRemove.test_remove_keep_subtree(WorkingTreeFormat4) |
3507 | @@ -13709,6 +13923,9 @@ |
3508 | breezy.tests.per_workingtree.test_smart_add.TestSmartAddTree.test_skip_nested_trees(WorkingTreeFormat6,remote) |
3509 | breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_dir_changes_to_symlink(WorkingTreeFormat2) |
3510 | breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_dir_changes_to_symlink(WorkingTreeFormat3) |
3511 | +breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_dir_changes_to_symlink(WorkingTreeFormat4) |
3512 | +breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_dir_changes_to_symlink(WorkingTreeFormat5) |
3513 | +breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_dir_changes_to_symlink(WorkingTreeFormat6) |
3514 | breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_symlink_changes_to_dir(WorkingTreeFormat2) |
3515 | breezy.tests.per_workingtree.test_symlinks.TestKindChanges.test_symlink_changes_to_dir(WorkingTreeFormat3) |
3516 | breezy.tests.per_workingtree.test_symlinks.TestOpenTree.test_open_containing_through_symlink(GitWorkingTreeFormat) |
3517 | @@ -14724,6 +14941,8 @@ |
3518 | breezy.tests.test_commit.TestCommit.test_commit_failed_signature |
3519 | breezy.tests.test_commit.TestCommit.test_commit_has_1ms_resolution |
3520 | breezy.tests.test_commit.TestCommit.test_commit_invokes_hooks |
3521 | +breezy.tests.test_commit.TestCommit.test_commit_kind_changes |
3522 | +breezy.tests.test_commit.TestCommit.test_commit_new_subdir_child_selective |
3523 | breezy.tests.test_commit.TestCommit.test_commit_no_author |
3524 | breezy.tests.test_commit.TestCommit.test_commit_object_doesnt_set_nick |
3525 | breezy.tests.test_commit.TestCommit.test_commit_removals_respects_filespec |
3526 | @@ -14741,6 +14960,7 @@ |
3527 | breezy.tests.test_commit.TestCommit.test_reused_rev_id |
3528 | breezy.tests.test_commit.TestCommit.test_safe_master_lock |
3529 | breezy.tests.test_commit.TestCommit.test_selected_file_merge_commit |
3530 | +breezy.tests.test_commit.TestCommit.test_selective_delete |
3531 | breezy.tests.test_commit.TestCommit.test_simple_commit |
3532 | breezy.tests.test_commit.TestCommit.test_strict_commit |
3533 | breezy.tests.test_config.EmailOptionTests.test_default_email_uses_EMAIL |
3534 | @@ -15644,6 +15864,8 @@ |
3535 | breezy.tests.test__dirstate_helpers.TestPackStat.test_giant_size(dirstate_Python) |
3536 | breezy.tests.test__dirstate_helpers.TestPackStat.test_negative_dev(dirstate_Python) |
3537 | breezy.tests.test__dirstate_helpers.TestProcessEntry.test_simple_changes(unicode,dirstate_Python) |
3538 | +breezy.tests.test__dirstate_helpers.TestReadDirblocks.test_smoketest(unicode) |
3539 | +breezy.tests.test__dirstate_helpers.TestReadDirblocks.test_trailing_garbage(unicode) |
3540 | breezy.tests.test__dirstate_helpers.TestUpdateEntry.test_update_entry_dir_unchanged(unicode,dirstate_Python) |
3541 | breezy.tests.test__dirstate_helpers.TestUpdateEntry.test_update_entry_dir(unicode,dirstate_Python) |
3542 | breezy.tests.test__dirstate_helpers.TestUsingCompiledIfAvailable.test_bisect_dirblock |
3543 | @@ -15654,14 +15876,62 @@ |
3544 | breezy.tests.test__dirstate_helpers.TestUsingCompiledIfAvailable.test__read_dirblocks |
3545 | breezy.tests.test__dirstate_helpers.TestUsingCompiledIfAvailable.test_update_entry |
3546 | breezy.tests.test_dirstate.TestDirStateHashUpdates.test_worth_saving_limit_avoids_writing(unicode) |
3547 | +breezy.tests.test_dirstate.TestDirStateInitialize.test_initialize(unicode) |
3548 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_directory_and_child_no_parents_all_data(unicode) |
3549 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_directory_to_root_no_parents_all_data(unicode) |
3550 | breezy.tests.test_dirstate.TestDirStateManipulations.test_add_forbidden_names(unicode) |
3551 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_path_to_root_no_parents_all_data(unicode) |
3552 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_path_to_unversioned_directory(unicode) |
3553 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_symlink_to_root_no_parents_all_data(unicode) |
3554 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_symlink_unicode_to_root_no_parents_all_data(unicode) |
3555 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_add_tree_reference(unicode) |
3556 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_set_parent_trees_no_content(unicode) |
3557 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_set_path_id_with_parents(unicode) |
3558 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_set_state_from_inventory_no_content_no_parents(unicode) |
3559 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_set_state_from_scratch_identical_parent(unicode) |
3560 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_set_state_from_scratch_no_parents(unicode) |
3561 | +breezy.tests.test_dirstate.TestDirStateManipulations.test_update_minimal_updates_id_index(unicode) |
3562 | breezy.tests.test_dirstate.TestDirStateOnFile.test_can_save_clean_on_file(unicode) |
3563 | +breezy.tests.test_dirstate.TestDirStateOnFile.test_construct_with_path(unicode) |
3564 | +breezy.tests.test_dirstate.TestDirStateOnFile.test_save_refuses_if_changes_aborted(unicode) |
3565 | +breezy.tests.test_dirstate.TestDirstateSortOrder.test_set_parent_trees_correct_order |
3566 | +breezy.tests.test_dirstate.TestDirstateValidation.test_validate_correct_dirstate(unicode) |
3567 | +breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_absent(unicode) |
3568 | +breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_all_subdir(unicode) |
3569 | breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_no_parents(unicode) |
3570 | +breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_one_parent(unicode) |
3571 | +breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_renamed(unicode) |
3572 | +breezy.tests.test_dirstate.TestDiscardMergeParents.test_discard_simple(unicode) |
3573 | breezy.tests.test_dirstate.TestErrors.test_dirstate_corrupt |
3574 | +breezy.tests.test_dirstate.TestGetEntry.test_complex_structure_exists(unicode) |
3575 | +breezy.tests.test_dirstate.TestGetEntry.test_complex_structure_missing(unicode) |
3576 | +breezy.tests.test_dirstate.TestGetEntry.test_get_entry_uninitialized(unicode) |
3577 | +breezy.tests.test_dirstate.TestGetEntry.test_simple_structure(unicode) |
3578 | +breezy.tests.test_dirstate.TestGetLines.test_entry_to_line(unicode) |
3579 | +breezy.tests.test_dirstate.TestGetLines.test_entry_to_line_with_parent(unicode) |
3580 | +breezy.tests.test_dirstate.TestGetLines.test_get_line_with_2_rows(unicode) |
3581 | breezy.tests.test_dirstate.TestGetLines.test_iter_entries(unicode) |
3582 | +breezy.tests.test_dirstate.Test_InvEntryToDetails.test_unicode_symlink |
3583 | +breezy.tests.test_dirstate.TestPackStat.test_pack_stat_float |
3584 | +breezy.tests.test_dirstate.TestPackStat.test_pack_stat_int |
3585 | breezy.tests.test_dirstate.TestSHA1Provider.test_defaultsha1provider_sha1 |
3586 | breezy.tests.test_dirstate.TestSHA1Provider.test_defaultsha1provider_stat_and_sha1 |
3587 | breezy.tests.test_dirstate.TestSHA1Provider.test_sha1provider_is_an_interface |
3588 | +breezy.tests.test_dirstate.TestTreeToDirState.test_1_parents_empty_to_dirstate(unicode) |
3589 | +breezy.tests.test_dirstate.TestTreeToDirState.test_2_parents_empty_to_dirstate(unicode) |
3590 | +breezy.tests.test_dirstate.TestTreeToDirState.test_colliding_fileids(unicode) |
3591 | +breezy.tests.test_dirstate.TestTreeToDirState.test_empty_to_dirstate(unicode) |
3592 | +breezy.tests.test_dirstate.TestTreeToDirState.test_empty_unknowns_are_ignored_to_dirstate(unicode) |
3593 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_invalid_changed_file |
3594 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_invalid_existing_id |
3595 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_invalid_file_not_present |
3596 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_invalid_new_id_same_path |
3597 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_invalid_parent_missing |
3598 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_remove_file_active_state_has_diff_file |
3599 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_remove_file_active_state_has_diff_file_and_file_elsewhere |
3600 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_remove_file_matching_active_state |
3601 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_remove_file_present_elsewhere_in_active_state |
3602 | +breezy.tests.test_dirstate.TestUpdateBasisByDelta.test_remove_file_present_in_active_state |
3603 | breezy.tests.test_email_message.TestEmailMessage.test_empty_message |
3604 | breezy.tests.test_email_message.TestEmailMessage.test_multipart_message_complex |
3605 | breezy.tests.test_email_message.TestEmailMessage.test_multipart_message_simple |
3606 | @@ -15783,6 +16053,8 @@ |
3607 | breezy.tests.test_export.TarExporterTests.test_tgz_ignores_dest_path |
3608 | breezy.tests.test_export.TarExporterTests.test_xz_stdout |
3609 | breezy.tests.test_export.TestDirExport.test_empty |
3610 | +breezy.tests.test_export.TestDirExport.test_to_existing_nonempty_dir_fail |
3611 | +breezy.tests.test_extract.TestExtract.test_bad_repo_format |
3612 | breezy.tests.test_export.TestDirExport.test_files_per_file_timestamps |
3613 | breezy.tests.test_export.TestDirExport.test_files_same_timestamp |
3614 | breezy.tests.test_export.TestDirExport.test_subdir_files_per_timestamps |
3615 | @@ -18761,6 +19033,8 @@ |
3616 | breezy.tests.test__simple_set.TestSimpleSet.test__sizeof__ |
3617 | breezy.tests.test_smart_add.TestAddActions.test__print |
3618 | breezy.tests.test_smart_add.TestAddActions.test_quiet |
3619 | +breezy.tests.test_smart_add.TestAddFrom.test_copy_all |
3620 | +breezy.tests.test_smart_add.TestAddFrom.test_copy_from_dir |
3621 | breezy.tests.test_smart_request.TestErrors.test_disabled_method |
3622 | breezy.tests.test_smart_request.TestJailHook.test_jail_hook |
3623 | breezy.tests.test_smart_request.TestJailHook.test_open_bzrdir_in_non_main_thread |
3624 | @@ -19395,6 +19669,9 @@ |
3625 | breezy.tests.test_tag.TestTagsInCheckouts.test_tag_copied_by_initial_checkout |
3626 | breezy.tests.test_tag.TestTagsInCheckouts.test_update_tag_into_checkout |
3627 | breezy.tests.test_tag.TestTagsInCheckouts.test_update_updates_tags |
3628 | +breezy.tests.test_testament.TestamentTestsStrict2.testament_class |
3629 | +breezy.tests.test_testament.TestamentTestsStrict.testament_class |
3630 | +breezy.tests.test_testament.TestamentTests.testament_class |
3631 | breezy.tests.test_test_server.TestTCPServerInAThread.test_client_talks_server_respond(TestingTCPServer) |
3632 | breezy.tests.test_test_server.TestTCPServerInAThread.test_client_talks_server_respond(TestingThreadingTCPServer) |
3633 | breezy.tests.test_test_server.TestTCPServerInAThread.test_exception_swallowed_while_serving(TestingTCPServer) |
3634 | @@ -19485,6 +19762,7 @@ |
3635 | breezy.tests.test_transactions.TestWriteTransaction.test_small_cache_with_references |
3636 | breezy.tests.test_transactions.TestWriteTransaction.test_writable |
3637 | breezy.tests.test_transform.TestBuildTree.test_build_tree_accelerator_tree_missing_file |
3638 | +breezy.tests.test_transform.TestBuildTree.test_build_tree_accelerator_wrong_kind |
3639 | breezy.tests.test_transform.TestBuildTree.test_build_tree_hardlinks_preserve_execute |
3640 | breezy.tests.test_transform.TestBuildTree.test_build_with_references |
3641 | breezy.tests.test_transform.TestCommitTransform.test_add_files |
3642 | @@ -19974,6 +20252,7 @@ |
3643 | breezy.tests.test_win32utils.TestWin32UtilsGlobExpand.test_empty_tree |
3644 | breezy.tests.test_win32utils.TestWin32UtilsGlobExpand.test_tree_ascii |
3645 | breezy.tests.test_win32utils.TestWin32UtilsGlobExpand.test_unicode_backslashes |
3646 | +breezy.tests.test_workingtree_4.TestWorkingTreeFormat4.test_commit_updates_hash_cache |
3647 | breezy.tests.test_workingtree_4.TestWorkingTreeFormat4.test_constructing_invalid_interdirstate_raises |
3648 | breezy.tests.test_workingtree_4.TestWorkingTreeFormat4.test_default_root_id |
3649 | breezy.tests.test_workingtree_4.TestWorkingTreeFormat4.test_dirstate_doesnt_cache_non_parent_trees |
Changes look good as far as I can see, two inline notes about passing tests update.