~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
2490.1.2 by John Arbash Meinel
Cleanup according to PEP8 and some other small whitespace fixes
20
from bzrlib.missing import (
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
21
    find_unmerged,
22
    iter_log_revisions,
23
    )
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
24
from bzrlib.tests import TestCaseWithTransport
25
from bzrlib.workingtree import WorkingTree
26
1534.4.28 by Robert Collins
first cut at merge from integration.
27
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
28
class TestMissing(TestCaseWithTransport):
29
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
30
    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.
31
        original_tree = self.make_branch_and_tree('original')
32
        original = original_tree.branch
33
        puller_tree = self.make_branch_and_tree('puller')
34
        puller = puller_tree.branch
35
        merger_tree = self.make_branch_and_tree('merger')
36
        merger = merger_tree.branch
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
37
        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.
38
        original_tree.commit('a', rev_id='a')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
39
        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
40
        puller_tree.pull(original)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
41
        self.assertEqual(find_unmerged(original, puller), ([], []))
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
42
        merger_tree.pull(original)
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
43
        original_tree.commit('b', rev_id='b')
44
        original_tree.commit('c', rev_id='c')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
45
        self.assertEqual(find_unmerged(original, puller), ([(2, u'b'), 
46
                                                            (3, u'c')], []))
47
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
48
        puller_tree.pull(original)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
49
        self.assertEqual(find_unmerged(original, puller), ([], []))
50
        self.assertEqual(find_unmerged(original, merger), ([(2, u'b'), 
51
                                                            (3, u'c')], []))
1551.15.70 by Aaron Bentley
Avoid using builtins.merge
52
        merger_tree.merge_from_branch(original)
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
53
        self.assertEqual(find_unmerged(original, merger), ([(2, u'b'), 
54
                                                            (3, u'c')], []))
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
55
        merger_tree.commit('d', rev_id='d')
1185.54.23 by Aaron Bentley
Added unit tests for find_unmerged
56
        self.assertEqual(find_unmerged(original, merger), ([], [(2, 'd')]))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
57
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
58
    def test_iter_log_revisions(self):
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
59
        base_tree = self.make_branch_and_tree('base')
60
        self.build_tree(['base/a'])
61
        base_tree.add(['a'], ['a-id'])
62
        base_tree.commit('add a', rev_id='b-1')
63
64
        child_tree = base_tree.bzrdir.sprout('child').open_workingtree()
65
66
        self.build_tree(['child/b'])
67
        child_tree.add(['b'], ['b-id'])
68
        child_tree.commit('adding b', rev_id='c-2')
69
70
        child_tree.remove(['a'])
71
        child_tree.commit('removing a', rev_id='c-3')
72
73
        self.build_tree_contents([('child/b', 'new contents for b\n')])
74
        child_tree.commit('modifying b', rev_id='c-4')
75
76
        child_tree.rename_one('b', 'c')
77
        child_tree.commit('rename b=>c', rev_id='c-5')
78
79
        base_extra, child_extra = find_unmerged(base_tree.branch,
80
                                                child_tree.branch)
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
81
        results = list(iter_log_revisions(base_extra, 
82
                            base_tree.branch.repository,
83
                            verbose=True))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
84
        self.assertEqual([], results)
85
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
86
        results = list(iter_log_revisions(child_extra,
87
                            child_tree.branch.repository,
88
                            verbose=True))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
89
        self.assertEqual(4, len(results))
90
91
        r0,r1,r2,r3 = results
92
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
93
        self.assertEqual((2, 'c-2'), (r0.revno, r0.rev.revision_id))
94
        self.assertEqual((3, 'c-3'), (r1.revno, r1.rev.revision_id))
95
        self.assertEqual((4, 'c-4'), (r2.revno, r2.rev.revision_id))
96
        self.assertEqual((5, 'c-5'), (r3.revno, r3.rev.revision_id))
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
97
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
98
        delta0 = r0.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
99
        self.assertNotEqual(None, delta0)
100
        self.assertEqual([('b', 'b-id', 'file')], delta0.added)
101
        self.assertEqual([], delta0.removed)
102
        self.assertEqual([], delta0.renamed)
103
        self.assertEqual([], delta0.modified)
104
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
105
        delta1 = r1.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
106
        self.assertNotEqual(None, delta1)
107
        self.assertEqual([], delta1.added)
108
        self.assertEqual([('a', 'a-id', 'file')], delta1.removed)
109
        self.assertEqual([], delta1.renamed)
110
        self.assertEqual([], delta1.modified)
111
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
112
        delta2 = r2.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
113
        self.assertNotEqual(None, delta2)
114
        self.assertEqual([], delta2.added)
115
        self.assertEqual([], delta2.removed)
116
        self.assertEqual([], delta2.renamed)
117
        self.assertEqual([('b', 'b-id', 'file', True, False)], delta2.modified)
118
2466.8.1 by Kent Gibson
Reworked LogFormatter API to simplify extending the attributes of the revision being logged. Added support for begin_log() and end_log() hooks in LogFormatters.
119
        delta3 = r3.delta
2204.1.1 by John Arbash Meinel
'bzr missing -v' was showing adds as deletes.
120
        self.assertNotEqual(None, delta3)
121
        self.assertEqual([], delta3.added)
122
        self.assertEqual([], delta3.removed)
123
        self.assertEqual([('b', 'c', 'b-id', 'file', False, False)],
124
                         delta3.renamed)
125
        self.assertEqual([], delta3.modified)