~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testinv.py

  • Committer: Robert Collins
  • Date: 2005-10-06 00:52:53 UTC
  • Revision ID: robertc@robertcollins.net-20051006005253-415c38ad22094f13
define some expected behaviour for inventory_entry.snapshot

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
import os
19
19
 
20
20
from bzrlib.branch import Branch
21
 
from bzrlib.clone import copy_branch
22
21
import bzrlib.errors as errors
23
22
from bzrlib.diff import internal_diff
24
23
from bzrlib.inventory import Inventory, ROOT_ID
271
270
    def test_snapshot_merge_identical_different_revid(self):
272
271
        # This tests that a commit with two identical parents, one of which has
273
272
        # a different revision id, results in a new revision id in the entry.
274
 
        # 1->other, commit a merge of other against 1, results in 2.
275
273
        other_ie = inventory.InventoryFile('fileid', 'newname', self.file_1.parent_id)
276
274
        other_ie = inventory.InventoryFile('fileid', 'file', self.file_1.parent_id)
277
275
        other_ie.revision = '1'
296
294
                                  self.branch.weave_store)
297
295
        # expected outcome - file_1 has a revision id of '2'
298
296
        self.assertEqual(self.file_active.revision, '2')
299
 
 
300
 
 
301
 
class TestPreviousHeads(TestCaseInTempDir):
302
 
 
303
 
    def setUp(self):
304
 
        # we want several inventories, that respectively
305
 
        # give use the following scenarios:
306
 
        # A) fileid not in any inventory (A),
307
 
        # B) fileid present in one inventory (B) and (A,B)
308
 
        # C) fileid present in two inventories, and they
309
 
        #   are not mutual descendents (B, C)
310
 
        # D) fileid present in two inventories and one is
311
 
        #   a descendent of the other. (B, D)
312
 
        super(TestPreviousHeads, self).setUp()
313
 
        self.build_tree(['file'])
314
 
        self.branch = Branch.initialize('.')
315
 
        self.branch.commit('new branch', allow_pointless=True, rev_id='A')
316
 
        self.inv_A = self.branch.get_inventory('A')
317
 
        self.branch.add(['file'], ['fileid'])
318
 
        self.branch.commit('add file', rev_id='B')
319
 
        self.inv_B = self.branch.get_inventory('B')
320
 
        self.branch.put_controlfile('revision-history', 'A\n')
321
 
        self.assertEqual(self.branch.revision_history(), ['A'])
322
 
        self.branch.commit('another add of file', rev_id='C')
323
 
        self.inv_C = self.branch.get_inventory('C')
324
 
        self.branch.add_pending_merge('B')
325
 
        self.branch.commit('merge in B', rev_id='D')
326
 
        self.inv_D = self.branch.get_inventory('D')
327
 
        self.file_active = self.branch.working_tree().inventory['fileid']
328
 
        self.weave = self.branch.weave_store.get_weave('fileid')
329
 
        
330
 
    def get_previous_heads(self, inventories):
331
 
        return self.file_active.find_previous_heads(inventories, self.weave)
332
 
        
333
 
    def test_fileid_in_no_inventory(self):
334
 
        self.assertEqual({}, self.get_previous_heads([self.inv_A]))
335
 
 
336
 
    def test_fileid_in_one_inventory(self):
337
 
        self.assertEqual({'B':self.inv_B['fileid']},
338
 
                         self.get_previous_heads([self.inv_B]))
339
 
        self.assertEqual({'B':self.inv_B['fileid']},
340
 
                         self.get_previous_heads([self.inv_A, self.inv_B]))
341
 
        self.assertEqual({'B':self.inv_B['fileid']},
342
 
                         self.get_previous_heads([self.inv_B, self.inv_A]))
343
 
 
344
 
    def test_fileid_in_two_inventories_gives_both_entries(self):
345
 
        self.assertEqual({'B':self.inv_B['fileid'],
346
 
                          'C':self.inv_C['fileid']},
347
 
                          self.get_previous_heads([self.inv_B, self.inv_C]))
348
 
        self.assertEqual({'B':self.inv_B['fileid'],
349
 
                          'C':self.inv_C['fileid']},
350
 
                          self.get_previous_heads([self.inv_C, self.inv_B]))
351
 
 
352
 
    def test_fileid_in_two_inventories_already_merged_gives_head(self):
353
 
        self.assertEqual({'D':self.inv_D['fileid']},
354
 
                         self.get_previous_heads([self.inv_B, self.inv_D]))
355
 
        self.assertEqual({'D':self.inv_D['fileid']},
356
 
                         self.get_previous_heads([self.inv_D, self.inv_B]))
357
 
 
358
 
    # TODO: test two inventories with the same file revision