~bzr-pqm/bzr/bzr.dev

1551.2.17 by Aaron Bentley
Fixed conflict commands
1
# Copyright (C) 2006 by 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
1652.1.1 by Martin Pool
Fix 'bzr resolve' run from subdirectory
19
from bzrlib.workingtree import WorkingTree
1551.2.17 by Aaron Bentley
Fixed conflict commands
20
from bzrlib.tests.blackbox import ExternalBase
21
1692.7.2 by Martin Pool
doc
22
# FIXME: These don't really look at the output of the conflict commands, just
23
# the number of lines - there should be more examination.
24
1551.2.17 by Aaron Bentley
Fixed conflict commands
25
class TestConflicts(ExternalBase):
26
    def setUp(self):
27
        super(ExternalBase, self).setUp()
28
        try:
29
            os.mkdir('a')
30
        except:
31
            raise os.getcwd()
32
        os.chdir('a')
33
        self.runbzr('init')
34
        file('myfile', 'wb').write('contentsa\n')
35
        file('my_other_file', 'wb').write('contentsa\n')
36
        self.runbzr('add')
37
        self.runbzr('commit -m new')
38
        os.chdir('..')
39
        self.runbzr('branch a b')
40
        os.chdir('b')
41
        file('myfile', 'wb').write('contentsb\n')
42
        file('my_other_file', 'wb').write('contentsb\n')
43
        self.runbzr('commit -m change')
44
        os.chdir('../a')
45
        file('myfile', 'wb').write('contentsa2\n')
46
        file('my_other_file', 'wb').write('contentsa2\n')
47
        self.runbzr('commit -m change')
48
        self.runbzr('merge ../b', retcode=1)
49
50
    def test_conflicts(self):
51
        conflicts = self.runbzr('conflicts', backtick=True)
52
        self.assertEqual(len(conflicts.splitlines()), 2)
53
54
    def test_resolve(self):
55
        self.runbzr('resolve', retcode=3)
56
        self.runbzr('resolve myfile')
57
        conflicts = self.runbzr('conflicts', backtick=True)
58
        self.assertEqual(len(conflicts.splitlines()), 1)
59
        self.runbzr('resolve my_other_file')
60
        conflicts = self.runbzr('conflicts', backtick=True)
61
        self.assertEqual(len(conflicts.splitlines()), 0)
62
63
    def test_resolve_all(self):
64
        self.runbzr('resolve --all')
65
        conflicts = self.runbzr('conflicts', backtick=True)
66
        self.assertEqual(len(conflicts.splitlines()), 0)
67
1652.1.1 by Martin Pool
Fix 'bzr resolve' run from subdirectory
68
    def test_resolve_in_subdir(self):
69
        """resolve when run from subdirectory should handle relative paths"""
70
        orig_dir = os.getcwdu()
71
        try:
72
            os.mkdir("subdir")
73
            os.chdir("subdir")
74
            self.runbzr("resolve ../myfile")
75
            os.chdir("../../b")
76
            self.runbzr("resolve ../a/myfile")
77
            wt = WorkingTree.open_containing('.')[0]
78
            conflicts = wt.conflicts()
79
            if not conflicts.is_empty():
80
                self.fail("tree still contains conflicts: %r" % conflicts)
81
        finally:
82
            os.chdir(orig_dir)