|
"""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): |
|
|
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
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): |
|
|
|
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()) |
|
|