/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
1
# Copyright (C) 2009 Jelmer Vernooij <jelmer@samba.org>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
"""Tests for GitShaMap."""
18
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
19
from dulwich.objects import (
0.200.850 by Jelmer Vernooij
Fix tests.
20
    Blob,
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
21
    Commit,
0.200.850 by Jelmer Vernooij
Fix tests.
22
    Tree,
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
23
    )
24
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
25
import os
0.200.850 by Jelmer Vernooij
Fix tests.
26
import stat
27
28
from bzrlib.inventory import (
29
    InventoryFile,
30
    InventoryDirectory,
31
    ROOT_ID,
32
    )
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
33
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
34
from bzrlib.revision import (
35
    Revision,
36
    )
37
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
38
from bzrlib.tests import (
39
    TestCase,
40
    TestCaseInTempDir,
41
    UnavailableFeature,
42
    )
0.254.1 by Jelmer Vernooij
Add trivial index-based sha map.
43
from bzrlib.transport import (
44
    get_transport,
45
    )
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
46
0.200.938 by Jelmer Vernooij
Rename shamap to cache, as it can also do content caching now.
47
from bzrlib.plugins.git.cache import (
0.254.46 by Jelmer Vernooij
Merge trunk.
48
    DictBzrGitCache,
49
    IndexBzrGitCache,
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
50
    SqliteBzrGitCache,
51
    TdbBzrGitCache,
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
52
    )
53
54
class TestGitShaMap:
55
0.200.850 by Jelmer Vernooij
Fix tests.
56
    def _get_test_commit(self):
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
57
        c = Commit()
58
        c.committer = "Jelmer <jelmer@samba.org>"
0.200.850 by Jelmer Vernooij
Fix tests.
59
        c.commit_time = 0
60
        c.commit_timezone = 0
61
        c.author = "Jelmer <jelmer@samba.org>"
62
        c.author_time = 0
63
        c.author_timezone = 0
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
64
        c.message = "Teh foo bar"
65
        c.tree = "cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
0.200.850 by Jelmer Vernooij
Fix tests.
66
        return c
67
68
    def test_commit(self):
69
        self.map.start_write_group()
70
        updater = self.cache.get_updater(Revision("myrevid"))
71
        c = self._get_test_commit()
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
72
        updater.add_object(c, None)
0.200.850 by Jelmer Vernooij
Fix tests.
73
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
74
        self.map.commit_write_group()
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
75
        self.assertEquals(
76
            ("commit", ("myrevid", "cc9462f7f8263ef5adfbeff2fb936bb36b504cba")),
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
77
            self.map.lookup_git_sha(c.id))
0.200.853 by Jelmer Vernooij
Fix lookup of commits in tdb.
78
        self.assertEquals(c.id, self.map.lookup_commit("myrevid"))
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
79
80
    def test_lookup_notfound(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
81
        self.assertRaises(KeyError,
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
82
            self.map.lookup_git_sha, "5686645d49063c73d35436192dfc9a160c672301")
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
83
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
84
    def test_blob(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
85
        self.map.start_write_group()
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
86
        updater = self.cache.get_updater(Revision("myrevid"))
0.200.850 by Jelmer Vernooij
Fix tests.
87
        updater.add_object(self._get_test_commit(), None)
88
        b = Blob()
89
        b.data = "TEH BLOB"
90
        ie = InventoryFile("myfileid", "somename", ROOT_ID)
91
        ie.revision = "myrevid"
92
        updater.add_object(b, ie)
93
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
94
        self.map.commit_write_group()
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
95
        self.assertEquals(
96
            ("blob", ("myfileid", "myrevid")),
0.200.850 by Jelmer Vernooij
Fix tests.
97
            self.map.lookup_git_sha(b.id))
98
        self.assertEquals(b.id,
0.200.841 by Jelmer Vernooij
Eliminate InventorySHAMap.
99
            self.map.lookup_blob_id("myfileid", "myrevid"))
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
100
101
    def test_tree(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
102
        self.map.start_write_group()
0.200.850 by Jelmer Vernooij
Fix tests.
103
        updater = self.cache.get_updater(Revision("myrevid"))
104
        updater.add_object(self._get_test_commit(), None)
105
        t = Tree()
106
        t.add(stat.S_IFREG, "somename", Blob().id)
107
        ie = InventoryDirectory("fileid", "myname", ROOT_ID)
108
        ie.revision = "irrelevant"
109
        updater.add_object(t, ie)
110
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
111
        self.map.commit_write_group()
0.200.850 by Jelmer Vernooij
Fix tests.
112
        self.assertEquals(("tree", ("fileid", "myrevid")),
113
            self.map.lookup_git_sha(t.id))
0.200.860 by Jelmer Vernooij
Fix bugs in two lookup_tree_id implementations and add a test for it.
114
        # It's possible for a backend to not implement lookup_tree
115
        try:
116
            self.assertEquals(t.id,
117
                self.map.lookup_tree_id("fileid", "myrevid"))
118
        except NotImplementedError:
119
            pass
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
120
121
    def test_revids(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
122
        self.map.start_write_group()
0.200.850 by Jelmer Vernooij
Fix tests.
123
        updater = self.cache.get_updater(Revision("myrevid"))
124
        c = self._get_test_commit()
125
        updater.add_object(c, None)
126
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
127
        self.map.commit_write_group()
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
128
        self.assertEquals(["myrevid"], list(self.map.revids()))
129
0.200.747 by Jelmer Vernooij
Add test for ShaMap.missing_revisions().
130
    def test_missing_revisions(self):
131
        self.map.start_write_group()
0.200.850 by Jelmer Vernooij
Fix tests.
132
        updater = self.cache.get_updater(Revision("myrevid"))
133
        c = self._get_test_commit()
134
        updater.add_object(c, None)
135
        updater.finish()
0.200.747 by Jelmer Vernooij
Add test for ShaMap.missing_revisions().
136
        self.map.commit_write_group()
137
        self.assertEquals(set(["lala", "bla"]),
138
            set(self.map.missing_revisions(["myrevid", "lala", "bla"])))
139
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
140
141
class DictGitShaMapTests(TestCase,TestGitShaMap):
142
143
    def setUp(self):
0.200.280 by Jelmer Vernooij
Support bzr.dev.
144
        TestCase.setUp(self)
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
145
        self.cache = DictBzrGitCache()
146
        self.map = self.cache.idmap
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
147
148
0.200.850 by Jelmer Vernooij
Fix tests.
149
class SqliteGitShaMapTests(TestCaseInTempDir,TestGitShaMap):
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
150
151
    def setUp(self):
0.200.850 by Jelmer Vernooij
Fix tests.
152
        TestCaseInTempDir.setUp(self)
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
153
        self.cache = SqliteBzrGitCache(os.path.join(self.test_dir, 'foo.db'))
154
        self.map = self.cache.idmap
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
155
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
156
157
class TdbGitShaMapTests(TestCaseInTempDir,TestGitShaMap):
158
159
    def setUp(self):
160
        TestCaseInTempDir.setUp(self)
161
        try:
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
162
            self.cache = TdbBzrGitCache(os.path.join(self.test_dir, 'foo.tdb'))
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
163
        except ImportError:
164
            raise UnavailableFeature("Missing tdb")
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
165
        self.map = self.cache.idmap
0.254.1 by Jelmer Vernooij
Add trivial index-based sha map.
166
167
168
class IndexGitShaMapTests(TestCaseInTempDir,TestGitShaMap):
169
170
    def setUp(self):
171
        TestCaseInTempDir.setUp(self)
0.254.48 by Jelmer Vernooij
Merge trunk
172
        transport = get_transport(self.test_dir)
173
        transport.mkdir("index")
174
        self.cache = IndexBzrGitCache(transport)
0.254.46 by Jelmer Vernooij
Merge trunk.
175
        self.map = self.cache.idmap