/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

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

  • Committer: Gordon Tyler
  • Date: 2009-12-02 16:43:09 UTC
  • mto: (4870.1.1 integration2)
  • mto: This revision was merged to the branch mainline in revision 4871.
  • Revision ID: gordon@doxxx.net-20091202164309-xh670n48hiwz3n5n
Removed unnecessary import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2009 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
18
18
"""Tests for the commit CLI of bzr."""
19
19
 
20
20
import os
21
 
import re
22
21
import sys
23
22
 
24
23
from bzrlib import (
108
107
                              'modified hello\.txt\n'
109
108
                              'Committed revision 2\.\n$')
110
109
 
111
 
    def test_unicode_commit_message_is_filename(self):
112
 
        """Unicode commit message same as a filename (Bug #563646).
113
 
        """
114
 
        file_name = u'\N{euro sign}'
115
 
        self.run_bzr(['init'])
116
 
        open(file_name, 'w').write('hello world')
117
 
        self.run_bzr(['add'])
118
 
        out, err = self.run_bzr(['commit', '-m', file_name])
119
 
        reflags = re.MULTILINE|re.DOTALL|re.UNICODE
120
 
        te = osutils.get_terminal_encoding()
121
 
        self.assertContainsRe(err.decode(te),
122
 
            u'The commit message is a file name:',
123
 
            flags=reflags)
124
 
 
125
 
        # Run same test with a filename that causes encode
126
 
        # error for the terminal encoding. We do this
127
 
        # by forcing terminal encoding of ascii for
128
 
        # osutils.get_terminal_encoding which is used
129
 
        # by ui.text.show_warning
130
 
        default_get_terminal_enc = osutils.get_terminal_encoding
131
 
        try:
132
 
            osutils.get_terminal_encoding = lambda: 'ascii'
133
 
            file_name = u'foo\u1234'
134
 
            open(file_name, 'w').write('hello world')
135
 
            self.run_bzr(['add'])
136
 
            out, err = self.run_bzr(['commit', '-m', file_name])
137
 
            reflags = re.MULTILINE|re.DOTALL|re.UNICODE
138
 
            te = osutils.get_terminal_encoding()
139
 
            self.assertContainsRe(err.decode(te, 'replace'),
140
 
                u'The commit message is a file name:',
141
 
                flags=reflags)
142
 
        finally:
143
 
            osutils.get_terminal_encoding = default_get_terminal_enc
144
 
 
145
 
    def test_warn_about_forgotten_commit_message(self):
146
 
        """Test that the lack of -m parameter is caught"""
147
 
        wt = self.make_branch_and_tree('.')
148
 
        self.build_tree(['one', 'two'])
149
 
        wt.add(['two'])
150
 
        out, err = self.run_bzr('commit -m one two')
151
 
        self.assertContainsRe(err, "The commit message is a file name")
152
 
 
153
110
    def test_verbose_commit_renamed(self):
154
111
        # Verbose commit of renamed file should say so
155
112
        wt = self.prepare_simple_history()
378
335
        trunk = self.make_branch_and_tree('trunk')
379
336
 
380
337
        u1 = trunk.branch.create_checkout('u1')
381
 
        self.build_tree_contents([('u1/hosts', 'initial contents\n')])
 
338
        self.build_tree_contents([('u1/hosts', 'initial contents')])
382
339
        u1.add('hosts')
383
340
        self.run_bzr('commit -m add-hosts u1')
384
341
 
385
342
        u2 = trunk.branch.create_checkout('u2')
386
 
        self.build_tree_contents([('u2/hosts', 'altered in u2\n')])
 
343
        self.build_tree_contents([('u2/hosts', 'altered in u2')])
387
344
        self.run_bzr('commit -m checkin-from-u2 u2')
388
345
 
389
346
        # make an offline commits
390
 
        self.build_tree_contents([('u1/hosts', 'first offline change in u1\n')])
 
347
        self.build_tree_contents([('u1/hosts', 'first offline change in u1')])
391
348
        self.run_bzr('commit -m checkin-offline --local u1')
392
349
 
393
350
        # now try to pull in online work from u2, and then commit our offline
394
351
        # work as a merge
395
352
        # retcode 1 as we expect a text conflict
396
353
        self.run_bzr('update u1', retcode=1)
397
 
        self.assertFileEqual('''\
398
 
<<<<<<< TREE
399
 
first offline change in u1
400
 
=======
401
 
altered in u2
402
 
>>>>>>> MERGE-SOURCE
403
 
''',
404
 
                             'u1/hosts')
405
 
 
406
354
        self.run_bzr('resolved u1/hosts')
407
355
        # add a text change here to represent resolving the merge conflicts in
408
356
        # favour of a new version of the file not identical to either the u1
710
658
        self.assertContainsRe(err,
711
659
            r'^bzr: ERROR: Cannot lock.*readonly transport')
712
660
 
713
 
    def setup_editor(self):
 
661
    def test_commit_hook_template(self):
714
662
        # Test that commit template hooks work
 
663
        def restoreDefaults():
 
664
            msgeditor.hooks['commit_message_template'] = []
 
665
            osutils.set_or_unset_env('BZR_EDITOR', default_editor)
715
666
        if sys.platform == "win32":
716
667
            f = file('fed.bat', 'w')
717
668
            f.write('@rem dummy fed')
718
669
            f.close()
719
 
            osutils.set_or_unset_env('BZR_EDITOR', "fed.bat")
 
670
            default_editor = osutils.set_or_unset_env('BZR_EDITOR', "fed.bat")
720
671
        else:
721
672
            f = file('fed.sh', 'wb')
722
673
            f.write('#!/bin/sh\n')
723
674
            f.close()
724
675
            os.chmod('fed.sh', 0755)
725
 
            osutils.set_or_unset_env('BZR_EDITOR', "./fed.sh")
726
 
 
727
 
    def setup_commit_with_template(self):
728
 
        self.setup_editor()
 
676
            default_editor = osutils.set_or_unset_env('BZR_EDITOR', "./fed.sh")
 
677
        self.addCleanup(restoreDefaults)
729
678
        msgeditor.hooks.install_named_hook("commit_message_template",
730
679
                lambda commit_obj, msg: "save me some typing\n", None)
731
680
        tree = self.make_branch_and_tree('tree')
732
681
        self.build_tree(['tree/hello.txt'])
733
682
        tree.add('hello.txt')
734
 
        return tree
735
 
 
736
 
    def test_commit_hook_template_accepted(self):
737
 
        tree = self.setup_commit_with_template()
738
 
        out, err = self.run_bzr("commit tree/hello.txt", stdin="y\n")
 
683
        out, err = self.run_bzr("commit tree/hello.txt")
739
684
        last_rev = tree.branch.repository.get_revision(tree.last_revision())
740
685
        self.assertEqual('save me some typing\n', last_rev.message)
741
 
 
742
 
    def test_commit_hook_template_rejected(self):
743
 
        tree = self.setup_commit_with_template()
744
 
        expected = tree.last_revision()
745
 
        out, err = self.run_bzr_error(["empty commit message"],
746
 
            "commit tree/hello.txt", stdin="n\n")
747
 
        self.assertEqual(expected, tree.last_revision())
748
 
 
749
 
    def test_commit_without_username(self):
750
 
        """Ensure commit error if username is not set.
751
 
        """
752
 
        self.run_bzr(['init', 'foo'])
753
 
        os.chdir('foo')
754
 
        open('foo.txt', 'w').write('hello')
755
 
        self.run_bzr(['add'])
756
 
        osutils.set_or_unset_env('EMAIL', None)
757
 
        osutils.set_or_unset_env('BZR_EMAIL', None)
758
 
        out, err = self.run_bzr(['commit', '-m', 'initial'], 3)
759
 
        self.assertContainsRe(err, 'Unable to determine your name')