remains of mox

This commit is contained in:
Dimitri John Ledkov 2014-12-16 01:44:13 +00:00
parent 88e3d1d6ba
commit d4f6ef320e
3 changed files with 38 additions and 79 deletions

1
debian/control vendored
View File

@ -19,7 +19,6 @@ Build-Depends: dctrl-tools,
python-distro-info (>= 0.4~), python-distro-info (>= 0.4~),
python-httplib2, python-httplib2,
python-launchpadlib (>= 1.5.7), python-launchpadlib (>= 1.5.7),
python-mox,
python-setuptools, python-setuptools,
python-soappy, python-soappy,
python-unittest2 python-unittest2

View File

@ -28,7 +28,6 @@ import urllib2
import debian.deb822 import debian.deb822
import httplib2 import httplib2
import mock import mock
import mox
import ubuntutools.archive import ubuntutools.archive
from ubuntutools.config import UDTConfig from ubuntutools.config import UDTConfig
@ -83,11 +82,10 @@ class DscVerificationTestCase(unittest.TestCase):
self.test_bad() self.test_bad()
class LocalSourcePackageTestCase(mox.MoxTestBase, unittest.TestCase): class LocalSourcePackageTestCase(unittest.TestCase):
SourcePackage = ubuntutools.archive.UbuntuSourcePackage SourcePackage = ubuntutools.archive.UbuntuSourcePackage
def setUp(self): def setUp(self):
super(LocalSourcePackageTestCase, self).setUp()
self.workdir = tempfile.mkdtemp(prefix='udt-test') self.workdir = tempfile.mkdtemp(prefix='udt-test')
self._stubout('ubuntutools.archive.Distribution') self._stubout('ubuntutools.archive.Distribution')
@ -96,6 +94,9 @@ class LocalSourcePackageTestCase(mox.MoxTestBase, unittest.TestCase):
self.mock_http = self._stubout('httplib2.Http.request') self.mock_http = self._stubout('httplib2.Http.request')
self.mock_http.side_effect = self.request_proxy self.mock_http.side_effect = self.request_proxy
self.url_opener = mock.MagicMock(spec=urllib2.OpenerDirector)
self.url_opener.open.side_effect = self.urlopen_proxy
# Silence the tests a little: # Silence the tests a little:
self._stubout('ubuntutools.logger.Logger.stdout') self._stubout('ubuntutools.logger.Logger.stdout')
self._stubout('ubuntutools.logger.Logger.stderr') self._stubout('ubuntutools.logger.Logger.stderr')
@ -106,7 +107,6 @@ class LocalSourcePackageTestCase(mox.MoxTestBase, unittest.TestCase):
return patcher.start() return patcher.start()
def tearDown(self): def tearDown(self):
super(LocalSourcePackageTestCase, self).tearDown()
shutil.rmtree(self.workdir) shutil.rmtree(self.workdir)
def urlopen_proxy(self, url, destname=None): def urlopen_proxy(self, url, destname=None):
@ -196,16 +196,11 @@ class LocalSourcePackageTestCase(mox.MoxTestBase, unittest.TestCase):
dist = self.SourcePackage.distribution dist = self.SourcePackage.distribution
mirror = UDTConfig.defaults['%s_MIRROR' % dist.upper()] mirror = UDTConfig.defaults['%s_MIRROR' % dist.upper()]
urlbase = '/pool/main/e/example/' urlbase = '/pool/main/e/example/'
url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
url_opener.open(mirror + urlbase + 'example_1.0.orig.tar.gz'
).WithSideEffects(self.urlopen_proxy)
url_opener.open(mirror + urlbase + 'example_1.0-1.debian.tar.xz'
).WithSideEffects(self.urlopen_proxy)
self.mox.ReplayAll()
pkg = self.SourcePackage('example', '1.0-1', 'main', pkg = self.SourcePackage('example', '1.0-1', 'main',
workdir=self.workdir) workdir=self.workdir)
pkg.url_opener = url_opener
pkg.url_opener = self.url_opener
pkg.pull() pkg.pull()
def test_mirrors(self): def test_mirrors(self):
@ -213,16 +208,12 @@ class LocalSourcePackageTestCase(mox.MoxTestBase, unittest.TestCase):
mirror = 'http://mirror' mirror = 'http://mirror'
lpbase = 'https://launchpad.net/ubuntu/+archive/primary/+files/' lpbase = 'https://launchpad.net/ubuntu/+archive/primary/+files/'
urlbase = '/pool/main/e/example/' urlbase = '/pool/main/e/example/'
url_opener = self.mox.CreateMock(urllib2.OpenerDirector) sequence = [self.urlopen_null, self.urlopen_404, self.urlopen_proxy,
url_opener.open(mirror + urlbase + 'example_1.0.orig.tar.gz' self.urlopen_proxy]
).WithSideEffects(self.urlopen_null) def _callable_iter(*args, **kwargs):
url_opener.open(master + urlbase + 'example_1.0.orig.tar.gz' return sequence.pop(0)(*args, **kwargs)
).WithSideEffects(self.urlopen_404) url_opener = mock.MagicMock(spec=urllib2.OpenerDirector)
url_opener.open(lpbase + 'example_1.0.orig.tar.gz' url_opener.open.side_effect = _callable_iter
).WithSideEffects(self.urlopen_proxy)
url_opener.open(mirror + urlbase + 'example_1.0-1.debian.tar.xz'
).WithSideEffects(self.urlopen_proxy)
self.mox.ReplayAll()
pkg = self.SourcePackage('example', '1.0-1', 'main', pkg = self.SourcePackage('example', '1.0-1', 'main',
workdir=self.workdir, mirrors=[mirror]) workdir=self.workdir, mirrors=[mirror])
@ -247,28 +238,19 @@ class DebianLocalSourcePackageTestCase(LocalSourcePackageTestCase):
lpbase = 'https://launchpad.net/debian/+archive/primary/+files/' lpbase = 'https://launchpad.net/debian/+archive/primary/+files/'
base = '/pool/main/e/example/' base = '/pool/main/e/example/'
url_opener = self.mox.CreateMock(urllib2.OpenerDirector) sequence = [self.urlopen_null,
url_opener.open(debian_mirror + base + 'example_1.0.orig.tar.gz' self.urlopen_404,
).WithSideEffects(self.urlopen_null) self.urlopen_404,
url_opener.open(debsec_mirror + base + 'example_1.0.orig.tar.gz' self.urlopen_404,
).WithSideEffects(self.urlopen_404) self.urlopen_404,
url_opener.open(debian_master + base + 'example_1.0.orig.tar.gz' lambda x: BytesIO(
).WithSideEffects(self.urlopen_404) '{"fileinfo": {"hashabc": [{"name": "example_1.0.orig.tar.gz"}]}}'),
url_opener.open(debsec_master + base + 'example_1.0.orig.tar.gz' self.urlopen_file('example_1.0.orig.tar.gz'),
).WithSideEffects(self.urlopen_404) self.urlopen_proxy]
url_opener.open(lpbase + 'example_1.0.orig.tar.gz' def _callable_iter(*args, **kwargs):
).WithSideEffects(self.urlopen_404) return sequence.pop(0)(*args, **kwargs)
url_opener.open('http://snapshot.debian.org/mr/package/example/1.0-1/' url_opener = mock.MagicMock(spec=urllib2.OpenerDirector)
'srcfiles?fileinfo=1' url_opener.open.side_effect = _callable_iter
).WithSideEffects(lambda x: StringIO.StringIO(
'{"fileinfo": {"hashabc": [{"name": "example_1.0.orig.tar.gz"}]}}'
))
url_opener.open('http://snapshot.debian.org/file/hashabc'
).WithSideEffects(self.urlopen_file(
'example_1.0.orig.tar.gz'))
url_opener.open(debian_mirror + base + 'example_1.0-1.debian.tar.xz'
).WithSideEffects(self.urlopen_proxy)
self.mox.ReplayAll()
pkg = self.SourcePackage('example', '1.0-1', 'main', pkg = self.SourcePackage('example', '1.0-1', 'main',
workdir=self.workdir, mirrors=[debian_mirror, workdir=self.workdir, mirrors=[debian_mirror,
@ -282,29 +264,17 @@ class DebianLocalSourcePackageTestCase(LocalSourcePackageTestCase):
lpbase = 'https://launchpad.net/debian/+archive/primary/+files/' lpbase = 'https://launchpad.net/debian/+archive/primary/+files/'
base = '/pool/main/e/example/' base = '/pool/main/e/example/'
self.mock_http.side_effect = self.request_404_then_proxy self.mock_http.side_effect = self.request_404_then_proxy
url_opener = self.mox.CreateMock(urllib2.OpenerDirector)
url_opener.open(mirror + base + 'example_1.0.orig.tar.gz'
).WithSideEffects(self.urlopen_proxy)
url_opener.open(mirror + base + 'example_1.0-1.debian.tar.xz'
).WithSideEffects(self.urlopen_proxy)
def fake_gpg_info(self, message, keyrings=None): patcher = mock.patch.object(debian.deb822.GpgInfo, 'from_sequence')
return debian.deb822.GpgInfo.from_output( self.addCleanup(patcher.stop)
'[GNUPG:] GOODSIG DEADBEEF Joe Developer ' mock_gpg_info = patcher.start()
'<joe@example.net>') mock_gpg_info.return_value = debian.deb822.GpgInfo.from_output(
# We have to stub this out without mox because there some versions of '[GNUPG:] GOODSIG DEADBEEF Joe Developer '
# python-debian will pass keyrings=None, others won't. '<joe@example.net>')
# http://code.google.com/p/pymox/issues/detail?id=37
self.mox.stubs.Set(debian.deb822.GpgInfo, 'from_sequence',
types.MethodType(fake_gpg_info,
debian.deb822.GpgInfo,
debian.deb822.GpgInfo))
self.mox.ReplayAll()
pkg = self.SourcePackage('example', '1.0-1', 'main', pkg = self.SourcePackage('example', '1.0-1', 'main',
workdir=self.workdir, mirrors=[mirror]) workdir=self.workdir, mirrors=[mirror])
pkg.url_opener = url_opener pkg.url_opener = self.url_opener
pkg.pull() pkg.pull()
def test_dsc_badsig(self): def test_dsc_badsig(self):
@ -313,19 +283,12 @@ class DebianLocalSourcePackageTestCase(LocalSourcePackageTestCase):
base = '/pool/main/e/example/' base = '/pool/main/e/example/'
self.mock_http.side_effect = self.request_404_then_proxy self.mock_http.side_effect = self.request_404_then_proxy
def fake_gpg_info(self, message, keyrings=None): patcher = mock.patch.object(debian.deb822.GpgInfo, 'from_sequence')
return debian.deb822.GpgInfo.from_output( self.addCleanup(patcher.stop)
'[GNUPG:] ERRSIG DEADBEEF') mock_gpg_info = patcher.start()
# We have to stub this out without mox because there some versions of mock_gpg_info.return_value = debian.deb822.GpgInfo.from_output(
# python-debian will pass keyrings=None, others won't. '[GNUPG:] ERRSIG DEADBEEF')
# http://code.google.com/p/pymox/issues/detail?id=37
self.mox.stubs.Set(debian.deb822.GpgInfo, 'from_sequence',
types.MethodType(fake_gpg_info,
debian.deb822.GpgInfo,
debian.deb822.GpgInfo))
self.mox.ReplayAll()
pkg = self.SourcePackage('example', '1.0-1', 'main', pkg = self.SourcePackage('example', '1.0-1', 'main',
workdir=self.workdir, mirrors=[mirror]) workdir=self.workdir, mirrors=[mirror])
self.assertRaises(ubuntutools.archive.DownloadError, pkg.pull) self.assertRaises(ubuntutools.archive.DownloadError, pkg.pull)

View File

@ -25,9 +25,6 @@ WHITELIST = [re.compile(': %s$' % x) for x in (
r"No name '\w+Error' in module 'launchpadlib\.errors'", r"No name '\w+Error' in module 'launchpadlib\.errors'",
# http://www.logilab.org/ticket/51250: # http://www.logilab.org/ticket/51250:
r"Module 'hashlib' has no '(md5|sha(1|224|256|384|512))' member", r"Module 'hashlib' has no '(md5|sha(1|224|256|384|512))' member",
# mox:
r"Instance of '.+' has no '(WithSideEffects|MultipleTimes|AndReturn)' "
r"member",
# pylint doesn't like *args/**kwargs # pylint doesn't like *args/**kwargs
r"Instance of 'Popen' has no '.*' member", r"Instance of 'Popen' has no '.*' member",
)] )]