mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			110 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """Tests for distutils.command.register.""" | ||
|  | import sys | ||
|  | import os | ||
|  | import unittest | ||
|  | 
 | ||
|  | from distutils.command.register import register | ||
|  | from distutils.core import Distribution | ||
|  | 
 | ||
|  | from distutils.tests import support | ||
|  | from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase | ||
|  | 
 | ||
|  | class RawInputs(object): | ||
|  |     """Fakes user inputs.""" | ||
|  |     def __init__(self, *answers): | ||
|  |         self.answers = answers | ||
|  |         self.index = 0 | ||
|  | 
 | ||
|  |     def __call__(self, prompt=''): | ||
|  |         try: | ||
|  |             return self.answers[self.index] | ||
|  |         finally: | ||
|  |             self.index += 1 | ||
|  | 
 | ||
|  | WANTED_PYPIRC = """\
 | ||
|  | [distutils] | ||
|  | index-servers = | ||
|  |     pypi | ||
|  | 
 | ||
|  | [pypi] | ||
|  | username:tarek | ||
|  | password:xxx | ||
|  | """
 | ||
|  | 
 | ||
|  | class registerTestCase(PyPIRCCommandTestCase): | ||
|  | 
 | ||
|  |     def test_create_pypirc(self): | ||
|  |         # this test makes sure a .pypirc file | ||
|  |         # is created when requested. | ||
|  | 
 | ||
|  |         # let's create a fake distribution | ||
|  |         # and a register instance | ||
|  |         dist = Distribution() | ||
|  |         dist.metadata.url = 'xxx' | ||
|  |         dist.metadata.author = 'xxx' | ||
|  |         dist.metadata.author_email = 'xxx' | ||
|  |         dist.metadata.name = 'xxx' | ||
|  |         dist.metadata.version =  'xxx' | ||
|  |         cmd = register(dist) | ||
|  | 
 | ||
|  |         # we shouldn't have a .pypirc file yet | ||
|  |         self.assert_(not os.path.exists(self.rc)) | ||
|  | 
 | ||
|  |         # patching raw_input and getpass.getpass | ||
|  |         # so register gets happy | ||
|  |         # | ||
|  |         # Here's what we are faking : | ||
|  |         # use your existing login (choice 1.) | ||
|  |         # Username : 'tarek' | ||
|  |         # Password : 'xxx' | ||
|  |         # Save your login (y/N)? : 'y' | ||
|  |         inputs = RawInputs('1', 'tarek', 'y') | ||
|  |         from distutils.command import register as register_module | ||
|  |         register_module.raw_input = inputs.__call__ | ||
|  |         def _getpass(prompt): | ||
|  |             return 'xxx' | ||
|  |         register_module.getpass.getpass = _getpass | ||
|  |         class FakeServer(object): | ||
|  |             def __init__(self): | ||
|  |                 self.calls = [] | ||
|  | 
 | ||
|  |             def __call__(self, *args): | ||
|  |                 # we want to compare them, so let's store | ||
|  |                 # something comparable | ||
|  |                 els = args[0].items() | ||
|  |                 els.sort() | ||
|  |                 self.calls.append(tuple(els)) | ||
|  |                 return 200, 'OK' | ||
|  | 
 | ||
|  |         cmd.post_to_server = pypi_server = FakeServer() | ||
|  | 
 | ||
|  |         # let's run the command | ||
|  |         cmd.run() | ||
|  | 
 | ||
|  |         # we should have a brand new .pypirc file | ||
|  |         self.assert_(os.path.exists(self.rc)) | ||
|  | 
 | ||
|  |         # with the content similar to WANTED_PYPIRC | ||
|  |         content = open(self.rc).read() | ||
|  |         self.assertEquals(content, WANTED_PYPIRC) | ||
|  | 
 | ||
|  |         # now let's make sure the .pypirc file generated | ||
|  |         # really works : we shouldn't be asked anything | ||
|  |         # if we run the command again | ||
|  |         def _no_way(prompt=''): | ||
|  |             raise AssertionError(prompt) | ||
|  |         register_module.raw_input = _no_way | ||
|  | 
 | ||
|  |         cmd.run() | ||
|  | 
 | ||
|  |         # let's see what the server received : we should | ||
|  |         # have 2 similar requests | ||
|  |         self.assert_(len(pypi_server.calls), 2) | ||
|  |         self.assert_(pypi_server.calls[0], pypi_server.calls[1]) | ||
|  | 
 | ||
|  | def test_suite(): | ||
|  |     return unittest.makeSuite(registerTestCase) | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     unittest.main(defaultTest="test_suite") |