~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

[merge] bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
 
48
48
    def test_simple_commit(self):
49
49
        """Commit and check two versions of a single file."""
50
 
        b = Branch.initialize('.')
 
50
        b = Branch.initialize(u'.')
51
51
        file('hello', 'w').write('hello world')
52
 
        b.add('hello')
 
52
        b.working_tree().add('hello')
53
53
        b.working_tree().commit(message='add hello')
54
54
        file_id = b.working_tree().path2id('hello')
55
55
 
71
71
 
72
72
    def test_delete_commit(self):
73
73
        """Test a commit with a deleted file"""
74
 
        b = Branch.initialize('.')
 
74
        b = Branch.initialize(u'.')
75
75
        file('hello', 'w').write('hello world')
76
 
        b.add(['hello'], ['hello-id'])
 
76
        b.working_tree().add(['hello'], ['hello-id'])
77
77
        b.working_tree().commit(message='add hello')
78
78
 
79
79
        os.remove('hello')
84
84
 
85
85
    def test_pointless_commit(self):
86
86
        """Commit refuses unless there are changes or it's forced."""
87
 
        b = Branch.initialize('.')
 
87
        b = Branch.initialize(u'.')
88
88
        file('hello', 'w').write('hello')
89
 
        b.add(['hello'])
 
89
        b.working_tree().add(['hello'])
90
90
        b.working_tree().commit(message='add hello')
91
91
        self.assertEquals(b.revno(), 1)
92
92
        self.assertRaises(PointlessCommit,
97
97
        
98
98
    def test_commit_empty(self):
99
99
        """Commiting an empty tree works."""
100
 
        b = Branch.initialize('.')
 
100
        b = Branch.initialize(u'.')
101
101
        b.working_tree().commit(message='empty tree', allow_pointless=True)
102
102
        self.assertRaises(PointlessCommit,
103
103
                          b.working_tree().commit,
109
109
 
110
110
    def test_selective_delete(self):
111
111
        """Selective commit in tree with deletions"""
112
 
        b = Branch.initialize('.')
 
112
        b = Branch.initialize(u'.')
113
113
        file('hello', 'w').write('hello')
114
114
        file('buongia', 'w').write('buongia')
115
 
        b.add(['hello', 'buongia'],
 
115
        b.working_tree().add(['hello', 'buongia'],
116
116
              ['hello-id', 'buongia-id'])
117
117
        b.working_tree().commit(message='add files',
118
118
                 rev_id='test@rev-1')
144
144
 
145
145
    def test_commit_rename(self):
146
146
        """Test commit of a revision where a file is renamed."""
147
 
        b = Branch.initialize('.')
 
147
        b = Branch.initialize(u'.')
 
148
        tree = WorkingTree(u'.', b)
148
149
        self.build_tree(['hello'], line_endings='binary')
149
 
        b.add(['hello'], ['hello-id'])
150
 
        b.working_tree().commit(message='one', rev_id='test@rev-1', allow_pointless=False)
 
150
        tree.add(['hello'], ['hello-id'])
 
151
        tree.commit(message='one', rev_id='test@rev-1', allow_pointless=False)
151
152
 
152
 
        b.rename_one('hello', 'fruity')
153
 
        b.working_tree().commit(message='renamed', rev_id='test@rev-2', allow_pointless=False)
 
153
        tree.rename_one('hello', 'fruity')
 
154
        tree.commit(message='renamed', rev_id='test@rev-2', allow_pointless=False)
154
155
 
155
156
        eq = self.assertEquals
156
157
        tree1 = b.revision_tree('test@rev-1')
168
169
        ie = tree2.inventory['hello-id']
169
170
        eq(ie.revision, 'test@rev-2')
170
171
 
171
 
 
172
172
    def test_reused_rev_id(self):
173
173
        """Test that a revision id cannot be reused in a branch"""
174
 
        b = Branch.initialize('.')
 
174
        b = Branch.initialize(u'.')
175
175
        b.working_tree().commit('initial', rev_id='test@rev-1', allow_pointless=True)
176
176
        self.assertRaises(Exception,
177
177
                          b.working_tree().commit,
178
178
                          message='reused id',
179
179
                          rev_id='test@rev-1',
180
180
                          allow_pointless=True)
181
 
                          
182
 
 
183
181
 
184
182
    def test_commit_move(self):
185
183
        """Test commit of revisions with moved files and directories"""
186
184
        eq = self.assertEquals
187
 
        b = Branch.initialize('.')
 
185
        b = Branch.initialize(u'.')
188
186
        r1 = 'test@rev-1'
189
187
        self.build_tree(['hello', 'a/', 'b/'])
190
 
        b.add(['hello', 'a', 'b'], ['hello-id', 'a-id', 'b-id'])
 
188
        b.working_tree().add(['hello', 'a', 'b'], ['hello-id', 'a-id', 'b-id'])
191
189
        b.working_tree().commit('initial', rev_id=r1, allow_pointless=False)
192
 
 
193
 
        b.move(['hello'], 'a')
 
190
        b.working_tree().move(['hello'], 'a')
194
191
        r2 = 'test@rev-2'
195
192
        b.working_tree().commit('two', rev_id=r2, allow_pointless=False)
196
193
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
197
194
                                   ['a', 'a/hello', 'b'])
198
195
 
199
 
        b.move(['b'], 'a')
 
196
        b.working_tree().move(['b'], 'a')
200
197
        r3 = 'test@rev-3'
201
198
        b.working_tree().commit('three', rev_id=r3, allow_pointless=False)
202
199
        self.check_inventory_shape(b.working_tree().read_working_inventory(),
204
201
        self.check_inventory_shape(b.get_revision_inventory(r3),
205
202
                                   ['a', 'a/hello', 'a/b'])
206
203
 
207
 
        b.move([os.sep.join(['a', 'hello'])],
 
204
        b.working_tree().move([os.sep.join(['a', 'hello'])],
208
205
               os.sep.join(['a', 'b']))
209
206
        r4 = 'test@rev-4'
210
207
        b.working_tree().commit('four', rev_id=r4, allow_pointless=False)
215
212
        eq(inv['hello-id'].revision, r4)
216
213
        eq(inv['a-id'].revision, r1)
217
214
        eq(inv['b-id'].revision, r3)
218
 
 
219
215
        
220
216
    def test_removed_commit(self):
221
217
        """Commit with a removed file"""
222
 
        b = Branch.initialize('.')
 
218
        b = Branch.initialize(u'.')
223
219
        wt = b.working_tree()
224
220
        file('hello', 'w').write('hello world')
225
 
        b.add(['hello'], ['hello-id'])
 
221
        b.working_tree().add(['hello'], ['hello-id'])
226
222
        b.working_tree().commit(message='add hello')
227
223
 
228
224
        wt = b.working_tree()  # FIXME: kludge for aliasing of working inventory
235
231
 
236
232
    def test_committed_ancestry(self):
237
233
        """Test commit appends revisions to ancestry."""
238
 
        b = Branch.initialize('.')
 
234
        b = Branch.initialize(u'.')
239
235
        rev_ids = []
240
236
        for i in range(4):
241
237
            file('hello', 'w').write((str(i) * 4) + '\n')
242
238
            if i == 0:
243
 
                b.add(['hello'], ['hello-id'])
 
239
                b.working_tree().add(['hello'], ['hello-id'])
244
240
            rev_id = 'test@rev-%d' % (i+1)
245
241
            rev_ids.append(rev_id)
246
242
            b.working_tree().commit(message='rev %d' % (i+1),
252
248
            eq(anc, [None] + rev_ids[:i+1])
253
249
 
254
250
    def test_commit_new_subdir_child_selective(self):
255
 
        b = Branch.initialize('.')
 
251
        b = Branch.initialize(u'.')
256
252
        self.build_tree(['dir/', 'dir/file1', 'dir/file2'])
257
 
        b.add(['dir', 'dir/file1', 'dir/file2'],
 
253
        b.working_tree().add(['dir', 'dir/file1', 'dir/file2'],
258
254
              ['dirid', 'file1id', 'file2id'])
259
255
        b.working_tree().commit('dir/file1', specific_files=['dir/file1'], rev_id='1')
260
256
        inv = b.get_inventory('1')
266
262
    def test_strict_commit(self):
267
263
        """Try and commit with unknown files and strict = True, should fail."""
268
264
        from bzrlib.errors import StrictCommitFailed
269
 
        b = Branch.initialize('.')
 
265
        b = Branch.initialize(u'.')
270
266
        file('hello', 'w').write('hello world')
271
 
        b.add('hello')
 
267
        b.working_tree().add('hello')
272
268
        file('goodbye', 'w').write('goodbye cruel world!')
273
269
        self.assertRaises(StrictCommitFailed, b.working_tree().commit,
274
270
            message='add hello but not goodbye', strict=True)
277
273
        """Try and commit with no unknown files and strict = True,
278
274
        should work."""
279
275
        from bzrlib.errors import StrictCommitFailed
280
 
        b = Branch.initialize('.')
 
276
        b = Branch.initialize(u'.')
281
277
        file('hello', 'w').write('hello world')
282
 
        b.add('hello')
 
278
        b.working_tree().add('hello')
283
279
        b.working_tree().commit(message='add hello', strict=True)
284
280
 
285
281
    def test_nonstrict_commit(self):
286
282
        """Try and commit with unknown files and strict = False, should work."""
287
 
        b = Branch.initialize('.')
 
283
        b = Branch.initialize(u'.')
288
284
        file('hello', 'w').write('hello world')
289
 
        b.add('hello')
 
285
        b.working_tree().add('hello')
290
286
        file('goodbye', 'w').write('goodbye cruel world!')
291
287
        b.working_tree().commit(message='add hello but not goodbye', strict=False)
292
288
 
293
289
    def test_nonstrict_commit_without_unknowns(self):
294
290
        """Try and commit with no unknown files and strict = False,
295
291
        should work."""
296
 
        b = Branch.initialize('.')
 
292
        b = Branch.initialize(u'.')
297
293
        file('hello', 'w').write('hello world')
298
 
        b.add('hello')
 
294
        b.working_tree().add('hello')
299
295
        b.working_tree().commit(message='add hello', strict=False)
300
296
 
301
297
    def test_signed_commit(self):
302
298
        import bzrlib.gpg
303
299
        import bzrlib.commit as commit
304
300
        oldstrategy = bzrlib.gpg.GPGStrategy
305
 
        branch = Branch.initialize('.')
 
301
        branch = Branch.initialize(u'.')
306
302
        branch.working_tree().commit("base", allow_pointless=True, rev_id='A')
307
303
        self.failIf(branch.revision_store.has_id('A', 'sig'))
308
304
        try:
321
317
        import bzrlib.gpg
322
318
        import bzrlib.commit as commit
323
319
        oldstrategy = bzrlib.gpg.GPGStrategy
324
 
        branch = Branch.initialize('.')
 
320
        branch = Branch.initialize(u'.')
325
321
        branch.working_tree().commit("base", allow_pointless=True, rev_id='A')
326
322
        self.failIf(branch.revision_store.has_id('A', 'sig'))
327
323
        try:
334
330
                              branch, "base",
335
331
                              allow_pointless=True,
336
332
                              rev_id='B')
337
 
            branch = Branch.open('.')
 
333
            branch = Branch.open(u'.')
338
334
            self.assertEqual(branch.revision_history(), ['A'])
339
335
            self.failIf(branch.revision_store.has_id('B'))
340
336
        finally:
342
338
 
343
339
    def test_commit_invokes_hooks(self):
344
340
        import bzrlib.commit as commit
345
 
        branch = Branch.initialize('.')
 
341
        branch = Branch.initialize(u'.')
346
342
        calls = []
347
343
        def called(branch, rev_id):
348
344
            calls.append('called')