[Python-checkins] distutils2: refactored the pypi server a little bit (also, moved the PyPIServerTestCase to

tarek.ziade python-checkins at python.org
Sun Jul 4 11:48:38 CEST 2010


tarek.ziade pushed ed1fc0d836b6 to distutils2:

http://hg.python.org/distutils2/rev/ed1fc0d836b6
changeset:   273:ed1fc0d836b6
user:        Konrad Delong <konryd at gmail.com>
date:        Mon May 17 01:08:19 2010 +0200
summary:     refactored the pypi server a little bit (also, moved the PyPIServerTestCase to that file)
files:       src/distutils2/tests/pypi_server.py, src/distutils2/tests/test_upload.py, src/distutils2/tests/test_upload_docs.py

diff --git a/src/distutils2/tests/pypi_server.py b/src/distutils2/tests/pypi_server.py
--- a/src/distutils2/tests/pypi_server.py
+++ b/src/distutils2/tests/pypi_server.py
@@ -1,6 +1,17 @@
-import Queue, threading, time
+import Queue, threading, time, unittest2
 from wsgiref.simple_server import make_server
 
+class PyPIServerTestCase(unittest2.TestCase):
+
+    def setUp(self):
+        super(PyPIServerTestCase, self).setUp()
+        self.pypi = PyPIServer()
+        self.pypi.start()
+
+    def tearDown(self):
+        super(PyPIServerTestCase, self).tearDown()
+        self.pypi.stop()
+
 class PyPIServer(threading.Thread):
     """Thread that wraps a wsgi app"""
     def __init__(self):
@@ -10,6 +21,9 @@
         self.address = self.httpd.server_address
         self.request_queue = Queue.Queue()
         self._requests = []
+        self._default_response_status = "200 OK"
+        self._default_response_headers = [('Content-type', 'text/plain')]
+        self._default_response_data = ["hello"]
 
     def run(self):
         self.httpd.serve_forever()
@@ -19,15 +33,21 @@
         self.join()
 
     def pypi_app(self, environ, start_response):
-        status = '200 OK' # HTTP Status
-        headers = [('Content-type', 'text/plain')] # HTTP Headers
-        start_response(status, headers)
+        # record the request
         if environ.get("CONTENT_LENGTH"):
             request_data = environ.pop('wsgi.input').read(int(environ['CONTENT_LENGTH']))
         else:
             request_data = environ.pop('wsgi.input').read()
         self.request_queue.put((environ, request_data))
-        return ["hello"]
+        # send back a response
+        status, headers, data = self.get_next_response()
+        start_response(status, headers)
+        return data
+
+    def get_next_response(self):
+        return (self._default_response_status,
+                self._default_response_headers,
+                self._default_response_data)
 
     @property
     def requests(self):
diff --git a/src/distutils2/tests/test_upload.py b/src/distutils2/tests/test_upload.py
--- a/src/distutils2/tests/test_upload.py
+++ b/src/distutils2/tests/test_upload.py
@@ -5,7 +5,7 @@
 from distutils2.command.upload import upload
 from distutils2.core import Distribution
 
-from distutils2.tests.pypi_server import PyPIServer
+from distutils2.tests.pypi_server import PyPIServer, PyPIServerTestCase
 from distutils2.tests.test_config import PYPIRC, PyPIRCCommandTestCase
 
 
@@ -19,16 +19,6 @@
 username:me
 """
 
-class PyPIServerTestCase(unittest2.TestCase):
-
-    def setUp(self):
-        super(PyPIServerTestCase, self).setUp()
-        self.pypi = PyPIServer()
-        self.pypi.start()
-
-    def tearDown(self):
-        self.pypi.stop()
-
 class UploadTestCase(PyPIServerTestCase, PyPIRCCommandTestCase):
 
     def test_finalize_options(self):
diff --git a/src/distutils2/tests/test_upload_docs.py b/src/distutils2/tests/test_upload_docs.py
--- a/src/distutils2/tests/test_upload_docs.py
+++ b/src/distutils2/tests/test_upload_docs.py
@@ -8,8 +8,7 @@
 from distutils2.core import Distribution
 
 from distutils2.tests import support
-from distutils2.tests.pypi_server import PyPIServer
-from distutils2.tests.test_upload import PyPIServerTestCase
+from distutils2.tests.pypi_server import PyPIServer, PyPIServerTestCase
 from distutils2.tests.test_config import PYPIRC, PyPIRCCommandTestCase
 
 
@@ -108,6 +107,9 @@
     def test_honours_dry_run(self):
         pass
 
+    def test_reads_pypirc_data(self):
+        pass
+
 def test_suite():
     return unittest2.makeSuite(UploadDocsTestCase)
 

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list