~ubuntu-branches/ubuntu/precise/ubuntu-dev-tools/precise-proposed

« back to all changes in this revision

Viewing changes to ubuntutools/test/test_archive.py

  • Committer: Package Import Robot
  • Author(s): Stefano Rivera, Stefano Rivera, Daniel Hahler, John S Gruber
  • Date: 2012-03-29 00:01:40 UTC
  • Revision ID: package-import@ubuntu.com-20120329000140-z0n2vxbr39s83vhn
Tags: 0.140
[ Stefano Rivera ]
* Bump Standards-Version to 3.9.3, no changes needed.
* Update machine-readable copyright Format to 1.0.
* pbuilder-dist: Use the same chroot, whether the system-architecture was
  the supplied architecture or was chosen by default (LP: #943435)
* backportpackage
  - Prompt to delete existing workdirs (LP: #885514)
  - Support a BACKPORTPACKAGE_UPLOAD configuration/enviornment variable
    (LP: #693217)
* requestsync:
  - New packages from non-free or contrib go into multiverse (LP: #935643)
  - Catch SeriesNotFoundException and display a friendly error (LP: #963888)

[ Daniel Hahler ]
* ubuntutools/archive.py: use ProxyHandler in _download_file.
  This makes use of the system proxy (e.g. http_proxy).
* pbuilder-dist: Do not force default value for `--aptcache` argument
  (LP: #956903)

[ John S Gruber ]
* Don't use --override-config with operations other than update.
  (LP: #409696)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# test_archive.py - Test suite for ubuntutools.archive
2
2
#
3
 
# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
 
3
# Copyright (C) 2010-2012, Stefano Rivera <stefanor@ubuntu.com>
4
4
#
5
5
# Permission to use, copy, modify, and/or distribute this software for any
6
6
# purpose with or without fee is hereby granted, provided that the above
36
36
 
37
37
from ubuntutools.test.example_package import ExamplePackage
38
38
 
 
39
 
39
40
def setUpModule():
40
41
    if not os.path.exists('test-data/example-0.1-1.dsc'):
41
42
        ex_pkg = ExamplePackage()
67
68
        fn = 'test-data/example_1.0.orig.tar.gz'
68
69
        with open(fn, 'rb') as f:
69
70
            data = f.read()
70
 
        data = data[:-1] +  chr(ord(data[-1]) ^ 8)
 
71
        data = data[:-1] + chr(ord(data[-1]) ^ 8)
71
72
        self.mox.StubOutWithMock(__builtin__, 'open')
72
73
        open(fn, 'rb').AndReturn(StringIO.StringIO(data))
73
74
        self.mox.ReplayAll()
95
96
        self.mox.StubOutWithMock(ubuntutools.archive, 'Distribution')
96
97
        self.mox.StubOutWithMock(ubuntutools.archive, 'rmadison')
97
98
 
98
 
        self.real_urlopen = urllib2.urlopen
99
 
        self.mox.StubOutWithMock(urllib2, 'urlopen')
100
 
 
101
99
        self.real_http = httplib2.Http()
102
100
        self.mox.StubOutWithMock(httplib2, 'Http')
103
101
        self.mock_http = self.mox.CreateMock(httplib2.Http)
115
113
        if destname is None:
116
114
            destname = os.path.basename(url)
117
115
        destpath = os.path.join(os.path.abspath('test-data'), destname)
118
 
        return self.real_urlopen('file://' + destpath)
 
116
        return urllib2.urlopen('file://' + destpath)
119
117
 
120
118
    def urlopen_file(self, filename):
121
119
        "Wrapper for urlopen_proxy for named files"
195
193
        self.mock_http.request('https://launchpad.net/%s/+archive/primary/'
196
194
                               '+files/example_1.0-1.dsc' % dist
197
195
                              ).WithSideEffects(self.request_proxy)
198
 
        urllib2.urlopen(mirror + urlbase + 'example_1.0.orig.tar.gz'
 
196
        url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
 
197
        url_opener.open(mirror + urlbase + 'example_1.0.orig.tar.gz'
199
198
                       ).WithSideEffects(self.urlopen_proxy)
200
 
        urllib2.urlopen(mirror + urlbase + 'example_1.0-1.debian.tar.gz'
 
199
        url_opener.open(mirror + urlbase + 'example_1.0-1.debian.tar.gz'
201
200
                       ).WithSideEffects(self.urlopen_proxy)
202
201
        self.mox.ReplayAll()
203
202
 
204
203
        pkg = self.SourcePackage('example', '1.0-1', 'main',
205
204
                                 workdir=self.workdir)
 
205
        pkg.url_opener = url_opener
206
206
        pkg.pull()
207
207
 
208
208
    def test_mirrors(self):
213
213
        httplib2.Http().AndReturn(self.mock_http)
214
214
        self.mock_http.request(lpbase + 'example_1.0-1.dsc'
215
215
                              ).WithSideEffects(self.request_proxy)
216
 
        urllib2.urlopen(mirror + urlbase + 'example_1.0.orig.tar.gz'
 
216
        url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
 
217
        url_opener.open(mirror + urlbase + 'example_1.0.orig.tar.gz'
217
218
                       ).WithSideEffects(self.urlopen_null)
218
 
        urllib2.urlopen(master + urlbase + 'example_1.0.orig.tar.gz'
 
219
        url_opener.open(master + urlbase + 'example_1.0.orig.tar.gz'
219
220
                       ).WithSideEffects(self.urlopen_404)
220
 
        urllib2.urlopen(lpbase + 'example_1.0.orig.tar.gz'
 
221
        url_opener.open(lpbase + 'example_1.0.orig.tar.gz'
221
222
                       ).WithSideEffects(self.urlopen_proxy)
222
 
        urllib2.urlopen(mirror + urlbase + 'example_1.0-1.debian.tar.gz'
 
223
        url_opener.open(mirror + urlbase + 'example_1.0-1.debian.tar.gz'
223
224
                       ).WithSideEffects(self.urlopen_proxy)
224
225
        self.mox.ReplayAll()
225
226
 
226
227
        pkg = self.SourcePackage('example', '1.0-1', 'main',
227
228
                                 workdir=self.workdir, mirrors=[mirror])
 
229
        pkg.url_opener = url_opener
228
230
        pkg.pull()
229
231
 
230
232
    def test_dsc_missing(self):
253
255
        httplib2.Http().AndReturn(self.mock_http)
254
256
        self.mock_http.request(lpbase + 'example_1.0-1.dsc'
255
257
                              ).WithSideEffects(self.request_proxy)
256
 
        urllib2.urlopen(debian_mirror + base + 'example_1.0.orig.tar.gz'
 
258
        url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
 
259
        url_opener.open(debian_mirror + base + 'example_1.0.orig.tar.gz'
257
260
                       ).WithSideEffects(self.urlopen_null)
258
 
        urllib2.urlopen(debsec_mirror + base + 'example_1.0.orig.tar.gz'
259
 
                       ).WithSideEffects(self.urlopen_404)
260
 
        urllib2.urlopen(debian_master + base + 'example_1.0.orig.tar.gz'
261
 
                       ).WithSideEffects(self.urlopen_404)
262
 
        urllib2.urlopen(debsec_master + base + 'example_1.0.orig.tar.gz'
263
 
                       ).WithSideEffects(self.urlopen_404)
264
 
        urllib2.urlopen(lpbase + 'example_1.0.orig.tar.gz'
265
 
                       ).WithSideEffects(self.urlopen_404)
266
 
        urllib2.urlopen('http://snapshot.debian.org/mr/package/example/1.0-1/'
 
261
        url_opener.open(debsec_mirror + base + 'example_1.0.orig.tar.gz'
 
262
                       ).WithSideEffects(self.urlopen_404)
 
263
        url_opener.open(debian_master + base + 'example_1.0.orig.tar.gz'
 
264
                       ).WithSideEffects(self.urlopen_404)
 
265
        url_opener.open(debsec_master + base + 'example_1.0.orig.tar.gz'
 
266
                       ).WithSideEffects(self.urlopen_404)
 
267
        url_opener.open(lpbase + 'example_1.0.orig.tar.gz'
 
268
                       ).WithSideEffects(self.urlopen_404)
 
269
        url_opener.open('http://snapshot.debian.org/mr/package/example/1.0-1/'
267
270
                        'srcfiles?fileinfo=1'
268
271
                       ).WithSideEffects(lambda x: StringIO.StringIO(
269
272
            '{"fileinfo": {"hashabc": [{"name": "example_1.0.orig.tar.gz"}]}}'
270
273
            ))
271
 
        urllib2.urlopen('http://snapshot.debian.org/file/hashabc'
 
274
        url_opener.open('http://snapshot.debian.org/file/hashabc'
272
275
                       ).WithSideEffects(self.urlopen_file(
273
276
                           'example_1.0.orig.tar.gz'))
274
 
        urllib2.urlopen(debian_mirror + base + 'example_1.0-1.debian.tar.gz'
 
277
        url_opener.open(debian_mirror + base + 'example_1.0-1.debian.tar.gz'
275
278
                       ).WithSideEffects(self.urlopen_proxy)
276
279
        self.mox.ReplayAll()
277
280
 
278
281
        pkg = self.SourcePackage('example', '1.0-1', 'main',
279
282
                                 workdir=self.workdir, mirrors=[debian_mirror,
280
283
                                                                debsec_mirror])
 
284
        pkg.url_opener = url_opener
281
285
        pkg.pull()
282
286
        pkg.unpack()
283
287
 
291
295
        httplib2.Http().AndReturn(self.mock_http)
292
296
        self.mock_http.request(mirror + base + 'example_1.0-1.dsc'
293
297
                              ).WithSideEffects(self.request_proxy)
294
 
        urllib2.urlopen(mirror + base + 'example_1.0.orig.tar.gz'
 
298
        url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
 
299
        url_opener.open(mirror + base + 'example_1.0.orig.tar.gz'
295
300
                       ).WithSideEffects(self.urlopen_proxy)
296
 
        urllib2.urlopen(mirror + base + 'example_1.0-1.debian.tar.gz'
 
301
        url_opener.open(mirror + base + 'example_1.0-1.debian.tar.gz'
297
302
                       ).WithSideEffects(self.urlopen_proxy)
298
303
 
299
304
        def fake_gpg_info(self, message, keyrings=None):
312
317
 
313
318
        pkg = self.SourcePackage('example', '1.0-1', 'main',
314
319
                                 workdir=self.workdir, mirrors=[mirror])
 
320
        pkg.url_opener = url_opener
315
321
        pkg.pull()
316
322
 
317
323
    def test_dsc_badsig(self):