~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

  • Committer: Andrew Bennetts
  • Date: 2010-11-22 03:35:24 UTC
  • mto: This revision was merged to the branch mainline in revision 5547.
  • Revision ID: andrew.bennetts@canonical.com-20101122033524-ouxj0onm3gtkimx3
Remove RepositoryFormatCHK1 and RepositoryFormatCHK2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
21
21
from bzrlib import (
22
22
    bzrdir,
23
23
    errors,
 
24
    lockdir,
 
25
    osutils,
 
26
    tests,
24
27
    )
25
28
from bzrlib.branch import Branch
26
 
from bzrlib.bzrdir import BzrDirMetaFormat1
 
29
from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1
27
30
from bzrlib.commit import Commit, NullCommitReporter
28
31
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
 
32
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
 
33
                           LockContention)
 
34
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
 
35
from bzrlib.workingtree import WorkingTree
43
36
 
44
37
 
45
38
# TODO: Test commit with some added, and added-but-missing files
114
107
        tree2.unlock()
115
108
        self.assertEqual('version 2', text)
116
109
 
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
110
    def test_missing_commit(self):
156
111
        """Test a commit with a missing file"""
157
112
        wt = self.make_branch_and_tree('.')
161
116
        wt.commit(message='add hello')
162
117
 
163
118
        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)
 
119
        wt.commit('removed hello', rev_id='rev2')
169
120
 
170
121
        tree = b.repository.revision_tree('rev2')
171
122
        self.assertFalse(tree.has_id('hello-id'))
273
224
        eq(tree1.id2path('hello-id'), 'hello')
274
225
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
275
226
        self.assertFalse(tree1.has_filename('fruity'))
276
 
        self.check_tree_shape(tree1, ['hello'])
277
 
        eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
 
227
        self.check_inventory_shape(tree1.inventory, ['hello'])
 
228
        ie = tree1.inventory['hello-id']
 
229
        eq(ie.revision, 'test@rev-1')
278
230
 
279
231
        tree2 = b.repository.revision_tree('test@rev-2')
280
232
        tree2.lock_read()
281
233
        self.addCleanup(tree2.unlock)
282
234
        eq(tree2.id2path('hello-id'), 'fruity')
283
235
        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')
 
236
        self.check_inventory_shape(tree2.inventory, ['fruity'])
 
237
        ie = tree2.inventory['hello-id']
 
238
        eq(ie.revision, 'test@rev-2')
286
239
 
287
240
    def test_reused_rev_id(self):
288
241
        """Test that a revision id cannot be reused in a branch"""
309
262
        wt.commit('two', rev_id=r2, allow_pointless=False)
310
263
        wt.lock_read()
311
264
        try:
312
 
            self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
 
265
            self.check_inventory_shape(wt.read_working_inventory(),
 
266
                                       ['a/', 'a/hello', 'b/'])
313
267
        finally:
314
268
            wt.unlock()
315
269
 
318
272
        wt.commit('three', rev_id=r3, allow_pointless=False)
319
273
        wt.lock_read()
320
274
        try:
321
 
            self.check_tree_shape(wt,
 
275
            self.check_inventory_shape(wt.read_working_inventory(),
322
276
                                       ['a/', 'a/hello', 'a/b/'])
323
 
            self.check_tree_shape(b.repository.revision_tree(r3),
 
277
            self.check_inventory_shape(b.repository.get_inventory(r3),
324
278
                                       ['a/', 'a/hello', 'a/b/'])
325
279
        finally:
326
280
            wt.unlock()
330
284
        wt.commit('four', rev_id=r4, allow_pointless=False)
331
285
        wt.lock_read()
332
286
        try:
333
 
            self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
 
287
            self.check_inventory_shape(wt.read_working_inventory(),
 
288
                                       ['a/', 'a/b/hello', 'a/b/'])
334
289
        finally:
335
290
            wt.unlock()
336
291
 
368
323
        eq = self.assertEquals
369
324
        eq(b.revision_history(), rev_ids)
370
325
        for i in range(4):
371
 
            self.assertThat(rev_ids[:i+1],
372
 
                MatchesAncestry(b.repository, rev_ids[i]))
 
326
            anc = b.repository.get_ancestry(rev_ids[i])
 
327
            eq(anc, [None] + rev_ids[:i+1])
373
328
 
374
329
    def test_commit_new_subdir_child_selective(self):
375
330
        wt = self.make_branch_and_tree('.')
398
353
    def test_strict_commit_without_unknowns(self):
399
354
        """Try and commit with no unknown files and strict = True,
400
355
        should work."""
 
356
        from bzrlib.errors import StrictCommitFailed
401
357
        wt = self.make_branch_and_tree('.')
402
358
        b = wt.branch
403
359
        file('hello', 'w').write('hello world')
429
385
        wt = self.make_branch_and_tree('.')
430
386
        branch = wt.branch
431
387
        wt.commit("base", allow_pointless=True, rev_id='A')
432
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
388
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
433
389
        try:
434
390
            from bzrlib.testament import Testament
435
391
            # monkey patch gpg signing mechanism
453
409
        wt = self.make_branch_and_tree('.')
454
410
        branch = wt.branch
455
411
        wt.commit("base", allow_pointless=True, rev_id='A')
456
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
412
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
457
413
        try:
 
414
            from bzrlib.testament import Testament
458
415
            # monkey patch gpg signing mechanism
459
416
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
460
417
            config = MustSignConfig(branch)
466
423
                              working_tree=wt)
467
424
            branch = Branch.open(self.get_url('.'))
468
425
            self.assertEqual(branch.revision_history(), ['A'])
469
 
            self.assertFalse(branch.repository.has_revision('B'))
 
426
            self.failIf(branch.repository.has_revision('B'))
470
427
        finally:
471
428
            bzrlib.gpg.GPGStrategy = oldstrategy
472
429