Kaydet (Commit) e899b711 authored tarafından Tarek Ziadé's avatar Tarek Ziadé

more tests for the upload command

üst ca2b8d28
...@@ -192,4 +192,4 @@ class upload(PyPIRCCommand): ...@@ -192,4 +192,4 @@ class upload(PyPIRCCommand):
self.announce('Upload failed (%s): %s' % (r.status, r.reason), self.announce('Upload failed (%s): %s' % (r.status, r.reason),
log.ERROR) log.ERROR)
if self.show_response: if self.show_response:
print '-'*75, r.read(), '-'*75 self.announce('-'*75, r.read(), '-'*75)
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import sys import sys
import os import os
import unittest import unittest
import httplib
from distutils.command.upload import upload from distutils.command.upload import upload
from distutils.core import Distribution from distutils.core import Distribution
...@@ -18,17 +19,52 @@ index-servers = ...@@ -18,17 +19,52 @@ index-servers =
[server1] [server1]
username:me username:me
""" """
class Response(object):
def __init__(self, status=200, reason='OK'):
self.status = status
self.reason = reason
class FakeConnection(object):
def __init__(self):
self.requests = []
self.headers = []
self.body = ''
def __call__(self, netloc):
return self
def connect(self):
pass
endheaders = connect
def putrequest(self, method, url):
self.requests.append((method, url))
def putheader(self, name, value):
self.headers.append((name, value))
def send(self, body):
self.body = body
def getresponse(self):
return Response()
class uploadTestCase(PyPIRCCommandTestCase): class uploadTestCase(PyPIRCCommandTestCase):
def setUp(self):
super(uploadTestCase, self).setUp()
self.old_class = httplib.HTTPConnection
self.conn = httplib.HTTPConnection = FakeConnection()
def tearDown(self):
httplib.HTTPConnection = self.old_class
super(uploadTestCase, self).tearDown()
def test_finalize_options(self): def test_finalize_options(self):
# new format # new format
f = open(self.rc, 'w') self.write_file(self.rc, PYPIRC)
f.write(PYPIRC)
f.close()
dist = Distribution() dist = Distribution()
cmd = upload(dist) cmd = upload(dist)
cmd.finalize_options() cmd.finalize_options()
...@@ -39,9 +75,7 @@ class uploadTestCase(PyPIRCCommandTestCase): ...@@ -39,9 +75,7 @@ class uploadTestCase(PyPIRCCommandTestCase):
def test_saved_password(self): def test_saved_password(self):
# file with no password # file with no password
f = open(self.rc, 'w') self.write_file(self.rc, PYPIRC_NOPASSWORD)
f.write(PYPIRC_NOPASSWORD)
f.close()
# make sure it passes # make sure it passes
dist = Distribution() dist = Distribution()
...@@ -56,6 +90,28 @@ class uploadTestCase(PyPIRCCommandTestCase): ...@@ -56,6 +90,28 @@ class uploadTestCase(PyPIRCCommandTestCase):
cmd.finalize_options() cmd.finalize_options()
self.assertEquals(cmd.password, 'xxx') self.assertEquals(cmd.password, 'xxx')
def test_upload(self):
tmp = self.mkdtemp()
path = os.path.join(tmp, 'xxx')
self.write_file(path)
command, pyversion, filename = 'xxx', '2.6', path
dist_files = [(command, pyversion, filename)]
self.write_file(self.rc, PYPIRC)
# lets run it
pkg_dir, dist = self.create_dist(dist_files=dist_files)
cmd = upload(dist)
cmd.ensure_finalized()
cmd.run()
# what did we send ?
headers = dict(self.conn.headers)
self.assertEquals(headers['Content-length'], '2086')
self.assert_(headers['Content-type'].startswith('multipart/form-data'))
self.assertEquals(self.conn.requests, [('POST', '/pypi')])
self.assert_('xxx' in self.conn.body)
def test_suite(): def test_suite():
return unittest.makeSuite(uploadTestCase) return unittest.makeSuite(uploadTestCase)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment