/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 bzrlib/tests/test_commit.py

  • Committer: Vincent Ladeuil
  • Date: 2011-07-06 09:22:00 UTC
  • mfrom: (6008 +trunk)
  • mto: (6012.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 6013.
  • Revision ID: v.ladeuil+lp@free.fr-20110706092200-7iai2mwzc0sqdsvf
MergingĀ inĀ trunk

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 (PointlessCommit, BzrError, SigningFailed,
30
 
                           LockContention)
31
 
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
 
29
from bzrlib.errors import (
 
30
    PointlessCommit,
 
31
    BzrError,
 
32
    SigningFailed,
 
33
    LockContention,
 
34
    )
 
35
from bzrlib.tests import (
 
36
    SymlinkFeature,
 
37
    TestCaseWithTransport,
 
38
    test_foreign,
 
39
    )
 
40
from bzrlib.tests.matchers import MatchesAncestry
32
41
 
33
42
 
34
43
# TODO: Test commit with some added, and added-but-missing files
103
112
        tree2.unlock()
104
113
        self.assertEqual('version 2', text)
105
114
 
 
115
    def test_commit_lossy_native(self):
 
116
        """Attempt a lossy commit to a native branch."""
 
117
        wt = self.make_branch_and_tree('.')
 
118
        b = wt.branch
 
119
        file('hello', 'w').write('hello world')
 
120
        wt.add('hello')
 
121
        revid = wt.commit(message='add hello', rev_id='revid', lossy=True)
 
122
        self.assertEquals('revid', revid)
 
123
 
 
124
    def test_commit_lossy_foreign(self):
 
125
        """Attempt a lossy commit to a foreign branch."""
 
126
        test_foreign.register_dummy_foreign_for_test(self)
 
127
        wt = self.make_branch_and_tree('.',
 
128
            format=test_foreign.DummyForeignVcsDirFormat())
 
129
        b = wt.branch
 
130
        file('hello', 'w').write('hello world')
 
131
        wt.add('hello')
 
132
        revid = wt.commit(message='add hello', lossy=True,
 
133
            timestamp=1302659388, timezone=0)
 
134
        self.assertEquals('dummy-v1:1302659388.0-0-UNKNOWN', revid)
 
135
 
 
136
    def test_commit_bound_lossy_foreign(self):
 
137
        """Attempt a lossy commit to a bzr branch bound to a foreign branch."""
 
138
        test_foreign.register_dummy_foreign_for_test(self)
 
139
        foreign_branch = self.make_branch('foreign',
 
140
            format=test_foreign.DummyForeignVcsDirFormat())
 
141
        wt = foreign_branch.create_checkout("local")
 
142
        b = wt.branch
 
143
        file('local/hello', 'w').write('hello world')
 
144
        wt.add('hello')
 
145
        revid = wt.commit(message='add hello', lossy=True,
 
146
            timestamp=1302659388, timezone=0)
 
147
        self.assertEquals('dummy-v1:1302659388.0-0-0', revid)
 
148
        self.assertEquals('dummy-v1:1302659388.0-0-0',
 
149
            foreign_branch.last_revision())
 
150
        self.assertEquals('dummy-v1:1302659388.0-0-0',
 
151
            wt.branch.last_revision())
 
152
 
106
153
    def test_missing_commit(self):
107
154
        """Test a commit with a missing file"""
108
155
        wt = self.make_branch_and_tree('.')
220
267
        eq(tree1.id2path('hello-id'), 'hello')
221
268
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
222
269
        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')
 
270
        self.check_tree_shape(tree1, ['hello'])
 
271
        eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
226
272
 
227
273
        tree2 = b.repository.revision_tree('test@rev-2')
228
274
        tree2.lock_read()
229
275
        self.addCleanup(tree2.unlock)
230
276
        eq(tree2.id2path('hello-id'), 'fruity')
231
277
        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')
 
278
        self.check_tree_shape(tree2, ['fruity'])
 
279
        eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
235
280
 
236
281
    def test_reused_rev_id(self):
237
282
        """Test that a revision id cannot be reused in a branch"""
258
303
        wt.commit('two', rev_id=r2, allow_pointless=False)
259
304
        wt.lock_read()
260
305
        try:
261
 
            self.check_inventory_shape(wt.read_working_inventory(),
262
 
                                       ['a/', 'a/hello', 'b/'])
 
306
            self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
263
307
        finally:
264
308
            wt.unlock()
265
309
 
268
312
        wt.commit('three', rev_id=r3, allow_pointless=False)
269
313
        wt.lock_read()
270
314
        try:
271
 
            self.check_inventory_shape(wt.read_working_inventory(),
 
315
            self.check_tree_shape(wt,
272
316
                                       ['a/', 'a/hello', 'a/b/'])
273
 
            self.check_inventory_shape(b.repository.get_inventory(r3),
 
317
            self.check_tree_shape(b.repository.revision_tree(r3),
274
318
                                       ['a/', 'a/hello', 'a/b/'])
275
319
        finally:
276
320
            wt.unlock()
280
324
        wt.commit('four', rev_id=r4, allow_pointless=False)
281
325
        wt.lock_read()
282
326
        try:
283
 
            self.check_inventory_shape(wt.read_working_inventory(),
284
 
                                       ['a/', 'a/b/hello', 'a/b/'])
 
327
            self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
285
328
        finally:
286
329
            wt.unlock()
287
330
 
319
362
        eq = self.assertEquals
320
363
        eq(b.revision_history(), rev_ids)
321
364
        for i in range(4):
322
 
            anc = b.repository.get_ancestry(rev_ids[i])
323
 
            eq(anc, [None] + rev_ids[:i+1])
 
365
            self.assertThat(rev_ids[:i+1],
 
366
                MatchesAncestry(b.repository, rev_ids[i]))
324
367
 
325
368
    def test_commit_new_subdir_child_selective(self):
326
369
        wt = self.make_branch_and_tree('.')
349
392
    def test_strict_commit_without_unknowns(self):
350
393
        """Try and commit with no unknown files and strict = True,
351
394
        should work."""
352
 
        from bzrlib.errors import StrictCommitFailed
353
395
        wt = self.make_branch_and_tree('.')
354
396
        b = wt.branch
355
397
        file('hello', 'w').write('hello world')
407
449
        wt.commit("base", allow_pointless=True, rev_id='A')
408
450
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
409
451
        try:
410
 
            from bzrlib.testament import Testament
411
452
            # monkey patch gpg signing mechanism
412
453
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
413
454
            config = MustSignConfig(branch)