mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Test PyPI Server implementation at testpypi.python.org, to use in tests.
 | |
| 
 | |
| This is a drop-in replacement for the mock pypi server for testing against a
 | |
| real pypi server hosted by python.org especially for testing against.
 | |
| """
 | |
| 
 | |
| import unittest
 | |
| 
 | |
| PYPI_DEFAULT_STATIC_PATH = None
 | |
| 
 | |
| 
 | |
| def use_xmlrpc_server(*server_args, **server_kwargs):
 | |
|     server_kwargs['serve_xmlrpc'] = True
 | |
|     return use_pypi_server(*server_args, **server_kwargs)
 | |
| 
 | |
| 
 | |
| def use_http_server(*server_args, **server_kwargs):
 | |
|     server_kwargs['serve_xmlrpc'] = False
 | |
|     return use_pypi_server(*server_args, **server_kwargs)
 | |
| 
 | |
| 
 | |
| def use_pypi_server(*server_args, **server_kwargs):
 | |
|     """Decorator to make use of the PyPIServer for test methods,
 | |
|     just when needed, and not for the entire duration of the testcase.
 | |
|     """
 | |
|     def wrapper(func):
 | |
|         def wrapped(*args, **kwargs):
 | |
|             server = PyPIServer(*server_args, **server_kwargs)
 | |
|             func(server=server, *args, **kwargs)
 | |
|         return wrapped
 | |
|     return wrapper
 | |
| 
 | |
| 
 | |
| class PyPIServerTestCase(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         super(PyPIServerTestCase, self).setUp()
 | |
|         self.pypi = PyPIServer()
 | |
|         self.pypi.start()
 | |
|         self.addCleanup(self.pypi.stop)
 | |
| 
 | |
| 
 | |
| class PyPIServer:
 | |
|     """Shim to access testpypi.python.org, for testing a real server."""
 | |
| 
 | |
|     def __init__(self, test_static_path=None,
 | |
|                  static_filesystem_paths=["default"],
 | |
|                  static_uri_paths=["simple"], serve_xmlrpc=False):
 | |
|         self.address = ('testpypi.python.org', '80')
 | |
| 
 | |
|     def start(self):
 | |
|         pass
 | |
| 
 | |
|     def stop(self):
 | |
|         pass
 | |
| 
 | |
|     @property
 | |
|     def full_address(self):
 | |
|         return "http://%s:%s" % self.address
 | 
