/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1551.2.17 by Aaron Bentley
Fixed conflict commands
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1551.2.17 by Aaron Bentley
Fixed conflict commands
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1551.2.17 by Aaron Bentley
Fixed conflict commands
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import os
18
2120.7.3 by Aaron Bentley
Update resolve command to automatically mark conflicts as resolved
19
from bzrlib import (
20
    conflicts
21
    )
1652.1.1 by Martin Pool
Fix 'bzr resolve' run from subdirectory
22
from bzrlib.workingtree import WorkingTree
1551.2.17 by Aaron Bentley
Fixed conflict commands
23
from bzrlib.tests.blackbox import ExternalBase
24
1692.7.2 by Martin Pool
doc
25
# FIXME: These don't really look at the output of the conflict commands, just
26
# the number of lines - there should be more examination.
27
1551.2.17 by Aaron Bentley
Fixed conflict commands
28
class TestConflicts(ExternalBase):
29
    def setUp(self):
30
        super(ExternalBase, self).setUp()
31
        try:
32
            os.mkdir('a')
33
        except:
34
            raise os.getcwd()
35
        os.chdir('a')
36
        self.runbzr('init')
37
        file('myfile', 'wb').write('contentsa\n')
38
        file('my_other_file', 'wb').write('contentsa\n')
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
39
        os.mkdir('mydir')
1551.2.17 by Aaron Bentley
Fixed conflict commands
40
        self.runbzr('add')
41
        self.runbzr('commit -m new')
42
        os.chdir('..')
43
        self.runbzr('branch a b')
44
        os.chdir('b')
45
        file('myfile', 'wb').write('contentsb\n')
46
        file('my_other_file', 'wb').write('contentsb\n')
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
47
        self.runbzr('mv mydir mydir2')
1551.2.17 by Aaron Bentley
Fixed conflict commands
48
        self.runbzr('commit -m change')
49
        os.chdir('../a')
50
        file('myfile', 'wb').write('contentsa2\n')
51
        file('my_other_file', 'wb').write('contentsa2\n')
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
52
        self.runbzr('mv mydir mydir3')
1551.2.17 by Aaron Bentley
Fixed conflict commands
53
        self.runbzr('commit -m change')
54
        self.runbzr('merge ../b', retcode=1)
55
56
    def test_conflicts(self):
57
        conflicts = self.runbzr('conflicts', backtick=True)
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
58
        self.assertEqual(3, len(conflicts.splitlines()))
59
60
    def test_conflicts_text(self):
61
        conflicts = self.run_bzr('conflicts', '--text')[0].splitlines()
62
        self.assertEqual(['my_other_file', 'myfile'], conflicts)
1551.2.17 by Aaron Bentley
Fixed conflict commands
63
64
    def test_resolve(self):
65
        self.runbzr('resolve myfile')
66
        conflicts = self.runbzr('conflicts', backtick=True)
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
67
        self.assertEqual(2, len(conflicts.splitlines()))
1551.2.17 by Aaron Bentley
Fixed conflict commands
68
        self.runbzr('resolve my_other_file')
1551.9.8 by Aaron Bentley
Add --text parameter to conflicts
69
        self.runbzr('resolve mydir2')
1551.2.17 by Aaron Bentley
Fixed conflict commands
70
        conflicts = self.runbzr('conflicts', backtick=True)
71
        self.assertEqual(len(conflicts.splitlines()), 0)
72
73
    def test_resolve_all(self):
74
        self.runbzr('resolve --all')
75
        conflicts = self.runbzr('conflicts', backtick=True)
76
        self.assertEqual(len(conflicts.splitlines()), 0)
77
1652.1.1 by Martin Pool
Fix 'bzr resolve' run from subdirectory
78
    def test_resolve_in_subdir(self):
79
        """resolve when run from subdirectory should handle relative paths"""
80
        orig_dir = os.getcwdu()
81
        try:
82
            os.mkdir("subdir")
83
            os.chdir("subdir")
84
            self.runbzr("resolve ../myfile")
85
            os.chdir("../../b")
86
            self.runbzr("resolve ../a/myfile")
87
            wt = WorkingTree.open_containing('.')[0]
88
            conflicts = wt.conflicts()
89
            if not conflicts.is_empty():
90
                self.fail("tree still contains conflicts: %r" % conflicts)
91
        finally:
92
            os.chdir(orig_dir)
2120.7.3 by Aaron Bentley
Update resolve command to automatically mark conflicts as resolved
93
94
    def test_auto_resolve(self):
95
        """Text conflicts can be resolved automatically"""
96
        tree = self.make_branch_and_tree('tree')
97
        self.build_tree_contents([('tree/file',
98
            '<<<<<<<\na\n=======\n>>>>>>>\n')])
99
        tree.add('file', 'file_id')
100
        self.assertEqual(tree.kind('file_id'), 'file')
101
        file_conflict = conflicts.TextConflict('file', file_id='file_id')
102
        tree.set_conflicts(conflicts.ConflictList([file_conflict]))
103
        os.chdir('tree')
104
        note = self.run_bzr('resolve', retcode=1)[1]
105
        self.assertContainsRe(note, '0 conflict\\(s\\) auto-resolved.')
106
        self.assertContainsRe(note,
107
            'Remaining conflicts:\nText conflict in file')
108
        self.build_tree_contents([('file', 'a\n')])
109
        note = self.run_bzr('resolve')[1]
110
        self.assertContainsRe(note, 'All conflicts resolved.')