[Python-checkins] r70889 - in python/trunk/Lib/distutils: command/upload.py tests/test_upload.py

tarek.ziade python-checkins at python.org
Tue Mar 31 22:53:55 CEST 2009


Author: tarek.ziade
Date: Tue Mar 31 22:53:55 2009
New Revision: 70889
Log:
more tests for the upload command
Modified:
 python/trunk/Lib/distutils/command/upload.py
 python/trunk/Lib/distutils/tests/test_upload.py
Modified: python/trunk/Lib/distutils/command/upload.py
==============================================================================
--- python/trunk/Lib/distutils/command/upload.py	(original)
+++ python/trunk/Lib/distutils/command/upload.py	Tue Mar 31 22:53:55 2009
@@ -192,4 +192,4 @@
 self.announce('Upload failed (%s): %s' % (r.status, r.reason),
 log.ERROR)
 if self.show_response:
- print '-'*75, r.read(), '-'*75
+ self.announce('-'*75, r.read(), '-'*75)
Modified: python/trunk/Lib/distutils/tests/test_upload.py
==============================================================================
--- python/trunk/Lib/distutils/tests/test_upload.py	(original)
+++ python/trunk/Lib/distutils/tests/test_upload.py	Tue Mar 31 22:53:55 2009
@@ -2,6 +2,7 @@
 import sys
 import os
 import unittest
+import httplib
 
 from distutils.command.upload import upload
 from distutils.core import Distribution
@@ -18,17 +19,52 @@
 [server1]
 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):
 
+ 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):
 
 # new format
- f = open(self.rc, 'w')
- f.write(PYPIRC)
- f.close()
-
+ self.write_file(self.rc, PYPIRC)
 dist = Distribution()
 cmd = upload(dist)
 cmd.finalize_options()
@@ -39,9 +75,7 @@
 
 def test_saved_password(self):
 # file with no password
- f = open(self.rc, 'w')
- f.write(PYPIRC_NOPASSWORD)
- f.close()
+ self.write_file(self.rc, PYPIRC_NOPASSWORD)
 
 # make sure it passes
 dist = Distribution()
@@ -56,6 +90,28 @@
 cmd.finalize_options()
 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():
 return unittest.makeSuite(uploadTestCase)
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /