~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

(gz) Fix test failure on alpha by correcting format string for
 gc_chk_sha1_record (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
from bzrlib.bzrdir import BzrDirMetaFormat1
27
27
from bzrlib.commit import Commit, NullCommitReporter
28
28
from bzrlib.config import BranchConfig
29
 
from bzrlib.errors import (
30
 
    PointlessCommit,
31
 
    BzrError,
32
 
    SigningFailed,
33
 
    LockContention,
34
 
    )
35
 
from bzrlib.tests import (
36
 
    TestCaseWithTransport,
37
 
    test_foreign,
38
 
    )
39
 
from bzrlib.tests.features import (
40
 
    SymlinkFeature,
41
 
    )
42
 
from bzrlib.tests.matchers import MatchesAncestry
 
29
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
 
30
                           LockContention)
 
31
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
43
32
 
44
33
 
45
34
# TODO: Test commit with some added, and added-but-missing files
114
103
        tree2.unlock()
115
104
        self.assertEqual('version 2', text)
116
105
 
117
 
    def test_commit_lossy_native(self):
118
 
        """Attempt a lossy commit to a native branch."""
119
 
        wt = self.make_branch_and_tree('.')
120
 
        b = wt.branch
121
 
        file('hello', 'w').write('hello world')
122
 
        wt.add('hello')
123
 
        revid = wt.commit(message='add hello', rev_id='revid', lossy=True)
124
 
        self.assertEquals('revid', revid)
125
 
 
126
 
    def test_commit_lossy_foreign(self):
127
 
        """Attempt a lossy commit to a foreign branch."""
128
 
        test_foreign.register_dummy_foreign_for_test(self)
129
 
        wt = self.make_branch_and_tree('.',
130
 
            format=test_foreign.DummyForeignVcsDirFormat())
131
 
        b = wt.branch
132
 
        file('hello', 'w').write('hello world')
133
 
        wt.add('hello')
134
 
        revid = wt.commit(message='add hello', lossy=True,
135
 
            timestamp=1302659388, timezone=0)
136
 
        self.assertEquals('dummy-v1:1302659388.0-0-UNKNOWN', revid)
137
 
 
138
 
    def test_commit_bound_lossy_foreign(self):
139
 
        """Attempt a lossy commit to a bzr branch bound to a foreign branch."""
140
 
        test_foreign.register_dummy_foreign_for_test(self)
141
 
        foreign_branch = self.make_branch('foreign',
142
 
            format=test_foreign.DummyForeignVcsDirFormat())
143
 
        wt = foreign_branch.create_checkout("local")
144
 
        b = wt.branch
145
 
        file('local/hello', 'w').write('hello world')
146
 
        wt.add('hello')
147
 
        revid = wt.commit(message='add hello', lossy=True,
148
 
            timestamp=1302659388, timezone=0)
149
 
        self.assertEquals('dummy-v1:1302659388.0-0-0', revid)
150
 
        self.assertEquals('dummy-v1:1302659388.0-0-0',
151
 
            foreign_branch.last_revision())
152
 
        self.assertEquals('dummy-v1:1302659388.0-0-0',
153
 
            wt.branch.last_revision())
154
 
 
155
106
    def test_missing_commit(self):
156
107
        """Test a commit with a missing file"""
157
108
        wt = self.make_branch_and_tree('.')
161
112
        wt.commit(message='add hello')
162
113
 
163
114
        os.remove('hello')
164
 
        reporter = CapturingReporter()
165
 
        wt.commit('removed hello', rev_id='rev2', reporter=reporter)
166
 
        self.assertEquals(
167
 
            [('missing', u'hello'), ('deleted', u'hello')],
168
 
            reporter.calls)
 
115
        wt.commit('removed hello', rev_id='rev2')
169
116
 
170
117
        tree = b.repository.revision_tree('rev2')
171
118
        self.assertFalse(tree.has_id('hello-id'))
273
220
        eq(tree1.id2path('hello-id'), 'hello')
274
221
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
275
222
        self.assertFalse(tree1.has_filename('fruity'))
276
 
        self.check_tree_shape(tree1, ['hello'])
277
 
        eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
 
223
        self.check_inventory_shape(tree1.inventory, ['hello'])
 
224
        ie = tree1.inventory['hello-id']
 
225
        eq(ie.revision, 'test@rev-1')
278
226
 
279
227
        tree2 = b.repository.revision_tree('test@rev-2')
280
228
        tree2.lock_read()
281
229
        self.addCleanup(tree2.unlock)
282
230
        eq(tree2.id2path('hello-id'), 'fruity')
283
231
        eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
284
 
        self.check_tree_shape(tree2, ['fruity'])
285
 
        eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
 
232
        self.check_inventory_shape(tree2.inventory, ['fruity'])
 
233
        ie = tree2.inventory['hello-id']
 
234
        eq(ie.revision, 'test@rev-2')
286
235
 
287
236
    def test_reused_rev_id(self):
288
237
        """Test that a revision id cannot be reused in a branch"""
309
258
        wt.commit('two', rev_id=r2, allow_pointless=False)
310
259
        wt.lock_read()
311
260
        try:
312
 
            self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
 
261
            self.check_inventory_shape(wt.read_working_inventory(),
 
262
                                       ['a/', 'a/hello', 'b/'])
313
263
        finally:
314
264
            wt.unlock()
315
265
 
318
268
        wt.commit('three', rev_id=r3, allow_pointless=False)
319
269
        wt.lock_read()
320
270
        try:
321
 
            self.check_tree_shape(wt,
 
271
            self.check_inventory_shape(wt.read_working_inventory(),
322
272
                                       ['a/', 'a/hello', 'a/b/'])
323
 
            self.check_tree_shape(b.repository.revision_tree(r3),
 
273
            self.check_inventory_shape(b.repository.get_inventory(r3),
324
274
                                       ['a/', 'a/hello', 'a/b/'])
325
275
        finally:
326
276
            wt.unlock()
330
280
        wt.commit('four', rev_id=r4, allow_pointless=False)
331
281
        wt.lock_read()
332
282
        try:
333
 
            self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
 
283
            self.check_inventory_shape(wt.read_working_inventory(),
 
284
                                       ['a/', 'a/b/hello', 'a/b/'])
334
285
        finally:
335
286
            wt.unlock()
336
287
 
368
319
        eq = self.assertEquals
369
320
        eq(b.revision_history(), rev_ids)
370
321
        for i in range(4):
371
 
            self.assertThat(rev_ids[:i+1],
372
 
                MatchesAncestry(b.repository, rev_ids[i]))
 
322
            anc = b.repository.get_ancestry(rev_ids[i])
 
323
            eq(anc, [None] + rev_ids[:i+1])
373
324
 
374
325
    def test_commit_new_subdir_child_selective(self):
375
326
        wt = self.make_branch_and_tree('.')
398
349
    def test_strict_commit_without_unknowns(self):
399
350
        """Try and commit with no unknown files and strict = True,
400
351
        should work."""
 
352
        from bzrlib.errors import StrictCommitFailed
401
353
        wt = self.make_branch_and_tree('.')
402
354
        b = wt.branch
403
355
        file('hello', 'w').write('hello world')
429
381
        wt = self.make_branch_and_tree('.')
430
382
        branch = wt.branch
431
383
        wt.commit("base", allow_pointless=True, rev_id='A')
432
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
384
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
433
385
        try:
434
386
            from bzrlib.testament import Testament
435
387
            # monkey patch gpg signing mechanism
453
405
        wt = self.make_branch_and_tree('.')
454
406
        branch = wt.branch
455
407
        wt.commit("base", allow_pointless=True, rev_id='A')
456
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
408
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
457
409
        try:
 
410
            from bzrlib.testament import Testament
458
411
            # monkey patch gpg signing mechanism
459
412
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
460
413
            config = MustSignConfig(branch)
466
419
                              working_tree=wt)
467
420
            branch = Branch.open(self.get_url('.'))
468
421
            self.assertEqual(branch.revision_history(), ['A'])
469
 
            self.assertFalse(branch.repository.has_revision('B'))
 
422
            self.failIf(branch.repository.has_revision('B'))
470
423
        finally:
471
424
            bzrlib.gpg.GPGStrategy = oldstrategy
472
425