~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

  • Committer: Jelmer Vernooij
  • Date: 2011-05-10 07:46:15 UTC
  • mfrom: (5844 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5845.
  • Revision ID: jelmer@samba.org-20110510074615-eptod049ndjxc4i7
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
from bzrlib.config import BranchConfig
29
29
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
30
30
                           LockContention)
31
 
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
 
31
from bzrlib.tests import (
 
32
    SymlinkFeature,
 
33
    TestCaseWithTransport,
 
34
    test_foreign,
 
35
    )
32
36
 
33
37
 
34
38
# TODO: Test commit with some added, and added-but-missing files
103
107
        tree2.unlock()
104
108
        self.assertEqual('version 2', text)
105
109
 
 
110
    def test_commit_lossy_native(self):
 
111
        """Attempt a lossy commit to a native branch."""
 
112
        wt = self.make_branch_and_tree('.')
 
113
        b = wt.branch
 
114
        file('hello', 'w').write('hello world')
 
115
        wt.add('hello')
 
116
        revid = wt.commit(message='add hello', rev_id='revid', lossy=True)
 
117
        self.assertEquals('revid', revid)
 
118
 
 
119
    def test_commit_lossy_foreign(self):
 
120
        """Attempt a lossy commit to a foreign branch."""
 
121
        test_foreign.register_dummy_foreign_for_test(self)
 
122
        wt = self.make_branch_and_tree('.',
 
123
            format=test_foreign.DummyForeignVcsDirFormat())
 
124
        b = wt.branch
 
125
        file('hello', 'w').write('hello world')
 
126
        wt.add('hello')
 
127
        revid = wt.commit(message='add hello', lossy=True,
 
128
            timestamp=1302659388, timezone=0)
 
129
        self.assertEquals('dummy-v1:1302659388.0-0-UNKNOWN', revid)
 
130
 
 
131
    def test_commit_bound_lossy_foreign(self):
 
132
        """Attempt a lossy commit to a bzr branch bound to a foreign branch."""
 
133
        test_foreign.register_dummy_foreign_for_test(self)
 
134
        foreign_branch = self.make_branch('foreign',
 
135
            format=test_foreign.DummyForeignVcsDirFormat())
 
136
        wt = foreign_branch.create_checkout("local")
 
137
        b = wt.branch
 
138
        file('local/hello', 'w').write('hello world')
 
139
        wt.add('hello')
 
140
        revid = wt.commit(message='add hello', lossy=True,
 
141
            timestamp=1302659388, timezone=0)
 
142
        self.assertEquals('dummy-v1:1302659388.0-0-0', revid)
 
143
        self.assertEquals('dummy-v1:1302659388.0-0-0',
 
144
            foreign_branch.last_revision())
 
145
        self.assertEquals('dummy-v1:1302659388.0-0-0',
 
146
            wt.branch.last_revision())
 
147
 
106
148
    def test_missing_commit(self):
107
149
        """Test a commit with a missing file"""
108
150
        wt = self.make_branch_and_tree('.')
220
262
        eq(tree1.id2path('hello-id'), 'hello')
221
263
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
222
264
        self.assertFalse(tree1.has_filename('fruity'))
223
 
        self.check_inventory_shape(tree1.inventory, ['hello'])
224
 
        ie = tree1.inventory['hello-id']
225
 
        eq(ie.revision, 'test@rev-1')
 
265
        self.check_tree_shape(tree1, ['hello'])
 
266
        eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
226
267
 
227
268
        tree2 = b.repository.revision_tree('test@rev-2')
228
269
        tree2.lock_read()
229
270
        self.addCleanup(tree2.unlock)
230
271
        eq(tree2.id2path('hello-id'), 'fruity')
231
272
        eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
232
 
        self.check_inventory_shape(tree2.inventory, ['fruity'])
233
 
        ie = tree2.inventory['hello-id']
234
 
        eq(ie.revision, 'test@rev-2')
 
273
        self.check_tree_shape(tree2, ['fruity'])
 
274
        eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
235
275
 
236
276
    def test_reused_rev_id(self):
237
277
        """Test that a revision id cannot be reused in a branch"""
258
298
        wt.commit('two', rev_id=r2, allow_pointless=False)
259
299
        wt.lock_read()
260
300
        try:
261
 
            self.check_inventory_shape(wt.read_working_inventory(),
262
 
                                       ['a/', 'a/hello', 'b/'])
 
301
            self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
263
302
        finally:
264
303
            wt.unlock()
265
304
 
268
307
        wt.commit('three', rev_id=r3, allow_pointless=False)
269
308
        wt.lock_read()
270
309
        try:
271
 
            self.check_inventory_shape(wt.read_working_inventory(),
 
310
            self.check_tree_shape(wt,
272
311
                                       ['a/', 'a/hello', 'a/b/'])
273
 
            self.check_inventory_shape(b.repository.get_inventory(r3),
 
312
            self.check_tree_shape(b.repository.revision_tree(r3),
274
313
                                       ['a/', 'a/hello', 'a/b/'])
275
314
        finally:
276
315
            wt.unlock()
280
319
        wt.commit('four', rev_id=r4, allow_pointless=False)
281
320
        wt.lock_read()
282
321
        try:
283
 
            self.check_inventory_shape(wt.read_working_inventory(),
284
 
                                       ['a/', 'a/b/hello', 'a/b/'])
 
322
            self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
285
323
        finally:
286
324
            wt.unlock()
287
325
 
349
387
    def test_strict_commit_without_unknowns(self):
350
388
        """Try and commit with no unknown files and strict = True,
351
389
        should work."""
352
 
        from bzrlib.errors import StrictCommitFailed
353
390
        wt = self.make_branch_and_tree('.')
354
391
        b = wt.branch
355
392
        file('hello', 'w').write('hello world')
381
418
        wt = self.make_branch_and_tree('.')
382
419
        branch = wt.branch
383
420
        wt.commit("base", allow_pointless=True, rev_id='A')
384
 
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
 
421
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
385
422
        try:
386
423
            from bzrlib.testament import Testament
387
424
            # monkey patch gpg signing mechanism
405
442
        wt = self.make_branch_and_tree('.')
406
443
        branch = wt.branch
407
444
        wt.commit("base", allow_pointless=True, rev_id='A')
408
 
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
 
445
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
409
446
        try:
410
 
            from bzrlib.testament import Testament
411
447
            # monkey patch gpg signing mechanism
412
448
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
413
449
            config = MustSignConfig(branch)
419
455
                              working_tree=wt)
420
456
            branch = Branch.open(self.get_url('.'))
421
457
            self.assertEqual(branch.revision_history(), ['A'])
422
 
            self.failIf(branch.repository.has_revision('B'))
 
458
            self.assertFalse(branch.repository.has_revision('B'))
423
459
        finally:
424
460
            bzrlib.gpg.GPGStrategy = oldstrategy
425
461