/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.277.2 by Jelmer Vernooij
Add tests for basic pristine tar extraction function.
1
# Copyright (C) 2012 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 pristine tar extraction code."""
18
19
from base64 import standard_b64encode
20
0.200.1642 by Jelmer Vernooij
Use relative imports in tests.
21
from ..pristine_tar import (
0.277.4 by Jelmer Vernooij
Add function for storing git pristine tar delta files.
22
    get_pristine_tar_tree,
0.277.3 by Jelmer Vernooij
Add function for reading pristine tar data from a git repo.
23
    revision_pristine_tar_data,
24
    read_git_pristine_tar_data,
0.277.4 by Jelmer Vernooij
Add function for storing git pristine tar delta files.
25
    store_git_pristine_tar_data,
0.277.3 by Jelmer Vernooij
Add function for reading pristine tar data from a git repo.
26
    )
0.277.2 by Jelmer Vernooij
Add tests for basic pristine tar extraction function.
27
0.200.1642 by Jelmer Vernooij
Use relative imports in tests.
28
from ....revision import Revision
29
from ....tests import TestCase
0.277.2 by Jelmer Vernooij
Add tests for basic pristine tar extraction function.
30
0.277.3 by Jelmer Vernooij
Add function for reading pristine tar data from a git repo.
31
from dulwich.objects import (
32
    Blob,
33
    Tree,
34
    )
35
from dulwich.repo import (
36
    MemoryRepo as GitMemoryRepo,
37
    )
38
import stat
39
40
0.277.2 by Jelmer Vernooij
Add tests for basic pristine tar extraction function.
41
class RevisionPristineTarDataTests(TestCase):
42
43
    def test_pristine_tar_delta_unknown(self):
44
        rev = Revision("myrevid")
45
        self.assertRaises(KeyError,
46
            revision_pristine_tar_data, rev)
47
48
    def test_pristine_tar_delta_gz(self):
49
        rev = Revision("myrevid")
50
        rev.properties["deb-pristine-delta"] = standard_b64encode("bla")
0.277.6 by Jelmer Vernooij
Add 'bzr git-push-pristine-tar' command.
51
        self.assertEquals(("bla", "gz"), revision_pristine_tar_data(rev))
0.277.3 by Jelmer Vernooij
Add function for reading pristine tar data from a git repo.
52
53
54
class ReadPristineTarData(TestCase):
55
56
    def test_read_pristine_tar_data_no_branch(self):
57
        r = GitMemoryRepo()
58
        self.assertRaises(KeyError, read_git_pristine_tar_data,
59
            r, "foo")
60
61
    def test_read_pristine_tar_data_no_file(self):
62
        r = GitMemoryRepo()
63
        t = Tree()
64
        b = Blob.from_string("README")
65
        r.object_store.add_object(b)
66
        t.add("README", stat.S_IFREG | 0644, b.id)
67
        r.object_store.add_object(t)
68
        r.do_commit("Add README", tree=t.id,
69
                    ref='refs/heads/pristine-tar')
70
        self.assertRaises(KeyError, read_git_pristine_tar_data,
71
            r, "foo")
72
73
    def test_read_pristine_tar_data(self):
74
        r = GitMemoryRepo()
75
        delta = Blob.from_string("some yummy data")
76
        r.object_store.add_object(delta)
77
        idfile = Blob.from_string("someid")
78
        r.object_store.add_object(idfile)
79
        t = Tree()
80
        t.add("foo.delta", stat.S_IFREG | 0644, delta.id)
81
        t.add("foo.id", stat.S_IFREG | 0644, idfile.id)
82
        r.object_store.add_object(t)
83
        r.do_commit("pristine tar delta for foo", tree=t.id,
84
                    ref='refs/heads/pristine-tar')
85
        self.assertEquals(
86
            ("some yummy data", "someid"),
87
            read_git_pristine_tar_data(r, 'foo'))
0.277.4 by Jelmer Vernooij
Add function for storing git pristine tar delta files.
88
89
90
class StoreGitPristineTarData(TestCase):
91
92
    def test_store_new(self):
93
        r = GitMemoryRepo()
94
        cid = store_git_pristine_tar_data(r, "foo", "mydelta", "myid")
95
        tree = get_pristine_tar_tree(r)
96
        self.assertEquals(
97
            (stat.S_IFREG | 0644, "7b02de8ac4162e64f402c43487d8a40a505482e1"),
98
            tree["README"])
99
        self.assertEquals(r[cid].tree, tree.id)
100
        self.assertEquals(r[tree["foo.delta"][1]].data, "mydelta")
101
        self.assertEquals(r[tree["foo.id"][1]].data, "myid")
0.277.5 by Jelmer Vernooij
Test delta functions against each other.
102
103
        self.assertEquals(("mydelta", "myid"),
104
            read_git_pristine_tar_data(r, "foo"))