/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.358.2 by Jelmer Vernooij
Refresh copyright headers, add my email.
1
# Copyright (C) 2009-2018 Jelmer Vernooij <jelmer@jelmer.uk>
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
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
0.358.1 by Jelmer Vernooij
Fix FSF address.
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
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
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
28
from ...revision import (
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
29
    Revision,
30
    )
31
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
32
from ...tests import (
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
33
    TestCase,
34
    TestCaseInTempDir,
35
    UnavailableFeature,
36
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
37
from ...transport import (
0.254.1 by Jelmer Vernooij
Add trivial index-based sha map.
38
    get_transport,
39
    )
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
40
0.200.1642 by Jelmer Vernooij
Use relative imports in tests.
41
from ..cache import (
0.254.46 by Jelmer Vernooij
Merge trunk.
42
    DictBzrGitCache,
43
    IndexBzrGitCache,
0.200.952 by Jelmer Vernooij
Write git pack files rather than loose objects.
44
    IndexGitCacheFormat,
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
45
    SqliteBzrGitCache,
46
    TdbBzrGitCache,
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
47
    )
48
7143.15.2 by Jelmer Vernooij
Run autopep8.
49
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
50
class TestGitShaMap:
51
0.200.850 by Jelmer Vernooij
Fix tests.
52
    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.
53
        c = Commit()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
54
        c.committer = b"Jelmer <jelmer@samba.org>"
0.200.850 by Jelmer Vernooij
Fix tests.
55
        c.commit_time = 0
56
        c.commit_timezone = 0
6973.14.6 by Jelmer Vernooij
Fix some more tests.
57
        c.author = b"Jelmer <jelmer@samba.org>"
0.200.850 by Jelmer Vernooij
Fix tests.
58
        c.author_time = 0
59
        c.author_timezone = 0
6973.14.6 by Jelmer Vernooij
Fix some more tests.
60
        c.message = b"Teh foo bar"
61
        c.tree = b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba"
0.200.850 by Jelmer Vernooij
Fix tests.
62
        return c
63
64
    def test_commit(self):
65
        self.map.start_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
66
        updater = self.cache.get_updater(Revision(b"myrevid"))
0.200.850 by Jelmer Vernooij
Fix tests.
67
        c = self._get_test_commit()
0.200.1029 by Jelmer Vernooij
Use dictionary with verifiers rather than requiring testament3-sha1 everywhere.
68
        updater.add_object(c, {
6973.14.6 by Jelmer Vernooij
Fix some more tests.
69
            "testament3-sha1": b"cc9462f7f8263ef5adf8eff2fb936bb36b504cba"},
0.200.1029 by Jelmer Vernooij
Use dictionary with verifiers rather than requiring testament3-sha1 everywhere.
70
            None)
0.200.850 by Jelmer Vernooij
Fix tests.
71
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
72
        self.map.commit_write_group()
6964.2.3 by Jelmer Vernooij
Review comments.
73
        self.assertEqual(
6973.14.6 by Jelmer Vernooij
Fix some more tests.
74
            [("commit", (b"myrevid",
7143.15.2 by Jelmer Vernooij
Run autopep8.
75
                         b"cc9462f7f8263ef5adfbeff2fb936bb36b504cba",
76
                         {"testament3-sha1": b"cc9462f7f8263ef5adf8eff2fb936bb36b504cba"},
77
                         ))],
0.261.1 by Jelmer Vernooij
Initial work on supporting multiple results for git shas.
78
            list(self.map.lookup_git_sha(c.id)))
6973.14.6 by Jelmer Vernooij
Fix some more tests.
79
        self.assertEqual(c.id, self.map.lookup_commit(b"myrevid"))
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
80
81
    def test_lookup_notfound(self):
0.261.2 by Jelmer Vernooij
Fix cache tests.
82
        self.assertRaises(KeyError, list,
7143.15.2 by Jelmer Vernooij
Run autopep8.
83
                          self.map.lookup_git_sha(b"5686645d49063c73d35436192dfc9a160c672301"))
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
84
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
85
    def test_blob(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
86
        self.map.start_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
87
        updater = self.cache.get_updater(Revision(b"myrevid"))
7143.15.2 by Jelmer Vernooij
Run autopep8.
88
        updater.add_object(self._get_test_commit(), {
89
                           "testament3-sha1": b"Test"}, None)
0.200.850 by Jelmer Vernooij
Fix tests.
90
        b = Blob()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
91
        b.data = b"TEH BLOB"
92
        updater.add_object(b, (b"myfileid", b"myrevid"), None)
0.200.850 by Jelmer Vernooij
Fix tests.
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()
6964.2.3 by Jelmer Vernooij
Review comments.
95
        self.assertEqual(
6973.14.6 by Jelmer Vernooij
Fix some more tests.
96
            [("blob", (b"myfileid", b"myrevid"))],
0.261.1 by Jelmer Vernooij
Initial work on supporting multiple results for git shas.
97
            list(self.map.lookup_git_sha(b.id)))
6964.2.3 by Jelmer Vernooij
Review comments.
98
        self.assertEqual(b.id,
7143.15.2 by Jelmer Vernooij
Run autopep8.
99
                         self.map.lookup_blob_id(b"myfileid", b"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()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
103
        updater = self.cache.get_updater(Revision(b"somerevid"))
0.200.1029 by Jelmer Vernooij
Use dictionary with verifiers rather than requiring testament3-sha1 everywhere.
104
        updater.add_object(self._get_test_commit(), {
7143.15.2 by Jelmer Vernooij
Run autopep8.
105
            "testament3-sha1": b"mytestamentsha"}, None)
0.200.850 by Jelmer Vernooij
Fix tests.
106
        t = Tree()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
107
        t.add(b"somename", stat.S_IFREG, Blob().id)
108
        updater.add_object(t, (b"fileid", b"myrevid"), b"")
0.200.850 by Jelmer Vernooij
Fix tests.
109
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
110
        self.map.commit_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
111
        self.assertEqual([("tree", (b"fileid", b"myrevid"))],
7143.15.2 by Jelmer Vernooij
Run autopep8.
112
                         list(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.
113
        # It's possible for a backend to not implement lookup_tree
114
        try:
6964.2.3 by Jelmer Vernooij
Review comments.
115
            self.assertEqual(t.id,
7143.15.2 by Jelmer Vernooij
Run autopep8.
116
                             self.map.lookup_tree_id(b"fileid", b"myrevid"))
0.200.860 by Jelmer Vernooij
Fix bugs in two lookup_tree_id implementations and add a test for it.
117
        except NotImplementedError:
118
            pass
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
119
120
    def test_revids(self):
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
121
        self.map.start_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
122
        updater = self.cache.get_updater(Revision(b"myrevid"))
0.200.850 by Jelmer Vernooij
Fix tests.
123
        c = self._get_test_commit()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
124
        updater.add_object(c, {"testament3-sha1": b"mtestament"}, None)
0.200.850 by Jelmer Vernooij
Fix tests.
125
        updater.finish()
0.200.687 by Jelmer Vernooij
Use start_write_group() / commit_write_group() mechanism when creating git SHA maps.
126
        self.map.commit_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
127
        self.assertEqual([b"myrevid"], list(self.map.revids()))
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
128
0.200.747 by Jelmer Vernooij
Add test for ShaMap.missing_revisions().
129
    def test_missing_revisions(self):
130
        self.map.start_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
131
        updater = self.cache.get_updater(Revision(b"myrevid"))
0.200.850 by Jelmer Vernooij
Fix tests.
132
        c = self._get_test_commit()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
133
        updater.add_object(c, {"testament3-sha1": b"testament"}, None)
0.200.850 by Jelmer Vernooij
Fix tests.
134
        updater.finish()
0.200.747 by Jelmer Vernooij
Add test for ShaMap.missing_revisions().
135
        self.map.commit_write_group()
6973.14.6 by Jelmer Vernooij
Fix some more tests.
136
        self.assertEqual(set([b"lala", b"bla"]),
7143.15.2 by Jelmer Vernooij
Run autopep8.
137
                         set(self.map.missing_revisions([b"myrevid", b"lala", b"bla"])))
138
139
140
class DictGitShaMapTests(TestCase, TestGitShaMap):
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
141
142
    def setUp(self):
0.200.280 by Jelmer Vernooij
Support bzr.dev.
143
        TestCase.setUp(self)
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
144
        self.cache = DictBzrGitCache()
145
        self.map = self.cache.idmap
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
146
147
7143.15.2 by Jelmer Vernooij
Run autopep8.
148
class SqliteGitShaMapTests(TestCaseInTempDir, TestGitShaMap):
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
149
150
    def setUp(self):
0.200.850 by Jelmer Vernooij
Fix tests.
151
        TestCaseInTempDir.setUp(self)
0.200.849 by Jelmer Vernooij
Allow cache backends to decide when to add entries rather than adding once per commit.
152
        self.cache = SqliteBzrGitCache(os.path.join(self.test_dir, 'foo.db'))
153
        self.map = self.cache.idmap
0.200.262 by Jelmer Vernooij
Add tests for GitShaMap.
154
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
155
7143.15.2 by Jelmer Vernooij
Run autopep8.
156
class TdbGitShaMapTests(TestCaseInTempDir, TestGitShaMap):
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
157
158
    def setUp(self):
159
        TestCaseInTempDir.setUp(self)
160
        try:
6973.14.6 by Jelmer Vernooij
Fix some more tests.
161
            self.cache = TdbBzrGitCache(os.path.join(self.test_dir, 'foo.tdb'))
0.200.475 by Jelmer Vernooij
Add Tdb database backend.
162
        except ImportError:
163
            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.
164
        self.map = self.cache.idmap
0.254.1 by Jelmer Vernooij
Add trivial index-based sha map.
165
166
7143.15.2 by Jelmer Vernooij
Run autopep8.
167
class IndexGitShaMapTests(TestCaseInTempDir, TestGitShaMap):
0.254.1 by Jelmer Vernooij
Add trivial index-based sha map.
168
169
    def setUp(self):
170
        TestCaseInTempDir.setUp(self)
0.254.48 by Jelmer Vernooij
Merge trunk
171
        transport = get_transport(self.test_dir)
0.200.952 by Jelmer Vernooij
Write git pack files rather than loose objects.
172
        IndexGitCacheFormat().initialize(transport)
0.254.48 by Jelmer Vernooij
Merge trunk
173
        self.cache = IndexBzrGitCache(transport)
0.254.46 by Jelmer Vernooij
Merge trunk.
174
        self.map = self.cache.idmap