| """Tests for distutils.pypirc.pypirc.""" |
| import sys |
| 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 |
| |
| PYPIRC = """\ |
| [distutils] |
| |
| index-servers = |
| server1 |
| server2 |
| |
| [server1] |
| username:me |
| password:secret |
| |
| [server2] |
| username:meagain |
| password: secret |
| realm:acme |
| repository:http://another.pypi/ |
| """ |
| |
| PYPIRC_OLD = """\ |
| [server-login] |
| username:tarek |
| password:secret |
| """ |
| |
| WANTED = """\ |
| [distutils] |
| index-servers = |
| pypi |
| |
| [pypi] |
| username:tarek |
| password:xxx |
| """ |
| |
| |
| class PyPIRCCommandTestCase(support.TempdirManager, unittest.TestCase): |
| |
| def setUp(self): |
| """Patches the environment.""" |
| if os.environ.has_key('HOME'): |
| self._old_home = os.environ['HOME'] |
| else: |
| self._old_home = None |
| curdir = os.path.dirname(__file__) |
| os.environ['HOME'] = curdir |
| self.rc = os.path.join(curdir, '.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.""" |
| if self._old_home is None: |
| del os.environ['HOME'] |
| else: |
| os.environ['HOME'] = self._old_home |
| if os.path.exists(self.rc): |
| os.remove(self.rc) |
| set_threshold(self.old_threshold) |
| |
| 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 |
| f = open(self.rc, 'w') |
| try: |
| f.write(PYPIRC) |
| finally: |
| f.close() |
| |
| cmd = self._cmd(self.dist) |
| config = cmd._read_pypirc() |
| |
| config = config.items() |
| config.sort() |
| waited = [('password', 'secret'), ('realm', 'pypi'), |
| ('repository', 'http://pypi.python.org/pypi'), |
| ('server', 'server1'), ('username', 'me')] |
| self.assertEquals(config, waited) |
| |
| # old format |
| f = open(self.rc, 'w') |
| f.write(PYPIRC_OLD) |
| f.close() |
| |
| config = cmd._read_pypirc() |
| config = config.items() |
| config.sort() |
| waited = [('password', 'secret'), ('realm', 'pypi'), |
| ('repository', 'http://pypi.python.org/pypi'), |
| ('server', 'server-login'), ('username', 'tarek')] |
| self.assertEquals(config, waited) |
| |
| def test_server_empty_registration(self): |
| |
| cmd = self._cmd(self.dist) |
| rc = cmd._get_rc_file() |
| self.assert_(not os.path.exists(rc)) |
| |
| cmd._store_pypirc('tarek', 'xxx') |
| |
| self.assert_(os.path.exists(rc)) |
| content = open(rc).read() |
| |
| self.assertEquals(content, WANTED) |
| |
| |
| def test_suite(): |
| return unittest.makeSuite(PyPIRCCommandTestCase) |
| |
| if __name__ == "__main__": |
| unittest.main(defaultTest="test_suite") |