~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-10-08 10:50:51 UTC
  • mfrom: (5050.17.31 2.2.2-dev)
  • mto: This revision was merged to the branch mainline in revision 5474.
  • Revision ID: v.ladeuil+lp@free.fr-20101008105051-xd4knkrohzclffic
Merge 2.2 into trunk including fixes for bug #651706 and bug #646133

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
"""Tests for the commit CLI of bzr."""
19
19
 
20
20
import os
 
21
import re
21
22
import sys
22
23
 
23
24
from bzrlib import (
 
25
    bzrdir,
24
26
    osutils,
25
27
    ignores,
26
28
    msgeditor,
31
33
from bzrlib.tests import (
32
34
    probe_bad_non_ascii,
33
35
    TestSkipped,
 
36
    UnicodeFilenameFeature,
34
37
    )
35
 
from bzrlib.tests.blackbox import ExternalBase
36
 
 
37
 
 
38
 
class TestCommit(ExternalBase):
 
38
from bzrlib.tests import TestCaseWithTransport
 
39
 
 
40
 
 
41
class TestCommit(TestCaseWithTransport):
39
42
 
40
43
    def test_05_empty_commit(self):
41
44
        """Commit of tree with no versioned files should fail"""
107
110
                              'modified hello\.txt\n'
108
111
                              'Committed revision 2\.\n$')
109
112
 
 
113
    def test_unicode_commit_message_is_filename(self):
 
114
        """Unicode commit message same as a filename (Bug #563646).
 
115
        """
 
116
        self.requireFeature(UnicodeFilenameFeature)
 
117
        file_name = u'\N{euro sign}'
 
118
        self.run_bzr(['init'])
 
119
        open(file_name, 'w').write('hello world')
 
120
        self.run_bzr(['add'])
 
121
        out, err = self.run_bzr(['commit', '-m', file_name])
 
122
        reflags = re.MULTILINE|re.DOTALL|re.UNICODE
 
123
        te = osutils.get_terminal_encoding()
 
124
        self.assertContainsRe(err.decode(te),
 
125
            u'The commit message is a file name:',
 
126
            flags=reflags)
 
127
 
 
128
        # Run same test with a filename that causes encode
 
129
        # error for the terminal encoding. We do this
 
130
        # by forcing terminal encoding of ascii for
 
131
        # osutils.get_terminal_encoding which is used
 
132
        # by ui.text.show_warning
 
133
        default_get_terminal_enc = osutils.get_terminal_encoding
 
134
        try:
 
135
            osutils.get_terminal_encoding = lambda trace=None: 'ascii'
 
136
            file_name = u'foo\u1234'
 
137
            open(file_name, 'w').write('hello world')
 
138
            self.run_bzr(['add'])
 
139
            out, err = self.run_bzr(['commit', '-m', file_name])
 
140
            reflags = re.MULTILINE|re.DOTALL|re.UNICODE
 
141
            te = osutils.get_terminal_encoding()
 
142
            self.assertContainsRe(err.decode(te, 'replace'),
 
143
                u'The commit message is a file name:',
 
144
                flags=reflags)
 
145
        finally:
 
146
            osutils.get_terminal_encoding = default_get_terminal_enc
 
147
 
110
148
    def test_warn_about_forgotten_commit_message(self):
111
149
        """Test that the lack of -m parameter is caught"""
112
150
        wt = self.make_branch_and_tree('.')
663
701
        self.assertContainsRe(err, r'modified test\nCommitted revision 2.')
664
702
 
665
703
    def test_commit_readonly_checkout(self):
666
 
        # https://bugs.edge.launchpad.net/bzr/+bug/129701
 
704
        # https://bugs.launchpad.net/bzr/+bug/129701
667
705
        # "UnlockableTransport error trying to commit in checkout of readonly
668
706
        # branch"
669
707
        self.make_branch('master')
710
748
        out, err = self.run_bzr_error(["empty commit message"],
711
749
            "commit tree/hello.txt", stdin="n\n")
712
750
        self.assertEqual(expected, tree.last_revision())
 
751
 
 
752
    def test_commit_without_username(self):
 
753
        """Ensure commit error if username is not set.
 
754
        """
 
755
        self.run_bzr(['init', 'foo'])
 
756
        os.chdir('foo')
 
757
        open('foo.txt', 'w').write('hello')
 
758
        self.run_bzr(['add'])
 
759
        osutils.set_or_unset_env('EMAIL', None)
 
760
        osutils.set_or_unset_env('BZR_EMAIL', None)
 
761
        out, err = self.run_bzr(['commit', '-m', 'initial'], 3)
 
762
        self.assertContainsRe(err, 'Unable to determine your name')
 
763
 
 
764
    def test_commit_recursive_checkout(self):
 
765
        """Ensure that a commit to a recursive checkout fails cleanly.
 
766
        """
 
767
        self.run_bzr(['init', 'test_branch'])
 
768
        self.run_bzr(['checkout', 'test_branch', 'test_checkout'])
 
769
        os.chdir('test_checkout')
 
770
        self.run_bzr(['bind', '.']) # bind to self
 
771
        open('foo.txt', 'w').write('hello')
 
772
        self.run_bzr(['add'])
 
773
        out, err = self.run_bzr(['commit', '-m', 'addedfoo'], 3)
 
774
        self.assertEqual(out, '')
 
775
        self.assertContainsRe(err,
 
776
            'Branch.*test_checkout.*appears to be bound to itself')
 
777