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