/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: Daniel Watkins
  • Date: 2007-11-06 09:33:05 UTC
  • mfrom: (2967 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2993.
  • Revision ID: d.m.watkins@warwick.ac.uk-20071106093305-zfef3c0jbcvunnuz
Merged bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 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 sys
21
22
 
 
23
import bzrlib
22
24
from bzrlib import (
 
25
    osutils,
23
26
    ignores,
 
27
    osutils,
24
28
    )
25
29
from bzrlib.bzrdir import BzrDir
 
30
from bzrlib.tests import (
 
31
    probe_bad_non_ascii,
 
32
    TestSkipped,
 
33
    )
26
34
from bzrlib.tests.blackbox import ExternalBase
27
35
 
28
36
 
154
162
        a_tree.commit(message='Initial message')
155
163
 
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)
212
220
        os.chdir('this')
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'
219
227
            'added newdir\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)
 
252
        if char is None:
 
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,
 
256
                                          retcode=1,
 
257
                                          env_changes={'LANG': 'C'})
242
258
        self.assertContainsRe(err, r'bzrlib.errors.BzrError: Parameter.*is '
243
259
                                    'unsupported by the current encoding.')
244
260
 
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'])
 
539
 
 
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')])
 
552
        # partial commit
 
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.')
 
556
 
 
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
 
560
        # branch"
 
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'],
 
566
            retcode=3)
 
567
        self.assertContainsRe(err,
 
568
            r'^bzr: ERROR: Cannot lock.*readonly transport')