~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_commit.py

  • Committer: Vincent Ladeuil
  • Date: 2010-01-25 15:55:48 UTC
  • mto: (4985.1.4 add-attr-cleanup)
  • mto: This revision was merged to the branch mainline in revision 4988.
  • Revision ID: v.ladeuil+lp@free.fr-20100125155548-0l352pujvt5bzl5e
Deploy addAttrCleanup on the whole test suite.

Several use case worth mentioning:

- setting a module or any other object attribute is the majority
by far. In some cases the setting itself is deferred but most of
the time we want to set at the same time we add the cleanup.

- there multiple occurrences of protecting hooks or ui factory
which are now useless (the test framework takes care of that now),

- there was some lambda uses that can now be avoided.

That first cleanup already simplifies things a lot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
    ignores,
26
26
    msgeditor,
27
27
    osutils,
 
28
    tests,
28
29
    )
29
30
from bzrlib.bzrdir import BzrDir
30
31
from bzrlib.tests import (
106
107
                              'modified hello\.txt\n'
107
108
                              'Committed revision 2\.\n$')
108
109
 
 
110
    def test_warn_about_forgotten_commit_message(self):
 
111
        """Test that the lack of -m parameter is caught"""
 
112
        wt = self.make_branch_and_tree('.')
 
113
        self.build_tree(['one', 'two'])
 
114
        wt.add(['two'])
 
115
        out, err = self.run_bzr('commit -m one two')
 
116
        self.assertContainsRe(err, "The commit message is a file name")
 
117
 
109
118
    def test_verbose_commit_renamed(self):
110
119
        # Verbose commit of renamed file should say so
111
120
        wt = self.prepare_simple_history()
170
179
        self.assertEqual(err, 'Committing to: %s\n'
171
180
                         'Committed revision 2.\n' % expected)
172
181
 
 
182
    def test_commit_sanitizes_CR_in_message(self):
 
183
        # See bug #433779, basically Emacs likes to pass '\r\n' style line
 
184
        # endings to 'bzr commit -m ""' which breaks because we don't allow
 
185
        # '\r' in commit messages. (Mostly because of issues where XML style
 
186
        # formats arbitrarily strip it out of the data while parsing.)
 
187
        # To make life easier for users, we just always translate '\r\n' =>
 
188
        # '\n'. And '\r' => '\n'.
 
189
        a_tree = self.make_branch_and_tree('a')
 
190
        self.build_tree(['a/b'])
 
191
        a_tree.add('b')
 
192
        self.run_bzr(['commit',
 
193
                      '-m', 'a string\r\n\r\nwith mixed\r\rendings\n'],
 
194
                     working_dir='a')
 
195
        rev_id = a_tree.branch.last_revision()
 
196
        rev = a_tree.branch.repository.get_revision(rev_id)
 
197
        self.assertEqualDiff('a string\n\nwith mixed\n\nendings\n',
 
198
                             rev.message)
 
199
 
173
200
    def test_commit_merge_reports_all_modified_files(self):
174
201
        # the commit command should show all the files that are shown by
175
202
        # bzr diff or bzr status when committing, even when they were not
245
272
        self.run_bzr('commit -m ""', retcode=3)
246
273
 
247
274
    def test_unsupported_encoding_commit_message(self):
 
275
        if sys.platform == 'win32':
 
276
            raise tests.TestNotApplicable('Win32 parses arguments directly'
 
277
                ' as Unicode, so we can\'t pass invalid non-ascii')
248
278
        tree = self.make_branch_and_tree('.')
249
279
        self.build_tree_contents([('foo.c', 'int main() {}')])
250
280
        tree.add('foo.c')
269
299
        self.build_tree_contents([
270
300
            ('branch/foo.c', 'int main() {}'),
271
301
            ('branch/bar.c', 'int main() {}')])
272
 
        inner_tree.add('foo.c')
273
 
        inner_tree.add('bar.c')
 
302
        inner_tree.add(['foo.c', 'bar.c'])
274
303
        # can't commit files in different trees; sane error
275
304
        self.run_bzr('commit -m newstuff branch/foo.c .', retcode=3)
 
305
        # can commit to branch - records foo.c only
276
306
        self.run_bzr('commit -m newstuff branch/foo.c')
 
307
        # can commit to branch - records bar.c
277
308
        self.run_bzr('commit -m newstuff branch')
278
 
        self.run_bzr('commit -m newstuff branch', retcode=3)
 
309
        # No changes left
 
310
        self.run_bzr_error(["No changes to commit"], 'commit -m newstuff branch')
279
311
 
280
312
    def test_out_of_date_tree_commit(self):
281
313
        # check we get an error code and a clear message committing with an out
584
616
        properties = last_rev.properties
585
617
        self.assertEqual('John Doe\nJane Rey', properties['authors'])
586
618
 
 
619
    def test_commit_time(self):
 
620
        tree = self.make_branch_and_tree('tree')
 
621
        self.build_tree(['tree/hello.txt'])
 
622
        tree.add('hello.txt')
 
623
        out, err = self.run_bzr("commit -m hello "
 
624
            "--commit-time='2009-10-10 08:00:00 +0100' tree/hello.txt")
 
625
        last_rev = tree.branch.repository.get_revision(tree.last_revision())
 
626
        self.assertEqual(
 
627
            'Sat 2009-10-10 08:00:00 +0100',
 
628
            osutils.format_date(last_rev.timestamp, last_rev.timezone))
 
629
        
 
630
    def test_commit_time_bad_time(self):
 
631
        tree = self.make_branch_and_tree('tree')
 
632
        self.build_tree(['tree/hello.txt'])
 
633
        tree.add('hello.txt')
 
634
        out, err = self.run_bzr("commit -m hello "
 
635
            "--commit-time='NOT A TIME' tree/hello.txt", retcode=3)
 
636
        self.assertStartsWith(
 
637
            err, "bzr: ERROR: Could not parse --commit-time:")
 
638
 
587
639
    def test_partial_commit_with_renames_in_tree(self):
588
640
        # this test illustrates bug #140419
589
641
        t = self.make_branch_and_tree('.')
630
682
            f.close()
631
683
            os.chmod('fed.sh', 0755)
632
684
            default_editor = osutils.set_or_unset_env('BZR_EDITOR', "./fed.sh")
 
685
        # XXX: And why do we restore a hook ? -- vila 100123
633
686
        self.addCleanup(restoreDefaults)
634
687
        msgeditor.hooks.install_named_hook("commit_message_template",
635
688
                lambda commit_obj, msg: "save me some typing\n", None)