~bzr-pqm/bzr/bzr.dev

4763.2.4 by John Arbash Meinel
merge bzr.2.1 in preparation for NEWS entry.
1
# Copyright (C) 2006, 2007, 2009, 2010 Canonical Ltd
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
2
#
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.
7
#
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.
12
#
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
16
17
18
import os
19
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
20
from bzrlib.tests import TestCaseWithTransport
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
21
from bzrlib.workingtree import WorkingTree
22
23
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
24
class TestRemerge(TestCaseWithTransport):
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
25
26
    def make_file(self, name, contents):
27
        f = open(name, 'wb')
1551.7.10 by Aaron Bentley
Remerge doesn't clear unrelated conflicts
28
        try:
29
            f.write(contents)
30
        finally:
31
            f.close()
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
32
33
    def create_conflicts(self):
34
        """Create a conflicted tree"""
35
        os.mkdir('base')
36
        os.chdir('base')
37
        self.make_file('hello', "hi world")
38
        self.make_file('answer', "42")
39
        self.run_bzr('init')
40
        self.run_bzr('add')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
41
        self.run_bzr('commit -m base')
42
        self.run_bzr('branch . ../other')
43
        self.run_bzr('branch . ../this')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
44
        os.chdir('../other')
45
        self.make_file('hello', "Hello.")
46
        self.make_file('answer', "Is anyone there?")
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
47
        self.run_bzr('commit -m other')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
48
        os.chdir('../this')
49
        self.make_file('hello', "Hello, world")
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
50
        self.run_bzr('mv answer question')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
51
        self.make_file('question', "What do you get when you multiply six"
52
                                   "times nine?")
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
53
        self.run_bzr('commit -m this')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
54
55
    def test_remerge(self):
56
        """Remerge command works as expected"""
57
        self.create_conflicts()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
58
        self.run_bzr('merge ../other --show-base', retcode=1)
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
59
        conflict_text = open('hello').read()
60
        self.assertTrue('|||||||' in conflict_text)
61
        self.assertTrue('hi world' in conflict_text)
62
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
63
        self.run_bzr_error(['conflicts encountered'], 'remerge', retcode=1)
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
64
        conflict_text = open('hello').read()
65
        self.assertFalse('|||||||' in conflict_text)
66
        self.assertFalse('hi world' in conflict_text)
67
68
        os.unlink('hello.OTHER')
69
        os.unlink('question.OTHER')
70
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
71
        self.run_bzr_error(['jello is not versioned'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
72
                     'remerge jello --merge-type weave')
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
73
        self.run_bzr_error(['conflicts encountered'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
74
                           'remerge hello --merge-type weave',
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
75
                           retcode=1)
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
76
77
        self.failUnlessExists('hello.OTHER')
78
        self.failIfExists('question.OTHER')
79
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
80
        file_id = self.run_bzr('file-id hello')[0]
2067.3.1 by Martin Pool
Clean up BzrNewError, other exception classes and users.
81
        self.run_bzr_error(['hello.THIS is not versioned'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
82
                           'file-id hello.THIS')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
83
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
84
        self.run_bzr_error(['conflicts encountered'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
85
                           'remerge --merge-type weave', retcode=1)
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
86
87
        self.failUnlessExists('hello.OTHER')
4634.101.18 by John Arbash Meinel
.BASE is also dropped by remerge (expected, just didn't find the test).
88
        self.failUnless('hello.BASE')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
89
        self.assertFalse('|||||||' in conflict_text)
90
        self.assertFalse('hi world' in conflict_text)
91
92
        self.run_bzr_error(['Showing base is not supported.*Weave'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
93
                           'remerge . --merge-type weave --show-base')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
94
        self.run_bzr_error(['Can\'t reprocess and show base'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
95
                           'remerge . --show-base --reprocess')
96
        self.run_bzr_error(['conflicts encountered'],
97
                           'remerge . --merge-type weave --reprocess',
98
                           retcode=1)
99
        self.run_bzr_error(['conflicts encountered'],
100
                           'remerge hello --show-base',
101
                           retcode=1)
102
        self.run_bzr_error(['conflicts encountered'],
103
                           'remerge hello --reprocess', retcode=1)
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
104
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
105
        self.run_bzr('resolve --all')
106
        self.run_bzr('commit -m done')
1711.2.70 by John Arbash Meinel
Add run_bzr_errors alongside run_bzr, to make it easy to check the right error is occurring.
107
108
        self.run_bzr_error(['remerge only works after normal merges',
109
                            'Not cherrypicking or multi-merges'],
1711.2.72 by John Arbash Meinel
Update test_remerge with new api, and minor fixes.
110
                           'remerge')
1551.7.10 by Aaron Bentley
Remerge doesn't clear unrelated conflicts
111
112
    def test_conflicts(self):
113
        self.create_conflicts()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
114
        self.run_bzr('merge ../other', retcode=1)
1551.7.10 by Aaron Bentley
Remerge doesn't clear unrelated conflicts
115
        wt = WorkingTree.open('.')
1551.7.13 by Aaron Bentley
Switched from actual, expected to expected, actual, for John.
116
        self.assertEqual(2, len(wt.conflicts()))
1551.7.10 by Aaron Bentley
Remerge doesn't clear unrelated conflicts
117
        self.run_bzr('remerge', retcode=1)
118
        wt = WorkingTree.open('.')
1551.7.13 by Aaron Bentley
Switched from actual, expected to expected, actual, for John.
119
        self.assertEqual(2, len(wt.conflicts()))
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
120
        self.run_bzr('remerge hello', retcode=1)
1551.7.13 by Aaron Bentley
Switched from actual, expected to expected, actual, for John.
121
        self.assertEqual(2, len(wt.conflicts()))