~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testrevision.py

  • Committer: Martin Pool
  • Date: 2005-09-13 01:37:23 UTC
  • Revision ID: mbp@sourcefrog.net-20050913013723-7e0026b48cbf08ff
- BROKEN: start refactoring fetch code to work well with weaves

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
 
18
 
import os
19
 
 
20
17
from bzrlib.selftest import TestCaseInTempDir
21
 
from bzrlib.branch import Branch
22
 
from bzrlib.commit import commit
23
 
from bzrlib.fetch import fetch
24
 
from bzrlib.revision import (find_present_ancestors, common_ancestor,
25
 
                             is_ancestor)
26
 
from bzrlib.trace import mutter
27
 
from bzrlib.errors import NoSuchRevision
 
18
 
28
19
 
29
20
def make_branches():
 
21
    from bzrlib.branch import Branch
 
22
    from bzrlib.commit import commit
 
23
    import os
30
24
    os.mkdir("branch1")
31
25
    br1 = Branch("branch1", init=True)
32
26
    
40
34
    commit(br2, "Commit four", rev_id="b@u-0-3")
41
35
    commit(br2, "Commit five", rev_id="b@u-0-4")
42
36
    revisions_2 = br2.revision_history()
43
 
    
44
 
    fetch(from_branch=br2, to_branch=br1)
45
37
    br1.add_pending_merge(revisions_2[4])
46
 
    assert revisions_2[4] == 'b@u-0-4'
47
38
    commit(br1, "Commit six", rev_id="a@u-0-3")
48
39
    commit(br1, "Commit seven", rev_id="a@u-0-4")
49
40
    commit(br2, "Commit eight", rev_id="b@u-0-5")
50
 
    
51
 
    fetch(from_branch=br2, to_branch=br1)
52
41
    br1.add_pending_merge(br2.revision_history()[5])
53
42
    commit(br1, "Commit nine", rev_id="a@u-0-5")
54
 
 
55
 
    fetch(from_branch=br1, to_branch=br2)
56
43
    br2.add_pending_merge(br1.revision_history()[4])
57
44
    commit(br2, "Commit ten", rev_id="b@u-0-6")
58
 
 
59
 
    fetch(from_branch=br2, to_branch=br1)
60
 
    
61
45
    return br1, br2
62
46
 
63
47
 
64
48
class TestIsAncestor(TestCaseInTempDir):
65
 
    def test_recorded_ancestry(self):
66
 
        """Test that commit records all ancestors"""
67
 
        br1, br2 = make_branches()
68
 
        d = [('a@u-0-0', ['a@u-0-0']),
69
 
             ('a@u-0-1', ['a@u-0-0', 'a@u-0-1']),
70
 
             ('a@u-0-2', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2']),
71
 
             ('b@u-0-3', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'b@u-0-3']),
72
 
             ('b@u-0-4', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'b@u-0-3',
73
 
                          'b@u-0-4']),
74
 
             ('a@u-0-3', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'b@u-0-3', 'b@u-0-4',
75
 
                          'a@u-0-3']),
76
 
             ('a@u-0-4', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'b@u-0-3', 'b@u-0-4',
77
 
                          'a@u-0-3', 'a@u-0-4']),
78
 
             ('b@u-0-5', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'b@u-0-3', 'b@u-0-4',
79
 
                          'b@u-0-5']),
80
 
             ('a@u-0-5', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'a@u-0-3', 'a@u-0-4',
81
 
                          'b@u-0-3', 'b@u-0-4',
82
 
                          'b@u-0-5', 'a@u-0-5']),
83
 
             ('b@u-0-6', ['a@u-0-0', 'a@u-0-1', 'a@u-0-2', 'a@u-0-3', 'a@u-0-4',
84
 
                          'b@u-0-3', 'b@u-0-4',
85
 
                          'b@u-0-5', 'b@u-0-6']),
86
 
             ]
87
 
        for branch in br1, br2:
88
 
            for rev_id, anc in d:
89
 
                mutter('ancestry of {%s}: %r',
90
 
                       rev_id, branch.get_ancestry(rev_id))
91
 
                self.assertEquals(sorted(branch.get_ancestry(rev_id)),
92
 
                                  sorted(anc))
93
 
    
94
 
    
95
49
    def test_is_ancestor(self):
96
50
        """Test checking whether a revision is an ancestor of another revision"""
 
51
        from bzrlib.revision import is_ancestor, MultipleRevisionSources
 
52
        from bzrlib.errors import NoSuchRevision
97
53
        br1, br2 = make_branches()
98
54
        revisions = br1.revision_history()
99
55
        revisions_2 = br2.revision_history()
100
 
        sources = br1
 
56
        sources = MultipleRevisionSources(br1, br2)
101
57
 
102
 
        assert is_ancestor(revisions[0], revisions[0], br1)
 
58
        assert is_ancestor(revisions[0], revisions[0], sources)
103
59
        assert is_ancestor(revisions[1], revisions[0], sources)
104
60
        assert not is_ancestor(revisions[0], revisions[1], sources)
105
61
        assert is_ancestor(revisions_2[3], revisions[0], sources)
106
 
        # disabled mbp 20050914, doesn't seem to happen anymore
107
 
        ## self.assertRaises(NoSuchRevision, is_ancestor, revisions_2[3],
108
 
        ##                  revisions[0], br1)        
 
62
        self.assertRaises(NoSuchRevision, is_ancestor, revisions_2[3],
 
63
                          revisions[0], br1)        
109
64
        assert is_ancestor(revisions[3], revisions_2[4], sources)
110
65
        assert is_ancestor(revisions[3], revisions_2[4], br1)
111
66
        assert is_ancestor(revisions[3], revisions_2[3], sources)
112
 
        ## assert not is_ancestor(revisions[3], revisions_2[3], br1)
113
 
 
114
 
 
 
67
        assert not is_ancestor(revisions[3], revisions_2[3], br1)
115
68
 
116
69
class TestIntermediateRevisions(TestCaseInTempDir):
117
70
 
119
72
        from bzrlib.commit import commit
120
73
        TestCaseInTempDir.setUp(self)
121
74
        self.br1, self.br2 = make_branches()
122
 
 
123
 
        self.br2.commit("Commit eleven", rev_id="b@u-0-7")
124
 
        self.br2.commit("Commit twelve", rev_id="b@u-0-8")
125
 
        self.br2.commit("Commit thirtteen", rev_id="b@u-0-9")
126
 
 
127
 
        fetch(from_branch=self.br2, to_branch=self.br1)
 
75
        commit(self.br2, "Commit eleven", rev_id="b@u-0-7")
 
76
        commit(self.br2, "Commit twelve", rev_id="b@u-0-8")
 
77
        commit(self.br2, "Commit thirtteen", rev_id="b@u-0-9")
128
78
        self.br1.add_pending_merge(self.br2.revision_history()[6])
129
 
        self.br1.commit("Commit fourtten", rev_id="a@u-0-6")
130
 
 
131
 
        fetch(from_branch=self.br1, to_branch=self.br2)
 
79
        commit(self.br1, "Commit fourtten", rev_id="a@u-0-6")
132
80
        self.br2.add_pending_merge(self.br1.revision_history()[6])
133
 
        self.br2.commit("Commit fifteen", rev_id="b@u-0-10")
 
81
        commit(self.br2, "Commit fifteen", rev_id="b@u-0-10")
134
82
 
135
83
        from bzrlib.revision import MultipleRevisionSources
136
84
        self.sources = MultipleRevisionSources(self.br1, self.br2)
185
133
    """Test checking whether a revision is an ancestor of another revision"""
186
134
 
187
135
    def test_common_ancestor(self):
 
136
        from bzrlib.revision import find_present_ancestors, common_ancestor
 
137
        from bzrlib.revision import MultipleRevisionSources
188
138
        br1, br2 = make_branches()
189
139
        revisions = br1.revision_history()
190
140
        revisions_2 = br2.revision_history()
191
 
        sources = br1
 
141
        sources = MultipleRevisionSources(br1, br2)
192
142
 
193
143
        expected_ancestors_list = {revisions[3]:(0, 0), 
194
144
                                   revisions[2]:(1, 1),
219
169
                          revisions[4])
220
170
        self.assertEqual(common_ancestor(revisions_2[6], revisions[5], sources),
221
171
                          revisions_2[5])
222
 
 
223
 
 
224
 
if __name__ == '__main__':
225
 
    import unittest, sys
226
 
    unittest.main()
227