/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from bzrlib import (
    inventory,
    revision as _mod_revision,
    )
from bzrlib.tests.repository_implementations import TestCaseWithRepository

class TestCheckRepository(TestCaseWithRepository):

    def make_broken_repository(self):
        repo = self.make_repository('.')

        # make rev1a
        inv = inventory.Inventory(revision_id='rev1a')
        inv.root.revision = 'rev1a'
        self.add_file(repo, inv, 'file1', 'rev1a', [])
        repo.add_inventory('rev1a', inv, [])
        revision = _mod_revision.Revision('rev1a',
            committer='jrandom@example.com', timestamp=0, inventory_sha1='',
            timezone=0, message='foo', parent_ids=[])
        repo.add_revision('rev1a',revision, inv)

        # make rev1b
        inv = inventory.Inventory(revision_id='rev1b')
        inv.root.revision = 'rev1b'
        self.add_file(repo, inv, 'file1', 'rev1b', [])
        repo.add_inventory('rev1b', inv, [])

        # make rev2
        inv = inventory.Inventory(revision_id='rev2')
        inv.root.revision = 'rev2'
        self.add_file(repo, inv, 'file1', 'rev2', ['rev1a', 'rev1b'])
        self.add_file(repo, inv, 'file2', 'rev2', [])
        repo.add_inventory('rev2', inv, ['rev1a'])
        revision = _mod_revision.Revision('rev2',
            committer='jrandom@example.com', timestamp=0, inventory_sha1='',
            timezone=0, message='foo', parent_ids=['rev1a'])
        repo.add_revision('rev2',revision, inv)
        return repo

    def add_file(self, repo, inv, filename, revision, parents):
        file_id = filename + '-id'
        entry = inventory.InventoryFile(file_id, filename, 'TREE_ROOT')
        entry.revision = revision 
        inv.add(entry)
        vf = repo.weave_store.get_weave_or_empty(file_id,
                                                 repo.get_transaction())
        vf.add_lines(revision, parents, ['line\n'])

    def check_versionedfile(self, file_id, revision_ids):
        repo = self.make_broken_repository()
        vf = repo.weave_store.get_weave(file_id, repo.get_transaction())
        return repo.check_versionedfile(revision_ids, file_id, vf, {})

    def test_normal_first_revision(self):
        repo = self.make_broken_repository()
        vf = repo.weave_store.get_weave('file1-id', repo.get_transaction())
        inventory_versions = {}
        result = repo.check_versionedfile(['rev1a'], 'file1-id', vf,
            inventory_versions)
        self.assertSubset(['rev1a'], inventory_versions.keys())
        self.assertEqual('rev1a', inventory_versions['rev1a']['file1-id'])
        self.assertEqual({}, result)

    def test_not_present_in_revision(self):
        # It is not an error to check a revision that does not contain the file
        result = self.check_versionedfile('file2-id', ['rev1a'])
        self.assertEqual({}, result)

    def test_second_revision(self):
        repo = self.make_broken_repository()
        vf = repo.weave_store.get_weave('file1-id', repo.get_transaction())
        inventory_versions = {}
        result = repo.check_versionedfile(['rev2'], 'file1-id', vf,
            inventory_versions)
        self.assertEqual({('file1-id', 'rev2'): set(['rev1b'])}, result)