~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/interversionedfile_implementations/test_join.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-03-26 03:06:52 UTC
  • mfrom: (3287.5.10 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080326030652-vgwdkwda9mi8s200
Deprecate VersionedFile.get_parents. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
96
96
                         'v-1 v-2 v-3'.split())
97
97
        self.assertEqualDiff(w1.get_text('v-3'),
98
98
                'line 1\n')
99
 
        self.assertEqual(sorted(w1.get_parents('v-3')),
100
 
                ['v-1'])
 
99
        self.assertEqual({'v-3':('v-1',)}, w1.get_parent_map(['v-3']))
101
100
        ann = list(w1.annotate('v-3'))
102
101
        self.assertEqual(len(ann), 1)
103
102
        self.assertEqual(ann[0][0], 'v-1')
122
121
    def verify_weave1(self, w1):
123
122
        self.assertEqual(sorted(w1.versions()), ['v1', 'v2', 'v3'])
124
123
        self.assertEqual(w1.get_lines('v1'), ['hello\n'])
125
 
        self.assertEqual([], w1.get_parents('v1'))
 
124
        self.assertEqual({'v1':()}, w1.get_parent_map(['v1']))
126
125
        self.assertEqual(w1.get_lines('v2'), ['hello\n', 'world\n'])
127
 
        self.assertEqual(['v1'], w1.get_parents('v2'))
 
126
        self.assertEqual({'v2':('v1',)}, w1.get_parent_map(['v2']))
128
127
        self.assertEqual(w1.get_lines('v3'), ['hello\n', 'cruel\n', 'world\n'])
129
 
        self.assertEqual(['v2'], w1.get_parents('v3'))
 
128
        self.assertEqual({'v3':('v2',)}, w1.get_parent_map(['v3']))
130
129
 
131
130
    def test_join_source_has_less_parents_preserves_parents(self):
132
131
        # when the target has a text with more parent info, join 
138
137
        t.add_lines('base', [], [])
139
138
        t.add_lines('text', ['base'], [])
140
139
        t.join(s)
141
 
        self.assertEqual(['base'], t.get_parents('text'))
 
140
        self.assertEqual({'text':('base',)}, t.get_parent_map(['text']))
142
141
 
143
142
    def test_join_with_ghosts(self):
144
143
        """Join that inserts parents of an existing revision.
167
166
        self.assertEqual(['v1', 'v2', 'v3', 'x1',], sorted(w1.versions()))
168
167
        self.assertEqual('line from x1\n', w1.get_text('x1'))
169
168
        self.assertEqual(['hello\n', 'world\n'], w1.get_lines('v2'))
170
 
        self.assertEqual(['v1'], w1.get_parents('v2'))
 
169
        self.assertEqual({'v2':('v1',)}, w1.get_parent_map(['v2']))
171
170
 
172
171
    def test_join_with_ignore_missing_versions(self):
173
172
        # test that ignore_missing=True makes a listed but absent version id
182
181
        eq(sorted(w1.versions()), ['v1', 'v2', 'v3', 'x1'])
183
182
        eq(w1.get_text('x1'), 'line from x1\n')
184
183
        eq(w1.get_lines('v2'), ['hello\n', 'world\n'])
185
 
        eq(w1.get_parents('v2'), ['v1'])
 
184
        self.assertEqual({'v2':('v1',)}, w1.get_parent_map(['v2']))
186
185
    
187
186
    def build_source_weave(self, name, *pattern):
188
187
        w = self.get_source(name)
232
231
 
233
232
        # try filling target with ghosts and filling in reverse -  
234
233
        target.add_lines_with_ghosts('notbase', ['base'], [])
235
 
        source.join(target)
 
234
        try:
 
235
            source.join(target)
 
236
        except errors.RevisionNotPresent:
 
237
            # can't join a ghost containing target onto a non-ghost supporting
 
238
            # source.
 
239
            self.assertFalse(source_ghosts)
 
240
            return
 
241
        else:
 
242
            self.assertTrue(source_ghosts)
236
243
        # legacy apis should behave
237
244
        self.assertEqual(['notbase'], source.get_ancestry(['notbase']))
238
 
        self.assertEqual([], source.get_parents('notbase'))
239
245
        self.assertEqual({'notbase':()}, source.get_graph())
240
246
        self.assertFalse(source.has_version('base'))
241
 
        if source_ghosts:
242
 
            # ghost data should have been preserved
243
 
            self.assertEqual(['base', 'notbase'], source.get_ancestry_with_ghosts(['notbase']))
244
 
            self.assertEqual(['base'], source.get_parents_with_ghosts('notbase'))
245
 
            self.assertEqual({'notbase':['base']}, source.get_graph_with_ghosts())
246
 
            self.assertTrue(source.has_ghost('base'))
 
247
        # ghost data should have been preserved
 
248
        self.assertEqual(['base', 'notbase'], source.get_ancestry_with_ghosts(['notbase']))
 
249
        self.assertEqual(['base'], source.get_parents_with_ghosts('notbase'))
 
250
        self.assertEqual({'notbase':('base',)}, source.get_parent_map(['notbase']))
 
251
        self.assertEqual({'notbase':('base',)}, source.get_graph_with_ghosts())
 
252
        self.assertTrue(source.has_ghost('base'))
247
253
 
248
254
        # if we add something that is fills out what is a ghost, then 
249
255
        # when joining into a ghost aware join it should flesh out the ghosts.
250
256
        source.add_lines('base', [], [])
251
257
        target.join(source, version_ids=['base']) 
252
258
        self.assertEqual(['base', 'notbase'], target.get_ancestry(['notbase']))
253
 
        self.assertEqual(['base'], target.get_parents('notbase'))
 
259
        self.assertEqual({'notbase':('base',)}, target.get_parent_map(['notbase']))
254
260
        self.assertEqual({'base':(),
255
261
                          'notbase':('base', ),
256
262
                          },
259
265
        # we have _with_ghost apis to give us ghost information.
260
266
        self.assertEqual(['base', 'notbase'], target.get_ancestry_with_ghosts(['notbase']))
261
267
        self.assertEqual(['base'], target.get_parents_with_ghosts('notbase'))
262
 
        self.assertEqual({'base':[],
263
 
                          'notbase':['base'],
 
268
        self.assertEqual({'base':(),
 
269
                          'notbase':('base',),
264
270
                          },
265
271
                         target.get_graph_with_ghosts())
266
272
        self.assertFalse(target.has_ghost('base'))