~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Jelmer Vernooij
  • Date: 2011-11-27 17:42:25 UTC
  • mto: This revision was merged to the branch mainline in revision 6311.
  • Revision ID: jelmer@samba.org-20111127174225-tspfeewl0gwxxumt
Add possible_transports in a couple more places.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2012 Canonical Ltd
 
1
# Copyright (C) 2006-2011 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
36
36
    features,
37
37
    )
38
38
from bzrlib.tests import TestCaseWithTransport
39
 
from bzrlib.tests.matchers import ContainsNoVfsCalls
40
39
 
41
40
 
42
41
class TestCommit(TestCaseWithTransport):
139
138
        self.requireFeature(features.UnicodeFilenameFeature)
140
139
        file_name = u'\N{euro sign}'
141
140
        self.run_bzr(['init'])
142
 
        with open(file_name, 'w') as f: f.write('hello world')
 
141
        open(file_name, 'w').write('hello world')
143
142
        self.run_bzr(['add'])
144
143
        out, err = self.run_bzr(['commit', '-m', file_name])
145
144
        reflags = re.MULTILINE|re.DOTALL|re.UNICODE
157
156
        try:
158
157
            osutils.get_terminal_encoding = lambda trace=None: 'ascii'
159
158
            file_name = u'foo\u1234'
160
 
            with open(file_name, 'w') as f: f.write('hello world')
 
159
            open(file_name, 'w').write('hello world')
161
160
            self.run_bzr(['add'])
162
161
            out, err = self.run_bzr(['commit', '-m', file_name])
163
162
            reflags = re.MULTILINE|re.DOTALL|re.UNICODE
168
167
        finally:
169
168
            osutils.get_terminal_encoding = default_get_terminal_enc
170
169
 
171
 
    def test_non_ascii_file_unversioned_utf8(self):
172
 
        self.requireFeature(features.UnicodeFilenameFeature)
173
 
        tree = self.make_branch_and_tree(".")
174
 
        self.build_tree(["f"])
175
 
        tree.add(["f"])
176
 
        out, err = self.run_bzr(["commit", "-m", "Wrong filename", u"\xa7"],
177
 
            encoding="utf-8", retcode=3)
178
 
        self.assertContainsRe(err, "(?m)not versioned: \"\xc2\xa7\"$")
179
 
 
180
 
    def test_non_ascii_file_unversioned_iso_8859_5(self):
181
 
        self.requireFeature(features.UnicodeFilenameFeature)
182
 
        tree = self.make_branch_and_tree(".")
183
 
        self.build_tree(["f"])
184
 
        tree.add(["f"])
185
 
        out, err = self.run_bzr(["commit", "-m", "Wrong filename", u"\xa7"],
186
 
            encoding="iso-8859-5", retcode=3)
187
 
        self.expectFailure("Error messages are always written as UTF-8",
188
 
            self.assertNotContainsString, err, "\xc2\xa7")
189
 
        self.assertContainsRe(err, "(?m)not versioned: \"\xfd\"$")
190
 
 
191
170
    def test_warn_about_forgotten_commit_message(self):
192
171
        """Test that the lack of -m parameter is caught"""
193
172
        wt = self.make_branch_and_tree('.')
328
307
        finally:
329
308
            other_tree.unlock()
330
309
        this_tree.merge_from_branch(other_tree.branch)
331
 
        out, err = self.run_bzr('commit -m added', working_dir='this')
 
310
        os.chdir('this')
 
311
        out,err = self.run_bzr('commit -m added')
332
312
        self.assertEqual('', out)
333
313
        self.assertEqual(set([
334
 
            'Committing to: %s/' % osutils.pathjoin(osutils.getcwd(), 'this'),
 
314
            'Committing to: %s/' % osutils.getcwd(),
335
315
            'modified filetomodify',
336
316
            'added newdir',
337
317
            'added newfile',
471
451
        t.add(['file-a', 'dir-a', 'dir-a/file-b'])
472
452
        t.commit('Create')
473
453
        t.remove(['file-a', 'dir-a/file-b'])
474
 
        result = self.run_bzr('commit . -m removed-file-b',
475
 
                              working_dir='dir-a')[1]
 
454
        os.chdir('dir-a')
 
455
        result = self.run_bzr('commit . -m removed-file-b')[1]
476
456
        self.assertNotContainsRe(result, 'file-a')
477
 
        result = self.run_bzr('status', working_dir='dir-a')[0]
 
457
        result = self.run_bzr('status')[0]
478
458
        self.assertContainsRe(result, 'removed:\n  file-a')
479
459
 
480
460
    def test_strict_commit(self):
484
464
        self.build_tree(['tree/a'])
485
465
        tree.add('a')
486
466
        # A simple change should just work
487
 
        self.run_bzr('commit --strict -m adding-a', working_dir='tree')
 
467
        self.run_bzr('commit --strict -m adding-a',
 
468
                     working_dir='tree')
488
469
 
489
470
    def test_strict_commit_no_changes(self):
490
471
        """commit --strict gives "no changes" if there is nothing to commit"""
628
609
            "Commit refused."],
629
610
            'commit -m add-b --fixes=123',
630
611
            working_dir='tree')
631
 
        tree.branch.get_config_stack().set("bugtracker", "lp")
 
612
        tree.branch.get_config().set_user_option("bugtracker", "lp")
632
613
        self.run_bzr('commit -m hello --fixes=234 tree/hello.txt')
633
614
        last_rev = tree.branch.repository.get_revision(tree.last_revision())
634
615
        self.assertEqual('https://launchpad.net/bugs/234 fixed',
828
809
        """Ensure commit error if username is not set.
829
810
        """
830
811
        self.run_bzr(['init', 'foo'])
831
 
        with open('foo/foo.txt', 'w') as f:
832
 
            f.write('hello')
833
 
        self.run_bzr(['add'], working_dir='foo')
 
812
        os.chdir('foo')
 
813
        open('foo.txt', 'w').write('hello')
 
814
        self.run_bzr(['add'])
834
815
        self.overrideEnv('EMAIL', None)
835
816
        self.overrideEnv('BZR_EMAIL', None)
836
817
        # Also, make sure that it's not inferred from mailname.
837
818
        self.overrideAttr(config, '_auto_user_id',
838
819
            lambda: (None, None))
839
 
        self.run_bzr_error(
840
 
            ['Unable to determine your name'],
841
 
            ['commit', '-m', 'initial'], working_dir='foo')
 
820
        out, err = self.run_bzr(['commit', '-m', 'initial'], 3)
 
821
        self.assertContainsRe(err, 'Unable to determine your name')
842
822
 
843
823
    def test_commit_recursive_checkout(self):
844
824
        """Ensure that a commit to a recursive checkout fails cleanly.
845
825
        """
846
826
        self.run_bzr(['init', 'test_branch'])
847
827
        self.run_bzr(['checkout', 'test_branch', 'test_checkout'])
848
 
        self.run_bzr(['bind', '.'], working_dir='test_checkout') # bind to self
849
 
        with open('test_checkout/foo.txt', 'w') as f:
850
 
            f.write('hello')
851
 
        self.run_bzr(['add'], working_dir='test_checkout')
852
 
        out, err = self.run_bzr_error(
853
 
            ['Branch.*test_checkout.*appears to be bound to itself'],
854
 
            ['commit', '-m', 'addedfoo'], working_dir='test_checkout')
855
 
 
856
 
    def test_mv_dirs_non_ascii(self):
857
 
        """Move directory with non-ascii name and containing files.
858
 
 
859
 
        Regression test for bug 185211.
860
 
        """
861
 
        tree = self.make_branch_and_tree('.')
862
 
        self.build_tree([u'abc\xa7/', u'abc\xa7/foo'])
863
 
 
864
 
        tree.add([u'abc\xa7/', u'abc\xa7/foo'])
865
 
        tree.commit('checkin')
866
 
 
867
 
        tree.rename_one(u'abc\xa7','abc')
868
 
 
869
 
        self.run_bzr('ci -m "non-ascii mv"')
870
 
 
871
 
 
872
 
class TestSmartServerCommit(TestCaseWithTransport):
873
 
 
874
 
    def test_commit_to_lightweight(self):
875
 
        self.setup_smart_server_with_call_log()
876
 
        t = self.make_branch_and_tree('from')
877
 
        for count in range(9):
878
 
            t.commit(message='commit %d' % count)
879
 
        out, err = self.run_bzr(['checkout', '--lightweight', self.get_url('from'),
880
 
            'target'])
881
 
        self.reset_smart_call_log()
882
 
        self.build_tree(['target/afile'])
883
 
        self.run_bzr(['add', 'target/afile'])
884
 
        out, err = self.run_bzr(['commit', '-m', 'do something', 'target'])
885
 
        # This figure represent the amount of work to perform this use case. It
886
 
        # is entirely ok to reduce this number if a test fails due to rpc_count
887
 
        # being too low. If rpc_count increases, more network roundtrips have
888
 
        # become necessary for this use case. Please do not adjust this number
889
 
        # upwards without agreement from bzr's network support maintainers.
890
 
        self.assertLength(211, self.hpss_calls)
891
 
        self.assertLength(2, self.hpss_connections)
892
 
        self.expectFailure("commit still uses VFS calls",
893
 
            self.assertThat, self.hpss_calls, ContainsNoVfsCalls)
 
828
        os.chdir('test_checkout')
 
829
        self.run_bzr(['bind', '.']) # bind to self
 
830
        open('foo.txt', 'w').write('hello')
 
831
        self.run_bzr(['add'])
 
832
        out, err = self.run_bzr(['commit', '-m', 'addedfoo'], 3)
 
833
        self.assertEqual(out, '')
 
834
        self.assertContainsRe(err,
 
835
            'Branch.*test_checkout.*appears to be bound to itself')