1
# Copyright (C) 2005, 2006 Canonical Ltd
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
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
154
162
a_tree.commit(message='Initial message')
156
164
b_tree = a_tree.branch.create_checkout('b')
157
expected = "%s/" % (os.path.abspath('a'), )
165
expected = "%s/" % (osutils.abspath('a'), )
158
166
out, err = self.run_bzr('commit -m blah --unchanged', working_dir='b')
159
167
self.assertEqual(err, 'Committing revision 2 to "%s".\n'
160
168
'Committed revision 2.\n' % expected)
213
221
out,err = self.run_bzr('commit -m added')
214
222
self.assertEqual('', out)
215
expected = '%s/' % (os.getcwd(), )
223
expected = '%s/' % (osutils.getcwd(), )
216
224
self.assertEqualDiff(
217
225
'Committing revision 2 to "%s".\n'
218
226
'modified filetomodify\n'
220
228
'added newfile\n'
221
229
'renamed dirtorename => renameddir\n'
230
'renamed filetorename => renamedfile\n'
222
231
'renamed dirtoreparent => renameddir/reparenteddir\n'
223
232
'renamed filetoreparent => renameddir/reparentedfile\n'
224
'renamed filetorename => renamedfile\n'
225
233
'deleted dirtoremove\n'
226
234
'deleted filetoremove\n'
227
235
'Committed revision 2.\n' % (expected, ),
237
245
tree = self.make_branch_and_tree('.')
238
246
self.build_tree_contents([('foo.c', 'int main() {}')])
239
247
tree.add('foo.c')
240
out,err = self.run_bzr_subprocess('commit -m "\xff"', retcode=1,
241
env_changes={'LANG': 'C'})
248
# LANG env variable has no effect on Windows
249
# but some characters anyway cannot be represented
250
# in default user encoding
251
char = probe_bad_non_ascii(bzrlib.user_encoding)
253
raise TestSkipped('Cannot find suitable non-ascii character'
254
'for user_encoding (%s)' % bzrlib.user_encoding)
255
out,err = self.run_bzr_subprocess('commit -m "%s"' % char,
257
env_changes={'LANG': 'C'})
242
258
self.assertContainsRe(err, r'bzrlib.errors.BzrError: Parameter.*is '
243
259
'unsupported by the current encoding.')
520
536
last_rev = tree.branch.repository.get_revision(tree.last_revision())
521
537
properties = last_rev.properties
522
538
self.assertEqual('John Doe', properties['author'])
540
def test_partial_commit_with_renames_in_tree(self):
541
# this test illustrates bug #140419
542
t = self.make_branch_and_tree('.')
543
self.build_tree(['dir/', 'dir/a', 'test'])
544
t.add(['dir/', 'dir/a', 'test'])
545
t.commit('initial commit')
546
# important part: file dir/a should change parent
547
# and should appear before old parent
548
# then during partial commit we have error
549
# parent_id {dir-XXX} not in inventory
550
t.rename_one('dir/a', 'a')
551
self.build_tree_contents([('test', 'changes in test')])
553
out, err = self.run_bzr('commit test -m "partial commit"')
554
self.assertEquals('', out)
555
self.assertContainsRe(err, r'modified test\nCommitted revision 2.')
557
def test_commit_readonly_checkout(self):
558
# https://bugs.edge.launchpad.net/bzr/+bug/129701
559
# "UnlockableTransport error trying to commit in checkout of readonly
561
self.make_branch('master')
562
master = BzrDir.open_from_transport(
563
self.get_readonly_transport('master')).open_branch()
564
master.create_checkout('checkout')
565
out, err = self.run_bzr(['commit', '--unchanged', '-mfoo', 'checkout'],
567
self.assertContainsRe(err,
568
r'^bzr: ERROR: Cannot lock.*readonly transport')