~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2005 Canonical Ltd
1685.1.80 by Wouter van Heyst
more code cleanup
2
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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.
1685.1.80 by Wouter van Heyst
more code cleanup
7
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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.
1685.1.80 by Wouter van Heyst
more code cleanup
12
#
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
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
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
16
17
import os
18
19
1534.4.28 by Robert Collins
first cut at merge from integration.
20
from bzrlib.builtins import merge
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
21
from bzrlib.missing import find_unmerged, iter_log_data
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
22
from bzrlib.tests import TestCaseWithTransport
23
from bzrlib.workingtree import WorkingTree
24
1534.4.28 by Robert Collins
first cut at merge from integration.
25
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
26
class TestMissing(TestCaseWithTransport):
27
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
28
    def test_find_unmerged(self):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
29
        original_tree = self.make_branch_and_tree('original')
30
        original = original_tree.branch
31
        puller_tree = self.make_branch_and_tree('puller')
32
        puller = puller_tree.branch
33
        merger_tree = self.make_branch_and_tree('merger')
34
        merger = merger_tree.branch
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
35
        self.assertEqual(find_unmerged(original, puller), ([], []))
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
36
        original_tree.commit('a', rev_id='a')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
37
        self.assertEqual(find_unmerged(original, puller), ([(1, u'a')], []))
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
38
        puller_tree.pull(original)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
39
        self.assertEqual(find_unmerged(original, puller), ([], []))
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
40
        merger_tree.pull(original)
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
41
        original_tree.commit('b', rev_id='b')
42
        original_tree.commit('c', rev_id='c')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
43
        self.assertEqual(find_unmerged(original, puller), ([(2, u'b'), 
44
                                                            (3, u'c')], []))
45
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
46
        puller_tree.pull(original)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
47
        self.assertEqual(find_unmerged(original, puller), ([], []))
48
        self.assertEqual(find_unmerged(original, merger), ([(2, u'b'), 
49
                                                            (3, u'c')], []))
50
        merge(['original', -1], [None, None], this_dir='merger')
51
        self.assertEqual(find_unmerged(original, merger), ([(2, u'b'), 
52
                                                            (3, u'c')], []))
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
53
        merger_tree.commit('d', rev_id='d')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
54
        self.assertEqual(find_unmerged(original, merger), ([], [(2, 'd')]))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
55
56
    def test_iter_log_data(self):
57
        base_tree = self.make_branch_and_tree('base')
58
        self.build_tree(['base/a'])
59
        base_tree.add(['a'], ['a-id'])
60
        base_tree.commit('add a', rev_id='b-1')
61
62
        child_tree = base_tree.bzrdir.sprout('child').open_workingtree()
63
64
        self.build_tree(['child/b'])
65
        child_tree.add(['b'], ['b-id'])
66
        child_tree.commit('adding b', rev_id='c-2')
67
68
        child_tree.remove(['a'])
69
        child_tree.commit('removing a', rev_id='c-3')
70
71
        self.build_tree_contents([('child/b', 'new contents for b\n')])
72
        child_tree.commit('modifying b', rev_id='c-4')
73
74
        child_tree.rename_one('b', 'c')
75
        child_tree.commit('rename b=>c', rev_id='c-5')
76
77
        base_extra, child_extra = find_unmerged(base_tree.branch,
78
                                                child_tree.branch)
79
        results = list(iter_log_data(base_extra, base_tree.branch.repository,
80
                                     verbose=True))
81
        self.assertEqual([], results)
82
83
        results = list(iter_log_data(child_extra, child_tree.branch.repository,
84
                                     verbose=True))
85
        self.assertEqual(4, len(results))
86
87
        r0,r1,r2,r3 = results
88
89
        self.assertEqual((2, 'c-2'), (r0[0], r0[1].revision_id))
90
        self.assertEqual((3, 'c-3'), (r1[0], r1[1].revision_id))
91
        self.assertEqual((4, 'c-4'), (r2[0], r2[1].revision_id))
92
        self.assertEqual((5, 'c-5'), (r3[0], r3[1].revision_id))
93
94
        delta0 = r0[2]
95
        self.assertNotEqual(None, delta0)
96
        self.assertEqual([('b', 'b-id', 'file')], delta0.added)
97
        self.assertEqual([], delta0.removed)
98
        self.assertEqual([], delta0.renamed)
99
        self.assertEqual([], delta0.modified)
100
101
        delta1 = r1[2]
102
        self.assertNotEqual(None, delta1)
103
        self.assertEqual([], delta1.added)
104
        self.assertEqual([('a', 'a-id', 'file')], delta1.removed)
105
        self.assertEqual([], delta1.renamed)
106
        self.assertEqual([], delta1.modified)
107
108
        delta2 = r2[2]
109
        self.assertNotEqual(None, delta2)
110
        self.assertEqual([], delta2.added)
111
        self.assertEqual([], delta2.removed)
112
        self.assertEqual([], delta2.renamed)
113
        self.assertEqual([('b', 'b-id', 'file', True, False)], delta2.modified)
114
115
        delta3 = r3[2]
116
        self.assertNotEqual(None, delta3)
117
        self.assertEqual([], delta3.added)
118
        self.assertEqual([], delta3.removed)
119
        self.assertEqual([('b', 'c', 'b-id', 'file', False, False)],
120
                         delta3.renamed)
121
        self.assertEqual([], delta3.modified)