14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm"""Tests for distutils.pypirc.pypirc.""" 24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport sys 34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os 44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest 54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport tempfile 64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport shutil 74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.core import PyPIRCCommand 94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.core import Distribution 104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.log import set_threshold 114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.log import WARN 124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.tests import support 144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test.test_support import run_unittest 154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPYPIRC = """\ 174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[distutils] 184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmindex-servers = 204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm server1 214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm server2 224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[server1] 244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmusername:me 254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmpassword:secret 264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[server2] 284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmusername:meagain 294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmpassword: secret 304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmrealm:acme 314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmrepository:http://another.pypi/ 324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm""" 334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmPYPIRC_OLD = """\ 354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[server-login] 364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmusername:tarek 374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmpassword:secret 384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm""" 394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmWANTED = """\ 414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[distutils] 424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmindex-servers = 434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pypi 444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm[pypi] 464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmusername:tarek 474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmpassword:xxx 484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm""" 494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass PyPIRCCommandTestCase(support.TempdirManager, 524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm support.LoggingSilencer, 534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm support.EnvironGuard, 544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm unittest.TestCase): 554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 564710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def setUp(self): 574710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm """Patches the environment.""" 584710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(PyPIRCCommandTestCase, self).setUp() 594710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.tmp_dir = self.mkdtemp() 604710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm os.environ['HOME'] = self.tmp_dir 614710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.rc = os.path.join(self.tmp_dir, '.pypirc') 624710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.dist = Distribution() 634710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 644710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm class command(PyPIRCCommand): 654710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def __init__(self, dist): 664710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm PyPIRCCommand.__init__(self, dist) 674710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def initialize_options(self): 684710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm pass 694710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm finalize_options = initialize_options 704710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 714710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self._cmd = command 724710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.old_threshold = set_threshold(WARN) 734710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 744710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def tearDown(self): 754710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm """Removes the patch.""" 764710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm set_threshold(self.old_threshold) 774710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm super(PyPIRCCommandTestCase, self).tearDown() 784710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 794710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_server_registration(self): 804710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # This test makes sure PyPIRCCommand knows how to: 814710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # 1. handle several sections in .pypirc 824710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # 2. handle the old format 834710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 844710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # new format 854710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.write_file(self.rc, PYPIRC) 864710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd = self._cmd(self.dist) 874710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config = cmd._read_pypirc() 884710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 894710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config = config.items() 904710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config.sort() 914710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm waited = [('password', 'secret'), ('realm', 'pypi'), 924710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ('repository', 'http://pypi.python.org/pypi'), 934710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ('server', 'server1'), ('username', 'me')] 944710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(config, waited) 954710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 964710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm # old format 974710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.write_file(self.rc, PYPIRC_OLD) 984710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config = cmd._read_pypirc() 994710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config = config.items() 1004710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm config.sort() 1014710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm waited = [('password', 'secret'), ('realm', 'pypi'), 1024710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ('repository', 'http://pypi.python.org/pypi'), 1034710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm ('server', 'server-login'), ('username', 'tarek')] 1044710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(config, waited) 1054710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 1064710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm def test_server_empty_registration(self): 1074710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd = self._cmd(self.dist) 1084710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm rc = cmd._get_rc_file() 1094710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(not os.path.exists(rc)) 1104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm cmd._store_pypirc('tarek', 'xxx') 1114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertTrue(os.path.exists(rc)) 1124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f = open(rc) 1134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm try: 1144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm content = f.read() 1154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm self.assertEqual(content, WANTED) 1164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm finally: 1174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm f.close() 1184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 1194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_suite(): 1204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm return unittest.makeSuite(PyPIRCCommandTestCase) 1214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm 1224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == "__main__": 1234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm run_unittest(test_suite()) 124