123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- """Tests for distutils.pypirc.pypirc."""
- import os
- import unittest
- from distutils.core import PyPIRCCommand
- from distutils.core import Distribution
- from distutils.log import set_threshold
- from distutils.log import WARN
- from distutils.tests import support
- from test.support import run_unittest
- PYPIRC = """\
- [distutils]
- index-servers =
- server1
- server2
- server3
- [server1]
- username:me
- password:secret
- [server2]
- username:meagain
- password: secret
- realm:acme
- repository:http://another.pypi/
- [server3]
- username:cbiggles
- password:yh^%#rest-of-my-password
- """
- PYPIRC_OLD = """\
- [server-login]
- username:tarek
- password:secret
- """
- WANTED = """\
- [distutils]
- index-servers =
- pypi
- [pypi]
- username:tarek
- password:xxx
- """
- class BasePyPIRCCommandTestCase(support.TempdirManager,
- support.LoggingSilencer,
- support.EnvironGuard,
- unittest.TestCase):
- def setUp(self):
- """Patches the environment."""
- super(BasePyPIRCCommandTestCase, self).setUp()
- self.tmp_dir = self.mkdtemp()
- os.environ['HOME'] = self.tmp_dir
- os.environ['USERPROFILE'] = self.tmp_dir
- self.rc = os.path.join(self.tmp_dir, '.pypirc')
- self.dist = Distribution()
- class command(PyPIRCCommand):
- def __init__(self, dist):
- PyPIRCCommand.__init__(self, dist)
- def initialize_options(self):
- pass
- finalize_options = initialize_options
- self._cmd = command
- self.old_threshold = set_threshold(WARN)
- def tearDown(self):
- """Removes the patch."""
- set_threshold(self.old_threshold)
- super(BasePyPIRCCommandTestCase, self).tearDown()
- class PyPIRCCommandTestCase(BasePyPIRCCommandTestCase):
- def test_server_registration(self):
- # This test makes sure PyPIRCCommand knows how to:
- # 1. handle several sections in .pypirc
- # 2. handle the old format
- # new format
- self.write_file(self.rc, PYPIRC)
- cmd = self._cmd(self.dist)
- config = cmd._read_pypirc()
- config = list(sorted(config.items()))
- waited = [('password', 'secret'), ('realm', 'pypi'),
- ('repository', 'https://upload.pypi.org/legacy/'),
- ('server', 'server1'), ('username', 'me')]
- self.assertEqual(config, waited)
- # old format
- self.write_file(self.rc, PYPIRC_OLD)
- config = cmd._read_pypirc()
- config = list(sorted(config.items()))
- waited = [('password', 'secret'), ('realm', 'pypi'),
- ('repository', 'https://upload.pypi.org/legacy/'),
- ('server', 'server-login'), ('username', 'tarek')]
- self.assertEqual(config, waited)
- def test_server_empty_registration(self):
- cmd = self._cmd(self.dist)
- rc = cmd._get_rc_file()
- self.assertFalse(os.path.exists(rc))
- cmd._store_pypirc('tarek', 'xxx')
- self.assertTrue(os.path.exists(rc))
- f = open(rc)
- try:
- content = f.read()
- self.assertEqual(content, WANTED)
- finally:
- f.close()
- def test_config_interpolation(self):
- # using the % character in .pypirc should not raise an error (#20120)
- self.write_file(self.rc, PYPIRC)
- cmd = self._cmd(self.dist)
- cmd.repository = 'server3'
- config = cmd._read_pypirc()
- config = list(sorted(config.items()))
- waited = [('password', 'yh^%#rest-of-my-password'), ('realm', 'pypi'),
- ('repository', 'https://upload.pypi.org/legacy/'),
- ('server', 'server3'), ('username', 'cbiggles')]
- self.assertEqual(config, waited)
- def test_suite():
- return unittest.makeSuite(PyPIRCCommandTestCase)
- if __name__ == "__main__":
- run_unittest(test_suite())
|