/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/per_workingtree/test_unversion.py

  • Committer: Jelmer Vernooij
  • Date: 2018-01-12 03:19:31 UTC
  • mfrom: (6842.2.1 unversion)
  • Revision ID: jelmer@jelmer.uk-20180112031931-4av9zqeo3rxdl0ns
Merge lp:~jelmer/brz/unversion.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
        # points later into the dirstate.
44
44
        tree = self.make_branch_and_tree('.')
45
45
        self.build_tree(['del/', 'del/sub/', 'del/sub/b'])
46
 
        tree.add(['del', 'del/sub', 'del/sub/b'], ['del', 'sub', 'b'])
 
46
        tree.add(['del', 'del/sub', 'del/sub/b'])
 
47
        b_id = tree.path2id('del/sub/b')
47
48
        tree.commit('setup')
48
49
        tree.rename_one('del/sub', 'sub')
49
 
        self.assertEqual('sub/b', tree.id2path('b'))
 
50
        self.assertEqual('sub/b', tree.id2path(b_id))
50
51
        tree.unversion(['del', 'sub/b'])
51
 
        self.assertRaises(errors.NoSuchId, tree.id2path, 'b')
 
52
        self.assertRaises(errors.NoSuchId, tree.id2path, b_id)
52
53
 
53
54
    def test_unversion_several_files(self):
54
55
        """After unversioning several files, they should not be versioned."""
55
56
        tree = self.make_branch_and_tree('.')
56
57
        self.build_tree(['a', 'b', 'c'])
57
 
        tree.add(['a', 'b', 'c'], ['a-id', 'b-id', 'c-id'])
 
58
        tree.add(['a', 'b', 'c'])
 
59
        a_id = tree.path2id('a')
 
60
        b_id = tree.path2id('b')
 
61
        c_id = tree.path2id('c')
58
62
        # within a lock unversion should take effect
59
63
        tree.lock_write()
60
64
        tree.unversion(['a', 'b'])
61
 
        self.assertFalse(tree.has_id('a-id'))
62
 
        self.assertFalse(tree.has_id('b-id'))
63
 
        self.assertTrue(tree.has_id('c-id'))
 
65
        self.assertFalse(tree.has_id(a_id))
 
66
        self.assertFalse(tree.has_id(b_id))
 
67
        self.assertTrue(tree.has_id(c_id))
64
68
        self.assertTrue(tree.has_filename('a'))
65
69
        self.assertTrue(tree.has_filename('b'))
66
70
        self.assertTrue(tree.has_filename('c'))
68
72
        # the changes should have persisted to disk - reopen the workingtree
69
73
        # to be sure.
70
74
        tree = tree.controldir.open_workingtree()
71
 
        tree.lock_read()
72
 
        self.assertFalse(tree.has_id('a-id'))
73
 
        self.assertFalse(tree.has_id('b-id'))
74
 
        self.assertTrue(tree.has_id('c-id'))
 
75
        self.addCleanup(tree.lock_read().unlock)
 
76
        self.assertFalse(tree.has_id(a_id))
 
77
        self.assertFalse(tree.has_id(b_id))
 
78
        self.assertTrue(tree.has_id(c_id))
75
79
        self.assertTrue(tree.has_filename('a'))
76
80
        self.assertTrue(tree.has_filename('b'))
77
81
        self.assertTrue(tree.has_filename('c'))
78
 
        tree.unlock()
79
82
 
80
83
    def test_unversion_subtree(self):
81
84
        """Unversioning the root of a subtree unversions the entire subtree."""
82
85
        tree = self.make_branch_and_tree('.')
83
86
        self.build_tree(['a/', 'a/b', 'c'])
84
 
        tree.add(['a', 'a/b', 'c'], ['a-id', 'b-id', 'c-id'])
 
87
        tree.add(['a', 'a/b', 'c'])
 
88
        a_id = tree.path2id('a')
 
89
        b_id = tree.path2id('a/b')
 
90
        c_id = tree.path2id('c')
85
91
        # within a lock unversion should take effect
86
92
        tree.lock_write()
87
93
        tree.unversion(['a'])
88
 
        self.assertFalse(tree.has_id('a-id'))
89
 
        self.assertFalse(tree.has_id('b-id'))
90
 
        self.assertTrue(tree.has_id('c-id'))
 
94
        self.assertFalse(tree.has_id(a_id))
 
95
        self.assertFalse(tree.has_id(b_id))
 
96
        self.assertTrue(tree.has_id(c_id))
91
97
        self.assertTrue(tree.has_filename('a'))
92
98
        self.assertTrue(tree.has_filename('a/b'))
93
99
        self.assertTrue(tree.has_filename('c'))
100
106
        """
101
107
        tree = self.make_branch_and_tree('.')
102
108
        self.build_tree(['a/', 'a/b', 'a/c', 'd'])
103
 
        tree.add(['a', 'a/b', 'a/c', 'd'], ['a-id', 'b-id', 'c-id', 'd-id'])
 
109
        tree.add(['a', 'a/b', 'a/c', 'd'])
 
110
        a_id = tree.path2id('a')
 
111
        b_id = tree.path2id('a/b')
 
112
        c_id = tree.path2id('a/c')
 
113
        d_id = tree.path2id('d')
104
114
        tree.lock_write()
105
115
        try:
106
116
            tree.unversion(['a/b', 'a'])
107
 
            self.assertFalse(tree.has_id('a-id'))
108
 
            self.assertFalse(tree.has_id('b-id'))
109
 
            self.assertFalse(tree.has_id('c-id'))
110
 
            self.assertTrue(tree.has_id('d-id'))
 
117
            self.assertFalse(tree.has_id(a_id))
 
118
            self.assertFalse(tree.has_id(b_id))
 
119
            self.assertFalse(tree.has_id(c_id))
 
120
            self.assertTrue(tree.has_id(d_id))
111
121
            # The files are still on disk
112
122
            self.assertTrue(tree.has_filename('a'))
113
123
            self.assertTrue(tree.has_filename('a/b'))
120
130
        tree = self.make_branch_and_tree('a')
121
131
        self.build_tree(['a/dir/', 'a/dir/f1', 'a/dir/f2', 'a/dir/f3',
122
132
                         'a/dir2/'])
123
 
        tree.add(['dir', 'dir/f1', 'dir/f2', 'dir/f3', 'dir2'],
124
 
                 ['dir-id', 'f1-id', 'f2-id', 'f3-id', 'dir2-id'])
 
133
        tree.add(['dir', 'dir/f1', 'dir/f2', 'dir/f3', 'dir2'])
 
134
        dir_id = tree.path2id('dir')
 
135
        dir2_id = tree.path2id('dir2')
 
136
        f1_id = tree.path2id('dir/f1')
 
137
        f2_id = tree.path2id('dir/f2')
 
138
        f3_id = tree.path2id('dir/f3')
125
139
        rev_id1 = tree.commit('init')
126
140
        # Start off by renaming entries, and then unversion a bunch of entries
127
141
        # https://bugs.launchpad.net/bzr/+bug/114615
137
151
        finally:
138
152
            tree.unlock()
139
153
        self.assertEqual([('', root_id),
140
 
                          ('dir', 'dir-id'),
141
 
                          ('dir2', 'dir2-id'),
142
 
                          ('dir/a', 'f1-id'),
143
 
                          ('dir/z', 'f2-id'),
144
 
                          ('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),
145
159
                         ], paths)
146
160
 
147
161
        tree.unversion({'dir'})
149
163
                 for path, ie in tree.iter_entries_by_dir()]
150
164
 
151
165
        self.assertEqual([('', root_id),
152
 
                          ('dir2', 'dir2-id'),
153
 
                          ('dir2/f3', 'f3-id'),
 
166
                          ('dir2', dir2_id),
 
167
                          ('dir2/f3', f3_id),
154
168
                         ], paths)
155
169
 
156
170
    def test_unversion_after_conflicted_merge(self):
157
171
        # Test for bug #114615
158
172
        tree_a = self.make_branch_and_tree('A')
159
173
        self.build_tree(['A/a/', 'A/a/m', 'A/a/n'])
160
 
        tree_a.add(['a', 'a/m', 'a/n'], ['a-id', 'm-id', 'n-id'])
 
174
        tree_a.add(['a', 'a/m', 'a/n'])
 
175
        a_id = tree_a.path2id('a')
 
176
        m_id = tree_a.path2id('a/m')
 
177
        n_id = tree_a.path2id('a/n')
161
178
        tree_a.commit('init')
162
179
 
163
180
        tree_a.lock_read()
168
185
 
169
186
        tree_b = tree_a.controldir.sprout('B').open_workingtree()
170
187
        self.build_tree(['B/xyz/'])
171
 
        tree_b.add(['xyz'], ['xyz-id'])
 
188
        tree_b.add(['xyz'])
 
189
        xyz_id = tree_b.path2id('xyz')
172
190
        tree_b.rename_one('a/m', 'xyz/m')
173
191
        tree_b.unversion(['a'])
174
192
        tree_b.commit('delete in B')
176
194
        paths = [(path, ie.file_id)
177
195
                 for path, ie in tree_b.iter_entries_by_dir()]
178
196
        self.assertEqual([('', root_id),
179
 
                          ('xyz', 'xyz-id'),
180
 
                          ('xyz/m', 'm-id'),
 
197
                          ('xyz', xyz_id),
 
198
                          ('xyz/m', m_id),
181
199
                         ], paths)
182
200
 
183
201
        self.build_tree_contents([('A/a/n', 'new contents for n\n')])
191
209
        paths = [(path, ie.file_id)
192
210
                 for path, ie in tree_b.iter_entries_by_dir()]
193
211
        self.assertEqual([('', root_id),
194
 
                          ('a', 'a-id'),
195
 
                          ('xyz', 'xyz-id'),
196
 
                          ('a/n.OTHER', 'n-id'),
197
 
                          ('xyz/m', 'm-id'),
 
212
                          ('a', a_id),
 
213
                          ('xyz', xyz_id),
 
214
                          ('a/n.OTHER', n_id),
 
215
                          ('xyz/m', m_id),
198
216
                         ], paths)
199
217
        tree_b.unversion(['a'])
200
218
        paths = [(path, ie.file_id)
201
219
                 for path, ie in tree_b.iter_entries_by_dir()]
202
220
        self.assertEqual([('', root_id),
203
 
                          ('xyz', 'xyz-id'),
204
 
                          ('xyz/m', 'm-id'),
 
221
                          ('xyz', xyz_id),
 
222
                          ('xyz/m', m_id),
205
223
                         ], paths)