summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/tests')
-rw-r--r--Lib/distutils/tests/test_config.py103
-rw-r--r--Lib/distutils/tests/test_dist.py46
-rw-r--r--Lib/distutils/tests/test_upload.py34
3 files changed, 183 insertions, 0 deletions
diff --git a/Lib/distutils/tests/test_config.py b/Lib/distutils/tests/test_config.py
new file mode 100644
index 0000000..016ba4c
--- /dev/null
+++ b/Lib/distutils/tests/test_config.py
@@ -0,0 +1,103 @@
+"""Tests for distutils.pypirc.pypirc."""
+import sys
+import os
+import unittest
+
+from distutils.core import PyPIRCCommand
+from distutils.core import Distribution
+
+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
+"""
+
+class PyPIRCCommandTestCase(support.TempdirManager, unittest.TestCase):
+
+ def setUp(self):
+ """Patches the environment."""
+ if 'HOME' in os.environ:
+ 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
+
+ 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)
+
+ 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 = list(sorted(config.items()))
+ 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 = list(sorted(config.items()))
+ waited = [('password', 'secret'), ('realm', 'pypi'),
+ ('repository', 'http://pypi.python.org/pypi'),
+ ('server', 'server-login'), ('username', 'tarek')]
+ self.assertEquals(config, waited)
+
+def test_suite():
+ return unittest.makeSuite(PyPIRCCommandTestCase)
+
+if __name__ == "__main__":
+ unittest.main(defaultTest="test_suite")
diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py
index 91acf45..81459ac 100644
--- a/Lib/distutils/tests/test_dist.py
+++ b/Lib/distutils/tests/test_dist.py
@@ -55,6 +55,7 @@ class DistributionTestCase(unittest.TestCase):
self.assertEqual(d.get_command_packages(), ["distutils.command"])
def test_command_packages_cmdline(self):
+ from distutils.tests.test_dist import test_dist
sys.argv.extend(["--command-packages",
"foo.bar,distutils.tests",
"test_dist",
@@ -179,9 +180,54 @@ class MetadataTestCase(unittest.TestCase):
dist.metadata.write_pkg_file(sio)
return sio.getvalue()
+ def test_custom_pydistutils(self):
+ # fixes #2166
+ # make sure pydistutils.cfg is found
+ old = {}
+ for env in ('HOME', 'HOMEPATH', 'HOMEDRIVE'):
+ value = os.environ.get(env)
+ old[env] = value
+ if value is not None:
+ del os.environ[env]
+
+ if os.name == 'posix':
+ user_filename = ".pydistutils.cfg"
+ else:
+ user_filename = "pydistutils.cfg"
+
+ curdir = os.path.dirname(__file__)
+ user_filename = os.path.join(curdir, user_filename)
+ f = open(user_filename, 'w')
+ f.write('.')
+ f.close()
+
+ try:
+ dist = distutils.dist.Distribution()
+
+ # linux-style
+ if sys.platform in ('linux', 'darwin'):
+ os.environ['HOME'] = curdir
+ files = dist.find_config_files()
+ self.assert_(user_filename in files)
+
+ # win32-style
+ if sys.platform == 'win32':
+ # home drive should be found
+ os.environ['HOMEPATH'] = curdir
+ files = dist.find_config_files()
+ self.assert_(user_filename in files)
+ finally:
+ for key, value in old.items():
+ if value is None:
+ continue
+ os.environ[key] = value
+ os.remove(user_filename)
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(DistributionTestCase))
suite.addTest(unittest.makeSuite(MetadataTestCase))
return suite
+
+if __name__ == "__main__":
+ unittest.main(defaultTest="test_suite")
diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py
new file mode 100644
index 0000000..b05ab1f
--- /dev/null
+++ b/Lib/distutils/tests/test_upload.py
@@ -0,0 +1,34 @@
+"""Tests for distutils.command.upload."""
+import sys
+import os
+import unittest
+
+from distutils.command.upload import upload
+from distutils.core import Distribution
+
+from distutils.tests import support
+from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase
+
+class uploadTestCase(PyPIRCCommandTestCase):
+
+ def test_finalize_options(self):
+
+ # new format
+ f = open(self.rc, 'w')
+ f.write(PYPIRC)
+ f.close()
+
+ dist = Distribution()
+ cmd = upload(dist)
+ cmd.finalize_options()
+ for attr, waited in (('username', 'me'), ('password', 'secret'),
+ ('realm', 'pypi'),
+ ('repository', 'http://pypi.python.org/pypi')):
+ self.assertEquals(getattr(cmd, attr), waited)
+
+
+def test_suite():
+ return unittest.makeSuite(uploadTestCase)
+
+if __name__ == "__main__":
+ unittest.main(defaultTest="test_suite")