~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: 2007-10-25 08:29:08 UTC
  • mfrom: (2940.1.2 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20071025082908-abn3kunrb2ivdvth
renaming of experimental pack formats to include knitpack in their name (Ian Clatworthy)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2008 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 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
19
19
 
20
20
import bzrlib
21
21
from bzrlib import (
22
 
    bzrdir,
23
22
    errors,
24
23
    lockdir,
25
24
    osutils,
31
30
from bzrlib.config import BranchConfig
32
31
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed, 
33
32
                           LockContention)
34
 
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
 
33
from bzrlib.tests import TestCaseWithTransport
35
34
from bzrlib.workingtree import WorkingTree
36
35
 
37
36
 
96
95
        eq(rev.message, 'add hello')
97
96
 
98
97
        tree1 = b.repository.revision_tree(rh[0])
99
 
        tree1.lock_read()
100
98
        text = tree1.get_file_text(file_id)
101
 
        tree1.unlock()
102
 
        self.assertEqual('hello world', text)
 
99
        eq(text, 'hello world')
103
100
 
104
101
        tree2 = b.repository.revision_tree(rh[1])
105
 
        tree2.lock_read()
106
 
        text = tree2.get_file_text(file_id)
107
 
        tree2.unlock()
108
 
        self.assertEqual('version 2', text)
 
102
        eq(tree2.get_file_text(file_id), 'version 2')
109
103
 
110
104
    def test_delete_commit(self):
111
105
        """Test a commit with a deleted file"""
121
115
        tree = b.repository.revision_tree('rev2')
122
116
        self.assertFalse(tree.has_id('hello-id'))
123
117
 
124
 
    def test_partial_commit_move(self):
125
 
        """Test a partial commit where a file was renamed but not committed.
126
 
 
127
 
        https://bugs.launchpad.net/bzr/+bug/83039
128
 
        
129
 
        If not handled properly, commit will try to snapshot
130
 
        dialog.py with olive/ as a parent, while 
131
 
        olive/ has not been snapshotted yet.
132
 
        """
133
 
        wt = self.make_branch_and_tree('.')
134
 
        b = wt.branch
135
 
        self.build_tree(['annotate/', 'annotate/foo.py',
136
 
                         'olive/', 'olive/dialog.py'
137
 
                        ])
138
 
        wt.add(['annotate', 'olive', 'annotate/foo.py', 'olive/dialog.py'])
139
 
        wt.commit(message='add files')
140
 
        wt.rename_one("olive/dialog.py", "aaa")
141
 
        self.build_tree_contents([('annotate/foo.py', 'modified\n')])
142
 
        wt.commit('renamed hello', specific_files=["annotate"])
143
 
 
144
118
    def test_pointless_commit(self):
145
119
        """Commit refuses unless there are changes or it's forced."""
146
120
        wt = self.make_branch_and_tree('.')
194
168
        eq(b.revno(), 3)
195
169
 
196
170
        tree2 = b.repository.revision_tree('test@rev-2')
197
 
        tree2.lock_read()
198
 
        self.addCleanup(tree2.unlock)
199
171
        self.assertTrue(tree2.has_filename('hello'))
200
172
        self.assertEquals(tree2.get_file_text('hello-id'), 'hello')
201
173
        self.assertEquals(tree2.get_file_text('buongia-id'), 'new text')
202
174
        
203
175
        tree3 = b.repository.revision_tree('test@rev-3')
204
 
        tree3.lock_read()
205
 
        self.addCleanup(tree3.unlock)
206
176
        self.assertFalse(tree3.has_filename('hello'))
207
177
        self.assertEquals(tree3.get_file_text('buongia-id'), 'new text')
208
178
 
219
189
 
220
190
        eq = self.assertEquals
221
191
        tree1 = b.repository.revision_tree('test@rev-1')
222
 
        tree1.lock_read()
223
 
        self.addCleanup(tree1.unlock)
224
192
        eq(tree1.id2path('hello-id'), 'hello')
225
193
        eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
226
194
        self.assertFalse(tree1.has_filename('fruity'))
229
197
        eq(ie.revision, 'test@rev-1')
230
198
 
231
199
        tree2 = b.repository.revision_tree('test@rev-2')
232
 
        tree2.lock_read()
233
 
        self.addCleanup(tree2.unlock)
234
200
        eq(tree2.id2path('hello-id'), 'fruity')
235
201
        eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
236
202
        self.check_inventory_shape(tree2.inventory, ['fruity'])
464
430
        bound = master.sprout('bound')
465
431
        wt = bound.open_workingtree()
466
432
        wt.branch.set_bound_location(os.path.realpath('master'))
 
433
 
 
434
        orig_default = lockdir._DEFAULT_TIMEOUT_SECONDS
467
435
        master_branch.lock_write()
468
436
        try:
 
437
            lockdir._DEFAULT_TIMEOUT_SECONDS = 1
469
438
            self.assertRaises(LockContention, wt.commit, 'silly')
470
439
        finally:
 
440
            lockdir._DEFAULT_TIMEOUT_SECONDS = orig_default
471
441
            master_branch.unlock()
472
442
 
473
443
    def test_commit_bound_merge(self):
614
584
            basis.unlock()
615
585
 
616
586
    def test_commit_kind_changes(self):
617
 
        self.requireFeature(SymlinkFeature)
 
587
        if not osutils.has_symlinks():
 
588
            raise tests.TestSkipped('Test requires symlink support')
618
589
        tree = self.make_branch_and_tree('.')
619
590
        os.symlink('target', 'name')
620
591
        tree.add('name', 'a-file-id')
757
728
        rev = tree.branch.repository.get_revision(rev_id)
758
729
        self.assertEqual('John Doe <jdoe@example.com>',
759
730
                         rev.properties['author'])
760
 
 
761
 
    def test_commit_with_checkout_and_branch_sharing_repo(self):
762
 
        repo = self.make_repository('repo', shared=True)
763
 
        # make_branch_and_tree ignores shared repos
764
 
        branch = bzrdir.BzrDir.create_branch_convenience('repo/branch')
765
 
        tree2 = branch.create_checkout('repo/tree2')
766
 
        tree2.commit('message', rev_id='rev1')
767
 
        self.assertTrue(tree2.branch.repository.has_revision('rev1'))