~landscape/smart/staging

« back to all changes in this revision

Viewing changes to tests/rpmloader.py

  • Committer: Andreas Hasenack
  • Date: 2009-04-15 16:25:16 UTC
  • mfrom: (818.6.25 trunk)
  • mto: This revision was merged to the branch mainline in revision 838.
  • Revision ID: andreas@canonical.com-20090415162516-ybxkoi79udl3thgn
Merged upstream trunk into landscape trunk, which basically brings in version 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 
4
4
import rpm
5
5
 
6
 
from mocker import MockerTestCase, expect
 
6
from mocker import MockerTestCase, expect, ANY
7
7
 
8
 
from smart.backends.rpm.header import RPMHeaderPackageInfo
 
8
from smart.backends.rpm.header import (
 
9
    RPMHeaderPackageInfo, get_header_filenames,
 
10
    RPMDirLoader, RPMHeaderListLoader)
9
11
from smart.backends.rpm.yast2 import YaST2PackageInfo
 
12
from smart.searcher import Searcher
 
13
from smart.cache import Cache
 
14
 
 
15
from tests import TESTDATADIR
10
16
 
11
17
 
12
18
class RPMHeaderPackageInfoTest(MockerTestCase):
90
96
        self.assertEquals(info.getURLs(),
91
97
                          [u"http://baseurl11/datadir/arch/fname"])
92
98
 
 
99
 
 
100
class HeaderFilenamesTest(MockerTestCase):
 
101
 
 
102
    def test_header_with_old_filenames(self):
 
103
        header = {rpm.RPMTAG_OLDFILENAMES: ["/foo"]}
 
104
        self.assertEquals(get_header_filenames(header), ["/foo"])
 
105
 
 
106
    def test_header_with_old_filenames_with_one_element(self):
 
107
        header = {rpm.RPMTAG_OLDFILENAMES: "/foo"}
 
108
        self.assertEquals(get_header_filenames(header), ["/foo"])
 
109
 
 
110
    def test_header_with_index(self):
 
111
        header = {rpm.RPMTAG_OLDFILENAMES: [],
 
112
                  rpm.RPMTAG_BASENAMES: ["foo", "bar", "baz"],
 
113
                  rpm.RPMTAG_DIRINDEXES: [0, 1, 0],
 
114
                  rpm.RPMTAG_DIRNAMES: ["/dir1/", "/dir2/"]}
 
115
        self.assertEquals(get_header_filenames(header),
 
116
                          ["/dir1/foo", "/dir2/bar", "/dir1/baz"])
 
117
 
 
118
    def test_header_with_index_containing_one_entry(self):
 
119
        header = {rpm.RPMTAG_OLDFILENAMES: [],
 
120
                  rpm.RPMTAG_BASENAMES: "foo",
 
121
                  rpm.RPMTAG_DIRINDEXES: 0,
 
122
                  rpm.RPMTAG_DIRNAMES: "/dir/"}
 
123
        self.assertEquals(get_header_filenames(header), ["/dir/foo"])
 
124
 
 
125
    def test_RPMHeaderPackageInfo_getPathList(self):
 
126
        """
 
127
        Ensure getPathList is working correctly with indexes.
 
128
        """
 
129
        header = {rpm.RPMTAG_OLDFILENAMES: [],
 
130
                  rpm.RPMTAG_BASENAMES: "foo",
 
131
                  rpm.RPMTAG_DIRINDEXES: 0,
 
132
                  rpm.RPMTAG_DIRNAMES: "/dir/",
 
133
                  rpm.RPMTAG_FILEMODES: 0644}
 
134
 
 
135
        package = self.mocker.mock()
 
136
        loader = self.mocker.mock()
 
137
        loader.getHeader(package)
 
138
        self.mocker.result(header)
 
139
 
 
140
        # Just assert it's called at all.
 
141
        mock_func = self.mocker.replace(get_header_filenames)
 
142
        mock_func(header)
 
143
        self.mocker.passthrough()
 
144
 
 
145
        self.mocker.replay()
 
146
 
 
147
        info = RPMHeaderPackageInfo(package, loader)
 
148
        self.assertEquals(info.getPathList(), ["/dir/foo"])
 
149
 
 
150
    def test_RPMHeaderListLoader_searcher(self):
 
151
        """
 
152
        Ensure getPathList is working correctly with indexes.
 
153
        """
 
154
        # Just assert it's called at all.
 
155
        get_header_filenames_mock = self.mocker.replace(get_header_filenames)
 
156
        get_header_filenames_mock(ANY)
 
157
        self.mocker.passthrough()
 
158
 
 
159
        self.mocker.replay()
 
160
 
 
161
        searcher = Searcher()
 
162
        searcher.addPath("/tmp/file1")
 
163
 
 
164
        cache = Cache()
 
165
 
 
166
        loader = RPMDirLoader(TESTDATADIR + "/rpm",
 
167
                              "name1-version1-release1.noarch.rpm")
 
168
        loader.setCache(cache)
 
169
        loader.load()
 
170
        loader.search(searcher)
 
171
 
 
172
        results = searcher.getResults()
 
173
 
 
174
        self.assertEquals(len(results), 1)
 
175
        self.assertEquals(results[0][0], 1.0)
 
176
        self.assertEquals(results[0][1].name, "name1")
 
177
 
 
178
    def test_RPMHeaderListLoader_loadFileProvides(self):
 
179
        get_header_filenames_mock = self.mocker.replace(get_header_filenames)
 
180
        get_header_filenames_mock(ANY)
 
181
        self.mocker.passthrough()
 
182
        self.mocker.count(2)
 
183
 
 
184
        self.mocker.replay()
 
185
 
 
186
        cache = Cache()
 
187
 
 
188
        loader = RPMHeaderListLoader("%s/aptrpm/base/pkglist.main" %
 
189
                                     TESTDATADIR, "http://base.url")
 
190
        loader.setCache(cache)
 
191
        loader.load()
 
192
 
 
193
        loader.loadFileProvides("/")
 
194
 
 
195
    def test_RPMDirLoader_loadFileProvides(self):
 
196
        returned_filenames = []
 
197
        def result_callback(filenames):
 
198
            returned_filenames.extend(filenames)
 
199
        get_header_filenames_mock = self.mocker.replace(get_header_filenames)
 
200
        get_header_filenames_mock(ANY)
 
201
        self.mocker.passthrough(result_callback)
 
202
 
 
203
        self.mocker.replay()
 
204
 
 
205
        cache = Cache()
 
206
 
 
207
        loader = RPMDirLoader(TESTDATADIR + "/rpm",
 
208
                              "name1-version1-release1.noarch.rpm")
 
209
        loader.setCache(cache)
 
210
        loader.load()
 
211
 
 
212
        loader.loadFileProvides({"/tmp/file1": "/tmp/file1"})
 
213
 
 
214
        self.assertEquals(returned_filenames, ["/tmp/file1"])