171
169
osutils.get_terminal_encoding = default_get_terminal_enc
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"])
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\"$")
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"])
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\"$")
173
191
def test_warn_about_forgotten_commit_message(self):
174
192
"""Test that the lack of -m parameter is caught"""
175
193
wt = self.make_branch_and_tree('.')
599
615
'commit -m add-b --fixes=xxx:123',
600
616
working_dir='tree')
618
def test_fixes_bug_with_default_tracker(self):
619
"""commit --fixes=234 uses the default bug tracker."""
620
tree = self.make_branch_and_tree('tree')
621
self.build_tree(['tree/hello.txt'])
622
tree.add('hello.txt')
624
["bzr: ERROR: No tracker specified for bug 123. Use the form "
625
"'tracker:id' or specify a default bug tracker using the "
626
"`bugtracker` option.\n"
627
"See \"bzr help bugs\" for more information on this feature. "
629
'commit -m add-b --fixes=123',
631
tree.branch.get_config_stack().set("bugtracker", "lp")
632
self.run_bzr('commit -m hello --fixes=234 tree/hello.txt')
633
last_rev = tree.branch.repository.get_revision(tree.last_revision())
634
self.assertEqual('https://launchpad.net/bugs/234 fixed',
635
last_rev.properties['bugs'])
602
637
def test_fixes_invalid_bug_number(self):
603
638
tree = self.make_branch_and_tree('tree')
604
639
self.build_tree(['tree/hello.txt'])
688
723
self.assertStartsWith(
689
724
err, "bzr: ERROR: Could not parse --commit-time:")
726
def test_commit_time_missing_tz(self):
727
tree = self.make_branch_and_tree('tree')
728
self.build_tree(['tree/hello.txt'])
729
tree.add('hello.txt')
730
out, err = self.run_bzr("commit -m hello "
731
"--commit-time='2009-10-10 08:00:00' tree/hello.txt", retcode=3)
732
self.assertStartsWith(
733
err, "bzr: ERROR: Could not parse --commit-time:")
734
# Test that it is actually checking and does not simply crash with
735
# some other exception
736
self.assertContainsString(err, "missing a timezone offset")
691
738
def test_partial_commit_with_renames_in_tree(self):
692
739
# this test illustrates bug #140419
693
740
t = self.make_branch_and_tree('.')
771
828
"""Ensure commit error if username is not set.
773
830
self.run_bzr(['init', 'foo'])
775
open('foo.txt', 'w').write('hello')
776
self.run_bzr(['add'])
831
with open('foo/foo.txt', 'w') as f:
833
self.run_bzr(['add'], working_dir='foo')
777
834
self.overrideEnv('EMAIL', None)
778
835
self.overrideEnv('BZR_EMAIL', None)
779
836
# Also, make sure that it's not inferred from mailname.
780
837
self.overrideAttr(config, '_auto_user_id',
781
838
lambda: (None, None))
782
out, err = self.run_bzr(['commit', '-m', 'initial'], 3)
783
self.assertContainsRe(err, 'Unable to determine your name')
840
['Unable to determine your name'],
841
['commit', '-m', 'initial'], working_dir='foo')
785
843
def test_commit_recursive_checkout(self):
786
844
"""Ensure that a commit to a recursive checkout fails cleanly.
788
846
self.run_bzr(['init', 'test_branch'])
789
847
self.run_bzr(['checkout', 'test_branch', 'test_checkout'])
790
os.chdir('test_checkout')
791
self.run_bzr(['bind', '.']) # bind to self
792
open('foo.txt', 'w').write('hello')
793
self.run_bzr(['add'])
794
out, err = self.run_bzr(['commit', '-m', 'addedfoo'], 3)
795
self.assertEqual(out, '')
796
self.assertContainsRe(err,
797
'Branch.*test_checkout.*appears to be bound to itself')
848
self.run_bzr(['bind', '.'], working_dir='test_checkout') # bind to self
849
with open('test_checkout/foo.txt', 'w') as f:
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')
856
def test_mv_dirs_non_ascii(self):
857
"""Move directory with non-ascii name and containing files.
859
Regression test for bug 185211.
861
tree = self.make_branch_and_tree('.')
862
self.build_tree([u'abc\xa7/', u'abc\xa7/foo'])
864
tree.add([u'abc\xa7/', u'abc\xa7/foo'])
865
tree.commit('checkin')
867
tree.rename_one(u'abc\xa7','abc')
869
self.run_bzr('ci -m "non-ascii mv"')
872
class TestSmartServerCommit(TestCaseWithTransport):
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'),
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)