~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_revision.py

  • Committer: Aaron Bentley
  • Date: 2006-02-22 14:39:42 UTC
  • mto: (2027.1.2 revert-subpath-56549)
  • mto: This revision was merged to the branch mainline in revision 1570.
  • Revision ID: abentley@panoramicfeedback.com-20060222143942-ae72299f2de66767
Fixed build_tree with symlinks

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
import os
19
19
 
20
 
from bzrlib.tests import TestCaseInTempDir
21
20
from bzrlib.branch import Branch
 
21
from bzrlib.errors import NoSuchRevision
22
22
from bzrlib.commit import commit
23
23
from bzrlib.fetch import fetch
24
24
from bzrlib.revision import (find_present_ancestors, combined_graph,
25
25
                             is_ancestor, MultipleRevisionSources)
 
26
from bzrlib.tests import TestCaseWithTransport
26
27
from bzrlib.trace import mutter
27
 
from bzrlib.errors import NoSuchRevision
 
28
from bzrlib.workingtree import WorkingTree
28
29
 
29
30
# XXX: Make this a method of a merge base case
30
31
def make_branches(self):
48
49
    so A is missing b6 at the start
49
50
    and B is missing a3, a4, a5
50
51
    """
51
 
    os.mkdir("branch1")
52
 
    br1 = Branch.initialize("branch1")
 
52
    tree1 = self.make_branch_and_tree("branch1")
 
53
    br1 = tree1.branch
53
54
    
54
 
    commit(br1, "Commit one", rev_id="a@u-0-0")
55
 
    commit(br1, "Commit two", rev_id="a@u-0-1")
56
 
    commit(br1, "Commit three", rev_id="a@u-0-2")
 
55
    tree1.commit("Commit one", rev_id="a@u-0-0")
 
56
    tree1.commit("Commit two", rev_id="a@u-0-1")
 
57
    tree1.commit("Commit three", rev_id="a@u-0-2")
57
58
 
58
 
    os.mkdir("branch2")
59
 
    br2 = Branch.initialize("branch2")
 
59
    tree2 = self.make_branch_and_tree("branch2")
 
60
    br2 = tree2.branch
60
61
    br2.update_revisions(br1)
61
 
    commit(br2, "Commit four", rev_id="b@u-0-3")
62
 
    commit(br2, "Commit five", rev_id="b@u-0-4")
 
62
    tree2.commit("Commit four", rev_id="b@u-0-3")
 
63
    tree2.commit("Commit five", rev_id="b@u-0-4")
63
64
    revisions_2 = br2.revision_history()
64
65
    
65
66
    fetch(from_branch=br2, to_branch=br1)
66
 
    br1.working_tree().add_pending_merge(revisions_2[4])
 
67
    tree1.add_pending_merge(revisions_2[4])
67
68
    self.assertEquals(revisions_2[4], 'b@u-0-4')
68
 
    commit(br1, "Commit six", rev_id="a@u-0-3")
69
 
    commit(br1, "Commit seven", rev_id="a@u-0-4")
70
 
    commit(br2, "Commit eight", rev_id="b@u-0-5")
 
69
    tree1.commit("Commit six", rev_id="a@u-0-3")
 
70
    tree1.commit("Commit seven", rev_id="a@u-0-4")
 
71
    tree2.commit("Commit eight", rev_id="b@u-0-5")
71
72
    
72
73
    fetch(from_branch=br2, to_branch=br1)
73
 
    br1.working_tree().add_pending_merge(br2.revision_history()[5])
74
 
    commit(br1, "Commit nine", rev_id="a@u-0-5")
 
74
    tree1.add_pending_merge(br2.revision_history()[5])
 
75
    tree1.commit("Commit nine", rev_id="a@u-0-5")
75
76
    # DO NOT FETCH HERE - we WANT a GHOST.
76
77
    #fetch(from_branch=br1, to_branch=br2)
77
 
    br2.working_tree().add_pending_merge(br1.revision_history()[4])
78
 
    commit(br2, "Commit ten - ghost merge", rev_id="b@u-0-6")
 
78
    tree2.add_pending_merge(br1.revision_history()[4])
 
79
    tree2.commit("Commit ten - ghost merge", rev_id="b@u-0-6")
79
80
    
80
81
    return br1, br2
81
82
 
82
83
 
83
 
class TestIsAncestor(TestCaseInTempDir):
 
84
class TestIsAncestor(TestCaseWithTransport):
 
85
 
84
86
    def test_recorded_ancestry(self):
85
87
        """Test that commit records all ancestors"""
86
88
        br1, br2 = make_branches(self)
112
114
                if rev_id in br2_only and not branch is br2:
113
115
                    continue
114
116
                mutter('ancestry of {%s}: %r',
115
 
                       rev_id, branch.get_ancestry(rev_id))
116
 
                self.assertEquals(sorted(branch.get_ancestry(rev_id)),
117
 
                                  [None] + sorted(anc))
 
117
                       rev_id, branch.repository.get_ancestry(rev_id))
 
118
                result = sorted(branch.repository.get_ancestry(rev_id))
 
119
                self.assertEquals(result, [None] + sorted(anc))
118
120
    
119
121
    
120
122
    def test_is_ancestor(self):
137
139
        ## self.assert_(not is_ancestor(revisions[3], revisions_2[3], br1))
138
140
 
139
141
 
140
 
class TestIntermediateRevisions(TestCaseInTempDir):
 
142
class TestIntermediateRevisions(TestCaseWithTransport):
141
143
 
142
144
    def setUp(self):
143
145
        from bzrlib.commit import commit
144
 
        TestCaseInTempDir.setUp(self)
 
146
        TestCaseWithTransport.setUp(self)
145
147
        self.br1, self.br2 = make_branches(self)
146
 
 
147
 
        self.br2.working_tree().commit("Commit eleven", rev_id="b@u-0-7")
148
 
        self.br2.working_tree().commit("Commit twelve", rev_id="b@u-0-8")
149
 
        self.br2.working_tree().commit("Commit thirtteen", rev_id="b@u-0-9")
 
148
        wt1 = self.br1.bzrdir.open_workingtree()
 
149
        wt2 = self.br2.bzrdir.open_workingtree()
 
150
        wt2.commit("Commit eleven", rev_id="b@u-0-7")
 
151
        wt2.commit("Commit twelve", rev_id="b@u-0-8")
 
152
        wt2.commit("Commit thirtteen", rev_id="b@u-0-9")
150
153
 
151
154
        fetch(from_branch=self.br2, to_branch=self.br1)
152
 
        self.br1.working_tree().add_pending_merge(self.br2.revision_history()[6])
153
 
        self.br1.working_tree().commit("Commit fourtten", rev_id="a@u-0-6")
 
155
        wt1.add_pending_merge(self.br2.revision_history()[6])
 
156
        wt1.commit("Commit fourtten", rev_id="a@u-0-6")
154
157
 
155
158
        fetch(from_branch=self.br1, to_branch=self.br2)
156
 
        self.br2.working_tree().add_pending_merge(self.br1.revision_history()[6])
157
 
        self.br2.working_tree().commit("Commit fifteen", rev_id="b@u-0-10")
 
159
        wt2.add_pending_merge(self.br1.revision_history()[6])
 
160
        wt2.commit("Commit fifteen", rev_id="b@u-0-10")
158
161
 
159
162
        from bzrlib.revision import MultipleRevisionSources
160
 
        self.sources = MultipleRevisionSources(self.br1, self.br2)
 
163
        self.sources = MultipleRevisionSources(self.br1.repository,
 
164
                                               self.br2.repository)
161
165
 
162
166
    def intervene(self, ancestor, revision, revision_history=None):
163
167
        from bzrlib.revision import get_intervening_revisions
205
209
                          'c@u-0-6', self.br2.revision_history())
206
210
 
207
211
 
208
 
class TestCommonAncestor(TestCaseInTempDir):
 
212
class TestCommonAncestor(TestCaseWithTransport):
209
213
    """Test checking whether a revision is an ancestor of another revision"""
210
214
 
211
215
    def test_old_common_ancestor(self):
214
218
        br1, br2 = make_branches(self)
215
219
        revisions = br1.revision_history()
216
220
        revisions_2 = br2.revision_history()
217
 
        sources = br1
 
221
        sources = br1.repository
218
222
 
219
223
        expected_ancestors_list = {revisions[3]:(0, 0), 
220
224
                                   revisions[2]:(1, 1),
253
257
        br1, br2 = make_branches(self)
254
258
        revisions = br1.revision_history()
255
259
        revisions_2 = br2.revision_history()
256
 
        sources = MultipleRevisionSources(br1, br2)
 
260
        sources = MultipleRevisionSources(br1.repository, br2.repository)
257
261
        expected_ancestors_list = {revisions[3]:(0, 0), 
258
262
                                   revisions[2]:(1, 1),
259
263
                                   revisions_2[4]:(2, 1), 
288
292
        Ensure it's not order-sensitive
289
293
        """
290
294
        br1, br2 = make_branches(self)
291
 
        source = MultipleRevisionSources(br1, br2)
 
295
        source = MultipleRevisionSources(br1.repository, br2.repository)
292
296
        combined_1 = combined_graph(br1.last_revision(), 
293
297
                                    br2.last_revision(), source)
294
298
        combined_2 = combined_graph(br2.last_revision(),
297
301
        self.assertEquals(combined_1[2], combined_2[2])
298
302
        self.assertEquals(combined_1[3], combined_2[3])
299
303
        self.assertEquals(combined_1, combined_2)
 
304
 
 
305
    def test_get_history(self):
 
306
        # TODO: test ghosts on the left hand branch's impact
 
307
        # TODO: test ghosts on all parents, we should get some
 
308
        # indicator. i.e. NULL_REVISION
 
309
        # RBC 20060608
 
310
        tree = self.make_branch_and_tree('.')
 
311
        tree.commit('1', rev_id = '1', allow_pointless=True)
 
312
        tree.commit('2', rev_id = '2', allow_pointless=True)
 
313
        tree.commit('3', rev_id = '3', allow_pointless=True)
 
314
        rev = tree.branch.repository.get_revision('1')
 
315
        history = rev.get_history(tree.branch.repository)
 
316
        self.assertEqual([None, '1'], history)
 
317
        rev = tree.branch.repository.get_revision('2')
 
318
        history = rev.get_history(tree.branch.repository)
 
319
        self.assertEqual([None, '1', '2'], history)
 
320
        rev = tree.branch.repository.get_revision('3')
 
321
        history = rev.get_history(tree.branch.repository)
 
322
        self.assertEqual([None, '1', '2' ,'3'], history)