Merge lp:~jelmer/brz/unversion into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 6844
Proposed branch: lp:~jelmer/brz/unversion
Merge into: lp:brz
Diff against target: 240 lines (+64/-44)
4 files modified
breezy/bzr/workingtree.py (+2/-1)
breezy/bzr/workingtree_4.py (+2/-1)
breezy/tests/per_workingtree/test_unversion.py (+58/-40)
breezy/workingtree.py (+2/-2)
To merge this branch: bzr merge lp:~jelmer/brz/unversion
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+335573@code.launchpad.net

Description of the change

Fix some unversion tests; update docs.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Looks good, one docstring issue inline.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/bzr/workingtree.py'
2--- breezy/bzr/workingtree.py 2017-12-19 22:38:08 +0000
3+++ breezy/bzr/workingtree.py 2017-12-23 13:26:23 +0000
4@@ -1430,7 +1430,8 @@
5
6 :param paths: The paths to stop versioning.
7 :param file_ids: Optional file_ids for the paths
8- :raises: NoSuchId if any fileid is not currently versioned.
9+ :raises NoSuchFile: if any path is not currently versioned.
10+ :raises NoSuchId: if any fileid is not currently versioned.
11 """
12 with self.lock_tree_write():
13 if file_ids is not None:
14
15=== modified file 'breezy/bzr/workingtree_4.py'
16--- breezy/bzr/workingtree_4.py 2017-12-03 21:10:43 +0000
17+++ breezy/bzr/workingtree_4.py 2017-12-23 13:26:23 +0000
18@@ -1224,7 +1224,8 @@
19 key[2] in ids_to_unversion):
20 # I haven't written the code to unversion / yet - it should be
21 # supported.
22- raise errors.BzrError('Unversioning the / is not currently supported')
23+ raise errors.BzrError(
24+ 'Unversioning the / is not currently supported')
25 block_index = 0
26 while block_index < len(state._dirblocks):
27 # process one directory at a time.
28
29=== modified file 'breezy/tests/per_workingtree/test_unversion.py'
30--- breezy/tests/per_workingtree/test_unversion.py 2017-11-17 03:06:50 +0000
31+++ breezy/tests/per_workingtree/test_unversion.py 2017-12-23 13:26:23 +0000
32@@ -43,24 +43,28 @@
33 # points later into the dirstate.
34 tree = self.make_branch_and_tree('.')
35 self.build_tree(['del/', 'del/sub/', 'del/sub/b'])
36- tree.add(['del', 'del/sub', 'del/sub/b'], ['del', 'sub', 'b'])
37+ tree.add(['del', 'del/sub', 'del/sub/b'])
38+ b_id = tree.path2id('del/sub/b')
39 tree.commit('setup')
40 tree.rename_one('del/sub', 'sub')
41- self.assertEqual('sub/b', tree.id2path('b'))
42+ self.assertEqual('sub/b', tree.id2path(b_id))
43 tree.unversion(['del', 'sub/b'])
44- self.assertRaises(errors.NoSuchId, tree.id2path, 'b')
45+ self.assertRaises(errors.NoSuchId, tree.id2path, b_id)
46
47 def test_unversion_several_files(self):
48 """After unversioning several files, they should not be versioned."""
49 tree = self.make_branch_and_tree('.')
50 self.build_tree(['a', 'b', 'c'])
51- tree.add(['a', 'b', 'c'], ['a-id', 'b-id', 'c-id'])
52+ tree.add(['a', 'b', 'c'])
53+ a_id = tree.path2id('a')
54+ b_id = tree.path2id('b')
55+ c_id = tree.path2id('c')
56 # within a lock unversion should take effect
57 tree.lock_write()
58 tree.unversion(['a', 'b'])
59- self.assertFalse(tree.has_id('a-id'))
60- self.assertFalse(tree.has_id('b-id'))
61- self.assertTrue(tree.has_id('c-id'))
62+ self.assertFalse(tree.has_id(a_id))
63+ self.assertFalse(tree.has_id(b_id))
64+ self.assertTrue(tree.has_id(c_id))
65 self.assertTrue(tree.has_filename('a'))
66 self.assertTrue(tree.has_filename('b'))
67 self.assertTrue(tree.has_filename('c'))
68@@ -68,26 +72,28 @@
69 # the changes should have persisted to disk - reopen the workingtree
70 # to be sure.
71 tree = tree.controldir.open_workingtree()
72- tree.lock_read()
73- self.assertFalse(tree.has_id('a-id'))
74- self.assertFalse(tree.has_id('b-id'))
75- self.assertTrue(tree.has_id('c-id'))
76+ self.addCleanup(tree.lock_read().unlock)
77+ self.assertFalse(tree.has_id(a_id))
78+ self.assertFalse(tree.has_id(b_id))
79+ self.assertTrue(tree.has_id(c_id))
80 self.assertTrue(tree.has_filename('a'))
81 self.assertTrue(tree.has_filename('b'))
82 self.assertTrue(tree.has_filename('c'))
83- tree.unlock()
84
85 def test_unversion_subtree(self):
86 """Unversioning the root of a subtree unversions the entire subtree."""
87 tree = self.make_branch_and_tree('.')
88 self.build_tree(['a/', 'a/b', 'c'])
89- tree.add(['a', 'a/b', 'c'], ['a-id', 'b-id', 'c-id'])
90+ tree.add(['a', 'a/b', 'c'])
91+ a_id = tree.path2id('a')
92+ b_id = tree.path2id('a/b')
93+ c_id = tree.path2id('c')
94 # within a lock unversion should take effect
95 tree.lock_write()
96 tree.unversion(['a'])
97- self.assertFalse(tree.has_id('a-id'))
98- self.assertFalse(tree.has_id('b-id'))
99- self.assertTrue(tree.has_id('c-id'))
100+ self.assertFalse(tree.has_id(a_id))
101+ self.assertFalse(tree.has_id(b_id))
102+ self.assertTrue(tree.has_id(c_id))
103 self.assertTrue(tree.has_filename('a'))
104 self.assertTrue(tree.has_filename('a/b'))
105 self.assertTrue(tree.has_filename('c'))
106@@ -100,14 +106,18 @@
107 """
108 tree = self.make_branch_and_tree('.')
109 self.build_tree(['a/', 'a/b', 'a/c', 'd'])
110- tree.add(['a', 'a/b', 'a/c', 'd'], ['a-id', 'b-id', 'c-id', 'd-id'])
111+ tree.add(['a', 'a/b', 'a/c', 'd'])
112+ a_id = tree.path2id('a')
113+ b_id = tree.path2id('a/b')
114+ c_id = tree.path2id('a/c')
115+ d_id = tree.path2id('d')
116 tree.lock_write()
117 try:
118 tree.unversion(['a/b', 'a'])
119- self.assertFalse(tree.has_id('a-id'))
120- self.assertFalse(tree.has_id('b-id'))
121- self.assertFalse(tree.has_id('c-id'))
122- self.assertTrue(tree.has_id('d-id'))
123+ self.assertFalse(tree.has_id(a_id))
124+ self.assertFalse(tree.has_id(b_id))
125+ self.assertFalse(tree.has_id(c_id))
126+ self.assertTrue(tree.has_id(d_id))
127 # The files are still on disk
128 self.assertTrue(tree.has_filename('a'))
129 self.assertTrue(tree.has_filename('a/b'))
130@@ -120,8 +130,12 @@
131 tree = self.make_branch_and_tree('a')
132 self.build_tree(['a/dir/', 'a/dir/f1', 'a/dir/f2', 'a/dir/f3',
133 'a/dir2/'])
134- tree.add(['dir', 'dir/f1', 'dir/f2', 'dir/f3', 'dir2'],
135- ['dir-id', 'f1-id', 'f2-id', 'f3-id', 'dir2-id'])
136+ tree.add(['dir', 'dir/f1', 'dir/f2', 'dir/f3', 'dir2'])
137+ dir_id = tree.path2id('dir')
138+ dir2_id = tree.path2id('dir2')
139+ f1_id = tree.path2id('dir/f1')
140+ f2_id = tree.path2id('dir/f2')
141+ f3_id = tree.path2id('dir/f3')
142 rev_id1 = tree.commit('init')
143 # Start off by renaming entries, and then unversion a bunch of entries
144 # https://bugs.launchpad.net/bzr/+bug/114615
145@@ -137,11 +151,11 @@
146 finally:
147 tree.unlock()
148 self.assertEqual([('', root_id),
149- ('dir', 'dir-id'),
150- ('dir2', 'dir2-id'),
151- ('dir/a', 'f1-id'),
152- ('dir/z', 'f2-id'),
153- ('dir2/f3', 'f3-id'),
154+ ('dir', dir_id),
155+ ('dir2', dir2_id),
156+ ('dir/a', f1_id),
157+ ('dir/z', f2_id),
158+ ('dir2/f3', f3_id),
159 ], paths)
160
161 tree.unversion({'dir'})
162@@ -149,15 +163,18 @@
163 for path, ie in tree.iter_entries_by_dir()]
164
165 self.assertEqual([('', root_id),
166- ('dir2', 'dir2-id'),
167- ('dir2/f3', 'f3-id'),
168+ ('dir2', dir2_id),
169+ ('dir2/f3', f3_id),
170 ], paths)
171
172 def test_unversion_after_conflicted_merge(self):
173 # Test for bug #114615
174 tree_a = self.make_branch_and_tree('A')
175 self.build_tree(['A/a/', 'A/a/m', 'A/a/n'])
176- tree_a.add(['a', 'a/m', 'a/n'], ['a-id', 'm-id', 'n-id'])
177+ tree_a.add(['a', 'a/m', 'a/n'])
178+ a_id = tree_a.path2id('a')
179+ m_id = tree_a.path2id('a/m')
180+ n_id = tree_a.path2id('a/n')
181 tree_a.commit('init')
182
183 tree_a.lock_read()
184@@ -168,7 +185,8 @@
185
186 tree_b = tree_a.controldir.sprout('B').open_workingtree()
187 self.build_tree(['B/xyz/'])
188- tree_b.add(['xyz'], ['xyz-id'])
189+ tree_b.add(['xyz'])
190+ xyz_id = tree_b.path2id('xyz')
191 tree_b.rename_one('a/m', 'xyz/m')
192 tree_b.unversion(['a'])
193 tree_b.commit('delete in B')
194@@ -176,8 +194,8 @@
195 paths = [(path, ie.file_id)
196 for path, ie in tree_b.iter_entries_by_dir()]
197 self.assertEqual([('', root_id),
198- ('xyz', 'xyz-id'),
199- ('xyz/m', 'm-id'),
200+ ('xyz', xyz_id),
201+ ('xyz/m', m_id),
202 ], paths)
203
204 self.build_tree_contents([('A/a/n', 'new contents for n\n')])
205@@ -191,15 +209,15 @@
206 paths = [(path, ie.file_id)
207 for path, ie in tree_b.iter_entries_by_dir()]
208 self.assertEqual([('', root_id),
209- ('a', 'a-id'),
210- ('xyz', 'xyz-id'),
211- ('a/n.OTHER', 'n-id'),
212- ('xyz/m', 'm-id'),
213+ ('a', a_id),
214+ ('xyz', xyz_id),
215+ ('a/n.OTHER', n_id),
216+ ('xyz/m', m_id),
217 ], paths)
218 tree_b.unversion(['a'])
219 paths = [(path, ie.file_id)
220 for path, ie in tree_b.iter_entries_by_dir()]
221 self.assertEqual([('', root_id),
222- ('xyz', 'xyz-id'),
223- ('xyz/m', 'm-id'),
224+ ('xyz', xyz_id),
225+ ('xyz/m', m_id),
226 ], paths)
227
228=== modified file 'breezy/workingtree.py'
229--- breezy/workingtree.py 2017-11-23 19:31:39 +0000
230+++ breezy/workingtree.py 2017-12-23 13:26:23 +0000
231@@ -920,8 +920,8 @@
232 When a path is unversioned, all of its children are automatically
233 unversioned.
234
235- :param paths: The file ids to stop versioning.
236- :raises: NoSuchFile if any fileid is not currently versioned.
237+ :param paths: The paths to stop versioning.
238+ :raises: NoSuchFileif any path is not currently versioned.
239 """
240 raise NotImplementedError(self.unversion)
241

Subscribers

People subscribed via source and target branches