/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) 2010-2018 Jelmer Vernooij <jelmer@jelmer.uk>
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
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.799 by Jelmer Vernooij
Add trivial object store tests.
16
17
"""Tests for bzr-git's object store."""
18
0.358.3 by Jelmer Vernooij
Enable absolute import.
19
from __future__ import absolute_import
20
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
21
from dulwich.objects import (
22
    Blob,
0.421.3 by Jelmer Vernooij
Move directory_to_tree to object_store.
23
    Tree,
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
24
    )
25
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
26
from ...branchbuilder import (
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
27
    BranchBuilder,
28
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
29
from ...bzr.inventory import (
0.421.3 by Jelmer Vernooij
Move directory_to_tree to object_store.
30
    InventoryDirectory,
31
    InventoryFile,
32
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
33
from ...errors import (
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
34
    NoSuchRevision,
35
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
36
from ...graph import (
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
37
    DictParentsProvider,
0.200.1059 by Jelmer Vernooij
Fix graph tests.
38
    Graph,
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
39
    )
6986.2.1 by Jelmer Vernooij
Move breezy.plugins.git to breezy.git.
40
from ...tests import (
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
41
    TestCase,
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
42
    TestCaseWithTransport,
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
43
    )
44
0.200.1642 by Jelmer Vernooij
Use relative imports in tests.
45
from ..cache import (
0.200.1016 by Jelmer Vernooij
add basic test for tree_to_objects.
46
    DictGitShaMap,
47
    )
0.200.1642 by Jelmer Vernooij
Use relative imports in tests.
48
from ..object_store import (
0.200.964 by Jelmer Vernooij
Add some tests for object store.
49
    BazaarObjectStore,
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
50
    LRUTreeCache,
0.421.3 by Jelmer Vernooij
Move directory_to_tree to object_store.
51
    directory_to_tree,
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
52
    _check_expected_sha,
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
53
    _find_missing_bzr_revids,
0.200.1016 by Jelmer Vernooij
add basic test for tree_to_objects.
54
    _tree_to_objects,
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
55
    )
56
57
58
class ExpectedShaTests(TestCase):
59
60
    def setUp(self):
61
        super(ExpectedShaTests, self).setUp()
62
        self.obj = Blob()
7018.3.8 by Jelmer Vernooij
Disable some flaky tests on python3, allow running without fastimport.
63
        self.obj.data = b"foo"
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
64
65
    def test_none(self):
66
        _check_expected_sha(None, self.obj)
67
68
    def test_hex(self):
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
69
        _check_expected_sha(
7143.15.2 by Jelmer Vernooij
Run autopep8.
70
            self.obj.sha().hexdigest().encode('ascii'), self.obj)
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
71
        self.assertRaises(AssertionError, _check_expected_sha,
7143.15.2 by Jelmer Vernooij
Run autopep8.
72
                          b"0" * 40, self.obj)
0.200.799 by Jelmer Vernooij
Add trivial object store tests.
73
74
    def test_binary(self):
75
        _check_expected_sha(self.obj.sha().digest(), self.obj)
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
76
        self.assertRaises(AssertionError, _check_expected_sha,
7143.15.2 by Jelmer Vernooij
Run autopep8.
77
                          b"x" * 20, self.obj)
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
78
79
80
class FindMissingBzrRevidsTests(TestCase):
81
82
    def _find_missing(self, ancestry, want, have):
83
        return _find_missing_bzr_revids(
0.200.1059 by Jelmer Vernooij
Fix graph tests.
84
            Graph(DictParentsProvider(ancestry)),
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
85
            set(want), set(have))
86
87
    def test_simple(self):
6964.2.3 by Jelmer Vernooij
Review comments.
88
        self.assertEqual(set(), self._find_missing({}, [], []))
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
89
90
    def test_up_to_date(self):
6964.2.3 by Jelmer Vernooij
Review comments.
91
        self.assertEqual(set(),
7143.15.2 by Jelmer Vernooij
Run autopep8.
92
                         self._find_missing({"a": ["b"]}, ["a"], ["a"]))
0.200.899 by Jelmer Vernooij
Add tests for find_missing_bzr_revids.
93
94
    def test_one_missing(self):
6964.2.3 by Jelmer Vernooij
Review comments.
95
        self.assertEqual(set(["a"]),
7143.15.2 by Jelmer Vernooij
Run autopep8.
96
                         self._find_missing({"a": ["b"]}, ["a"], ["b"]))
0.200.905 by Jelmer Vernooij
More find missing revision tests.
97
98
    def test_two_missing(self):
6964.2.3 by Jelmer Vernooij
Review comments.
99
        self.assertEqual(set(["a", "b"]),
7143.15.2 by Jelmer Vernooij
Run autopep8.
100
                         self._find_missing({"a": ["b"], "b": ["c"]}, ["a"], ["c"]))
0.200.905 by Jelmer Vernooij
More find missing revision tests.
101
102
    def test_two_missing_history(self):
6964.2.3 by Jelmer Vernooij
Review comments.
103
        self.assertEqual(set(["a", "b"]),
7143.15.2 by Jelmer Vernooij
Run autopep8.
104
                         self._find_missing({"a": ["b"], "b": ["c"], "c": ["d"]},
105
                                            ["a"], ["c"]))
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
106
107
108
class LRUTreeCacheTests(TestCaseWithTransport):
109
110
    def setUp(self):
111
        super(LRUTreeCacheTests, self).setUp()
112
        self.branch = self.make_branch(".")
113
        self.branch.lock_write()
114
        self.addCleanup(self.branch.unlock)
115
        self.cache = LRUTreeCache(self.branch.repository)
116
117
    def test_get_not_present(self):
0.200.965 by Jelmer Vernooij
Formatting fixes.
118
        self.assertRaises(NoSuchRevision, self.cache.revision_tree,
7143.15.2 by Jelmer Vernooij
Run autopep8.
119
                          "unknown")
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
120
121
    def test_revision_trees(self):
0.200.965 by Jelmer Vernooij
Formatting fixes.
122
        self.assertRaises(NoSuchRevision, self.cache.revision_trees,
7143.15.2 by Jelmer Vernooij
Run autopep8.
123
                          ["unknown", "la"])
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
124
125
    def test_iter_revision_trees(self):
0.200.965 by Jelmer Vernooij
Formatting fixes.
126
        self.assertRaises(NoSuchRevision, self.cache.iter_revision_trees,
7143.15.2 by Jelmer Vernooij
Run autopep8.
127
                          ["unknown", "la"])
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
128
129
    def test_get(self):
130
        bb = BranchBuilder(branch=self.branch)
131
        bb.start_series()
0.285.8 by Jelmer Vernooij
Fix more tests for swapped arguments.
132
        revid = bb.build_snapshot(None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
133
                                  [('add', ('', None, 'directory', None)),
134
                                   ('add', ('foo', b'foo-id',
135
                                            'file', b'a\nb\nc\nd\ne\n')),
136
                                   ])
0.200.963 by Jelmer Vernooij
Add some tests for LRUTreeCache.
137
        bb.finish_series()
0.285.8 by Jelmer Vernooij
Fix more tests for swapped arguments.
138
        tree = self.cache.revision_tree(revid)
6964.2.3 by Jelmer Vernooij
Review comments.
139
        self.assertEqual(revid, tree.get_revision_id())
0.200.964 by Jelmer Vernooij
Add some tests for object store.
140
141
142
class BazaarObjectStoreTests(TestCaseWithTransport):
143
144
    def setUp(self):
145
        super(BazaarObjectStoreTests, self).setUp()
146
        self.branch = self.make_branch(".")
147
        self.branch.lock_write()
148
        self.addCleanup(self.branch.unlock)
149
        self.store = BazaarObjectStore(self.branch.repository)
150
151
    def test_get_blob(self):
152
        b = Blob()
6973.5.10 by Jelmer Vernooij
Random bunch of python3 bee-improvements.
153
        b.data = b'a\nb\nc\nd\ne\n'
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
154
        self.store.lock_read()
155
        self.addCleanup(self.store.unlock)
0.200.964 by Jelmer Vernooij
Add some tests for object store.
156
        self.assertRaises(KeyError, self.store.__getitem__, b.id)
157
        bb = BranchBuilder(branch=self.branch)
158
        bb.start_series()
0.285.8 by Jelmer Vernooij
Fix more tests for swapped arguments.
159
        bb.build_snapshot(None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
160
                          [('add', ('', None, 'directory', None)),
161
                           ('add', ('foo', b'foo-id', 'file', b'a\nb\nc\nd\ne\n')),
162
                           ])
0.200.964 by Jelmer Vernooij
Add some tests for object store.
163
        bb.finish_series()
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
164
        # read locks cache
165
        self.assertRaises(KeyError, self.store.__getitem__, b.id)
166
        self.store.unlock()
167
        self.store.lock_read()
6964.2.3 by Jelmer Vernooij
Review comments.
168
        self.assertEqual(b, self.store[b.id])
0.200.964 by Jelmer Vernooij
Add some tests for object store.
169
170
    def test_get_raw(self):
171
        b = Blob()
6973.5.10 by Jelmer Vernooij
Random bunch of python3 bee-improvements.
172
        b.data = b'a\nb\nc\nd\ne\n'
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
173
        self.store.lock_read()
174
        self.addCleanup(self.store.unlock)
0.200.964 by Jelmer Vernooij
Add some tests for object store.
175
        self.assertRaises(KeyError, self.store.get_raw, b.id)
176
        bb = BranchBuilder(branch=self.branch)
177
        bb.start_series()
0.285.8 by Jelmer Vernooij
Fix more tests for swapped arguments.
178
        bb.build_snapshot(None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
179
                          [('add', ('', None, 'directory', None)),
180
                           ('add', ('foo', b'foo-id', 'file', b'a\nb\nc\nd\ne\n')),
181
                           ])
0.200.964 by Jelmer Vernooij
Add some tests for object store.
182
        bb.finish_series()
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
183
        # read locks cache
184
        self.assertRaises(KeyError, self.store.get_raw, b.id)
185
        self.store.unlock()
186
        self.store.lock_read()
6964.2.3 by Jelmer Vernooij
Review comments.
187
        self.assertEqual(b.as_raw_string(), self.store.get_raw(b.id)[1])
0.200.964 by Jelmer Vernooij
Add some tests for object store.
188
189
    def test_contains(self):
190
        b = Blob()
6964.2.1 by Jelmer Vernooij
Initial work to support brz-git on python3.
191
        b.data = b'a\nb\nc\nd\ne\n'
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
192
        self.store.lock_read()
193
        self.addCleanup(self.store.unlock)
0.200.964 by Jelmer Vernooij
Add some tests for object store.
194
        self.assertFalse(b.id in self.store)
195
        bb = BranchBuilder(branch=self.branch)
196
        bb.start_series()
0.285.8 by Jelmer Vernooij
Fix more tests for swapped arguments.
197
        bb.build_snapshot(None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
198
                          [('add', ('', None, 'directory', None)),
199
                           ('add', ('foo', b'foo-id', 'file', b'a\nb\nc\nd\ne\n')),
200
                           ])
0.200.964 by Jelmer Vernooij
Add some tests for object store.
201
        bb.finish_series()
0.200.1212 by Jelmer Vernooij
Support read locking object stores.
202
        # read locks cache
203
        self.assertFalse(b.id in self.store)
204
        self.store.unlock()
205
        self.store.lock_read()
0.200.964 by Jelmer Vernooij
Add some tests for object store.
206
        self.assertTrue(b.id in self.store)
207
0.200.1016 by Jelmer Vernooij
add basic test for tree_to_objects.
208
209
class TreeToObjectsTests(TestCaseWithTransport):
210
211
    def setUp(self):
212
        super(TreeToObjectsTests, self).setUp()
213
        self.idmap = DictGitShaMap()
214
215
    def test_no_changes(self):
216
        tree = self.make_branch_and_tree('.')
0.275.5 by Jelmer Vernooij
Cope with root_inventory and inventory.
217
        self.addCleanup(tree.lock_read().unlock)
0.200.1016 by Jelmer Vernooij
add basic test for tree_to_objects.
218
        entries = list(_tree_to_objects(tree, [tree], self.idmap, {}))
6964.2.3 by Jelmer Vernooij
Review comments.
219
        self.assertEqual([], entries)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
220
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
221
    def test_with_gitdir(self):
222
        tree = self.make_branch_and_tree('.')
223
        self.build_tree(['.git', 'foo'])
224
        tree.add(['.git', 'foo'])
225
        revid = tree.commit('commit')
226
        revtree = tree.branch.repository.revision_tree(revid)
227
        self.addCleanup(revtree.lock_read().unlock)
228
        entries = list(_tree_to_objects(revtree, [], self.idmap, {}))
6964.2.3 by Jelmer Vernooij
Review comments.
229
        self.assertEqual(['foo', ''], [p[0] for p in entries])
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
230
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
231
0.421.3 by Jelmer Vernooij
Move directory_to_tree to object_store.
232
class DirectoryToTreeTests(TestCase):
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
233
234
    def test_empty(self):
0.421.6 by Jelmer Vernooij
Some more simplifications.
235
        t = directory_to_tree('', [], None, {}, None, allow_empty=False)
6964.2.3 by Jelmer Vernooij
Review comments.
236
        self.assertEqual(None, t)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
237
238
    def test_empty_dir(self):
6973.11.6 by Jelmer Vernooij
Fix more http tests.
239
        child_ie = InventoryDirectory(b'bar', 'bar', b'bar')
0.421.6 by Jelmer Vernooij
Some more simplifications.
240
        t = directory_to_tree('', [child_ie], lambda p, x: None, {}, None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
241
                              allow_empty=False)
6964.2.3 by Jelmer Vernooij
Review comments.
242
        self.assertEqual(None, t)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
243
244
    def test_empty_dir_dummy_files(self):
6973.11.6 by Jelmer Vernooij
Fix more http tests.
245
        child_ie = InventoryDirectory(b'bar', 'bar', b'bar')
0.421.6 by Jelmer Vernooij
Some more simplifications.
246
        t = directory_to_tree('', [child_ie], lambda p, x: None, {}, ".mydummy",
7143.15.2 by Jelmer Vernooij
Run autopep8.
247
                              allow_empty=False)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
248
        self.assertTrue(".mydummy" in t)
249
250
    def test_empty_root(self):
6973.11.6 by Jelmer Vernooij
Fix more http tests.
251
        child_ie = InventoryDirectory(b'bar', 'bar', b'bar')
0.421.6 by Jelmer Vernooij
Some more simplifications.
252
        t = directory_to_tree('', [child_ie], lambda p, x: None, {}, None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
253
                              allow_empty=True)
6964.2.3 by Jelmer Vernooij
Review comments.
254
        self.assertEqual(Tree(), t)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
255
256
    def test_with_file(self):
6973.11.6 by Jelmer Vernooij
Fix more http tests.
257
        child_ie = InventoryFile(b'bar', 'bar', b'bar')
6973.13.2 by Jelmer Vernooij
Fix some more tests.
258
        b = Blob.from_string(b"bla")
0.421.6 by Jelmer Vernooij
Some more simplifications.
259
        t1 = directory_to_tree('', [child_ie], lambda p, x: b.id, {}, None,
7143.15.2 by Jelmer Vernooij
Run autopep8.
260
                               allow_empty=False)
0.421.2 by Jelmer Vernooij
Move directory_to_tree.
261
        t2 = Tree()
6973.13.2 by Jelmer Vernooij
Fix some more tests.
262
        t2.add(b"bar", 0o100644, b.id)
6964.2.3 by Jelmer Vernooij
Review comments.
263
        self.assertEqual(t1, t2)
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
264
265
    def test_with_gitdir(self):
6973.11.6 by Jelmer Vernooij
Fix more http tests.
266
        child_ie = InventoryFile(b'bar', 'bar', b'bar')
267
        git_file_ie = InventoryFile(b'gitid', '.git', b'bar')
6973.13.2 by Jelmer Vernooij
Fix some more tests.
268
        b = Blob.from_string(b"bla")
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
269
        t1 = directory_to_tree('', [child_ie, git_file_ie],
7143.15.2 by Jelmer Vernooij
Run autopep8.
270
                               lambda p, x: b.id, {}, None,
271
                               allow_empty=False)
0.424.1 by Jelmer Vernooij
Fix error message about .git directory.
272
        t2 = Tree()
6973.13.2 by Jelmer Vernooij
Fix some more tests.
273
        t2.add(b"bar", 0o100644, b.id)
6964.2.3 by Jelmer Vernooij
Review comments.
274
        self.assertEqual(t1, t2)