~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-02-11 04:02:41 UTC
  • mfrom: (5017.2.2 tariff)
  • Revision ID: pqm@pqm.ubuntu.com-20100211040241-w6n021dz0uus341n
(mbp) add import-tariff tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2008 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
 
    SymlinkFeature,
37
 
    TestCaseWithTransport,
38
 
    test_foreign,
39
 
    )
40
 
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
41
36
 
42
37
 
43
38
# TODO: Test commit with some added, and added-but-missing files
112
107
        tree2.unlock()
113
108
        self.assertEqual('version 2', text)
114
109
 
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
 
 
153
110
    def test_missing_commit(self):
154
111
        """Test a commit with a missing file"""
155
112
        wt = self.make_branch_and_tree('.')
267
224
        eq(tree1.id2path('hello-id'), 'hello')
268
225
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
269
226
        self.assertFalse(tree1.has_filename('fruity'))
270
 
        self.check_tree_shape(tree1, ['hello'])
271
 
        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')
272
230
 
273
231
        tree2 = b.repository.revision_tree('test@rev-2')
274
232
        tree2.lock_read()
275
233
        self.addCleanup(tree2.unlock)
276
234
        eq(tree2.id2path('hello-id'), 'fruity')
277
235
        eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
278
 
        self.check_tree_shape(tree2, ['fruity'])
279
 
        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')
280
239
 
281
240
    def test_reused_rev_id(self):
282
241
        """Test that a revision id cannot be reused in a branch"""
303
262
        wt.commit('two', rev_id=r2, allow_pointless=False)
304
263
        wt.lock_read()
305
264
        try:
306
 
            self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
 
265
            self.check_inventory_shape(wt.read_working_inventory(),
 
266
                                       ['a/', 'a/hello', 'b/'])
307
267
        finally:
308
268
            wt.unlock()
309
269
 
312
272
        wt.commit('three', rev_id=r3, allow_pointless=False)
313
273
        wt.lock_read()
314
274
        try:
315
 
            self.check_tree_shape(wt,
 
275
            self.check_inventory_shape(wt.read_working_inventory(),
316
276
                                       ['a/', 'a/hello', 'a/b/'])
317
 
            self.check_tree_shape(b.repository.revision_tree(r3),
 
277
            self.check_inventory_shape(b.repository.get_revision_inventory(r3),
318
278
                                       ['a/', 'a/hello', 'a/b/'])
319
279
        finally:
320
280
            wt.unlock()
324
284
        wt.commit('four', rev_id=r4, allow_pointless=False)
325
285
        wt.lock_read()
326
286
        try:
327
 
            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/'])
328
289
        finally:
329
290
            wt.unlock()
330
291
 
331
 
        inv = b.repository.get_inventory(r4)
 
292
        inv = b.repository.get_revision_inventory(r4)
332
293
        eq(inv['hello-id'].revision, r4)
333
294
        eq(inv['a-id'].revision, r1)
334
295
        eq(inv['b-id'].revision, r3)
362
323
        eq = self.assertEquals
363
324
        eq(b.revision_history(), rev_ids)
364
325
        for i in range(4):
365
 
            self.assertThat(rev_ids[:i+1],
366
 
                MatchesAncestry(b.repository, rev_ids[i]))
 
326
            anc = b.repository.get_ancestry(rev_ids[i])
 
327
            eq(anc, [None] + rev_ids[:i+1])
367
328
 
368
329
    def test_commit_new_subdir_child_selective(self):
369
330
        wt = self.make_branch_and_tree('.')
392
353
    def test_strict_commit_without_unknowns(self):
393
354
        """Try and commit with no unknown files and strict = True,
394
355
        should work."""
 
356
        from bzrlib.errors import StrictCommitFailed
395
357
        wt = self.make_branch_and_tree('.')
396
358
        b = wt.branch
397
359
        file('hello', 'w').write('hello world')
423
385
        wt = self.make_branch_and_tree('.')
424
386
        branch = wt.branch
425
387
        wt.commit("base", allow_pointless=True, rev_id='A')
426
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
388
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
427
389
        try:
428
390
            from bzrlib.testament import Testament
429
391
            # monkey patch gpg signing mechanism
447
409
        wt = self.make_branch_and_tree('.')
448
410
        branch = wt.branch
449
411
        wt.commit("base", allow_pointless=True, rev_id='A')
450
 
        self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
 
412
        self.failIf(branch.repository.has_signature_for_revision_id('A'))
451
413
        try:
 
414
            from bzrlib.testament import Testament
452
415
            # monkey patch gpg signing mechanism
453
416
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
454
417
            config = MustSignConfig(branch)
460
423
                              working_tree=wt)
461
424
            branch = Branch.open(self.get_url('.'))
462
425
            self.assertEqual(branch.revision_history(), ['A'])
463
 
            self.assertFalse(branch.repository.has_revision('B'))
 
426
            self.failIf(branch.repository.has_revision('B'))
464
427
        finally:
465
428
            bzrlib.gpg.GPGStrategy = oldstrategy
466
429