~jelmer/ubuntu/maverick/bzr/2.2.5

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commit.py

  • Committer: Bazaar Package Importer
  • Author(s): Jelmer Vernooij
  • Date: 2009-03-10 14:11:59 UTC
  • mfrom: (1.2.1 upstream) (3.1.68 jaunty)
  • Revision ID: james.westby@ubuntu.com-20090310141159-lwzzo5c1fwrtzgj4
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1
30
30
from bzrlib.commit import Commit, NullCommitReporter
31
31
from bzrlib.config import BranchConfig
32
 
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed, 
 
32
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
33
33
                           LockContention)
34
34
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
35
35
from bzrlib.workingtree import WorkingTree
125
125
        """Test a partial commit where a file was renamed but not committed.
126
126
 
127
127
        https://bugs.launchpad.net/bzr/+bug/83039
128
 
        
 
128
 
129
129
        If not handled properly, commit will try to snapshot
130
 
        dialog.py with olive/ as a parent, while 
 
130
        dialog.py with olive/ as a parent, while
131
131
        olive/ has not been snapshotted yet.
132
132
        """
133
133
        wt = self.make_branch_and_tree('.')
154
154
                          message='fails',
155
155
                          allow_pointless=False)
156
156
        self.assertEquals(b.revno(), 1)
157
 
        
 
157
 
158
158
    def test_commit_empty(self):
159
159
        """Commiting an empty tree works."""
160
160
        wt = self.make_branch_and_tree('.')
177
177
              ['hello-id', 'buongia-id'])
178
178
        wt.commit(message='add files',
179
179
                 rev_id='test@rev-1')
180
 
        
 
180
 
181
181
        os.remove('hello')
182
182
        file('buongia', 'w').write('new text')
183
183
        wt.commit(message='update text',
199
199
        self.assertTrue(tree2.has_filename('hello'))
200
200
        self.assertEquals(tree2.get_file_text('hello-id'), 'hello')
201
201
        self.assertEquals(tree2.get_file_text('buongia-id'), 'new text')
202
 
        
 
202
 
203
203
        tree3 = b.repository.revision_tree('test@rev-3')
204
204
        tree3.lock_read()
205
205
        self.addCleanup(tree3.unlock)
501
501
        bound_tree.commit(message='commit of merge in bound tree')
502
502
 
503
503
    def test_commit_reporting_after_merge(self):
504
 
        # when doing a commit of a merge, the reporter needs to still 
 
504
        # when doing a commit of a merge, the reporter needs to still
505
505
        # be called for each item that is added/removed/deleted.
506
506
        this_tree = self.make_branch_and_tree('this')
507
507
        # we need a bunch of files and dirs, to perform one action on each.
660
660
    def test_commit_unversioned_specified(self):
661
661
        """Commit should raise if specified files isn't in basis or worktree"""
662
662
        tree = self.make_branch_and_tree('.')
663
 
        self.assertRaises(errors.PathsNotVersionedError, tree.commit, 
 
663
        self.assertRaises(errors.PathsNotVersionedError, tree.commit,
664
664
                          'message', specific_files=['bogus'])
665
665
 
666
666
    class Callback(object):
667
 
        
 
667
 
668
668
        def __init__(self, message, testcase):
669
669
            self.called = False
670
670
            self.message = message
698
698
        """Callback should not be invoked for pointless commit"""
699
699
        tree = self.make_branch_and_tree('.')
700
700
        cb = self.Callback(u'commit 2', self)
701
 
        self.assertRaises(PointlessCommit, tree.commit, message_callback=cb, 
 
701
        self.assertRaises(PointlessCommit, tree.commit, message_callback=cb,
702
702
                          allow_pointless=False)
703
703
        self.assertFalse(cb.called)
704
704
 
738
738
        tree.add('a/c/d')
739
739
        tree.rename_one('a/z/x', 'a/c/d/x')
740
740
        tree.commit('test', specific_files=['a/z/y'])
741
 
 
 
741
 
742
742
    def test_commit_no_author(self):
743
743
        """The default kwarg author in MutableTree.commit should not add
744
744
        the 'author' revision property.
747
747
        rev_id = tree.commit('commit 1')
748
748
        rev = tree.branch.repository.get_revision(rev_id)
749
749
        self.assertFalse('author' in rev.properties)
 
750
        self.assertFalse('authors' in rev.properties)
750
751
 
751
752
    def test_commit_author(self):
752
753
        """Passing a non-empty author kwarg to MutableTree.commit should add
753
754
        the 'author' revision property.
754
755
        """
755
756
        tree = self.make_branch_and_tree('foo')
756
 
        rev_id = tree.commit('commit 1', author='John Doe <jdoe@example.com>')
 
757
        rev_id = self.callDeprecated(['The parameter author was '
 
758
                'deprecated in version 1.13. Use authors instead'],
 
759
                tree.commit, 'commit 1', author='John Doe <jdoe@example.com>')
757
760
        rev = tree.branch.repository.get_revision(rev_id)
758
761
        self.assertEqual('John Doe <jdoe@example.com>',
759
 
                         rev.properties['author'])
 
762
                         rev.properties['authors'])
 
763
        self.assertFalse('author' in rev.properties)
 
764
 
 
765
    def test_commit_empty_authors_list(self):
 
766
        """Passing an empty list to authors shouldn't add the property."""
 
767
        tree = self.make_branch_and_tree('foo')
 
768
        rev_id = tree.commit('commit 1', authors=[])
 
769
        rev = tree.branch.repository.get_revision(rev_id)
 
770
        self.assertFalse('author' in rev.properties)
 
771
        self.assertFalse('authors' in rev.properties)
 
772
 
 
773
    def test_multiple_authors(self):
 
774
        tree = self.make_branch_and_tree('foo')
 
775
        rev_id = tree.commit('commit 1',
 
776
                authors=['John Doe <jdoe@example.com>',
 
777
                         'Jane Rey <jrey@example.com>'])
 
778
        rev = tree.branch.repository.get_revision(rev_id)
 
779
        self.assertEqual('John Doe <jdoe@example.com>\n'
 
780
                'Jane Rey <jrey@example.com>', rev.properties['authors'])
 
781
        self.assertFalse('author' in rev.properties)
 
782
 
 
783
    def test_author_and_authors_incompatible(self):
 
784
        tree = self.make_branch_and_tree('foo')
 
785
        self.assertRaises(AssertionError, tree.commit, 'commit 1',
 
786
                authors=['John Doe <jdoe@example.com>',
 
787
                         'Jane Rey <jrey@example.com>'],
 
788
                author="Jack Me <jme@example.com>")
 
789
 
 
790
    def test_author_with_newline_rejected(self):
 
791
        tree = self.make_branch_and_tree('foo')
 
792
        self.assertRaises(AssertionError, tree.commit, 'commit 1',
 
793
                authors=['John\nDoe <jdoe@example.com>'])
760
794
 
761
795
    def test_commit_with_checkout_and_branch_sharing_repo(self):
762
796
        repo = self.make_repository('repo', shared=True)