/Lib/distutils/tests/test_config.py

http://unladen-swallow.googlecode.com/ · Python · 134 lines · 101 code · 25 blank · 8 comment · 7 complexity · cbc6990198e08975bd5cf7b51477d833 MD5 · raw file

  1. """Tests for distutils.pypirc.pypirc."""
  2. import sys
  3. import os
  4. import unittest
  5. from distutils.core import PyPIRCCommand
  6. from distutils.core import Distribution
  7. from distutils.log import set_threshold
  8. from distutils.log import WARN
  9. from distutils.tests import support
  10. PYPIRC = """\
  11. [distutils]
  12. index-servers =
  13. server1
  14. server2
  15. [server1]
  16. username:me
  17. password:secret
  18. [server2]
  19. username:meagain
  20. password: secret
  21. realm:acme
  22. repository:http://another.pypi/
  23. """
  24. PYPIRC_OLD = """\
  25. [server-login]
  26. username:tarek
  27. password:secret
  28. """
  29. WANTED = """\
  30. [distutils]
  31. index-servers =
  32. pypi
  33. [pypi]
  34. username:tarek
  35. password:xxx
  36. """
  37. class PyPIRCCommandTestCase(support.TempdirManager, unittest.TestCase):
  38. def setUp(self):
  39. """Patches the environment."""
  40. super(PyPIRCCommandTestCase, self).setUp()
  41. if os.environ.has_key('HOME'):
  42. self._old_home = os.environ['HOME']
  43. else:
  44. self._old_home = None
  45. tempdir = self.mkdtemp()
  46. os.environ['HOME'] = tempdir
  47. self.rc = os.path.join(tempdir, '.pypirc')
  48. self.dist = Distribution()
  49. class command(PyPIRCCommand):
  50. def __init__(self, dist):
  51. PyPIRCCommand.__init__(self, dist)
  52. def initialize_options(self):
  53. pass
  54. finalize_options = initialize_options
  55. self._cmd = command
  56. self.old_threshold = set_threshold(WARN)
  57. def tearDown(self):
  58. """Removes the patch."""
  59. if self._old_home is None:
  60. del os.environ['HOME']
  61. else:
  62. os.environ['HOME'] = self._old_home
  63. set_threshold(self.old_threshold)
  64. super(PyPIRCCommandTestCase, self).tearDown()
  65. def test_server_registration(self):
  66. # This test makes sure PyPIRCCommand knows how to:
  67. # 1. handle several sections in .pypirc
  68. # 2. handle the old format
  69. # new format
  70. f = open(self.rc, 'w')
  71. try:
  72. f.write(PYPIRC)
  73. finally:
  74. f.close()
  75. cmd = self._cmd(self.dist)
  76. config = cmd._read_pypirc()
  77. config = config.items()
  78. config.sort()
  79. waited = [('password', 'secret'), ('realm', 'pypi'),
  80. ('repository', 'http://pypi.python.org/pypi'),
  81. ('server', 'server1'), ('username', 'me')]
  82. self.assertEquals(config, waited)
  83. # old format
  84. f = open(self.rc, 'w')
  85. f.write(PYPIRC_OLD)
  86. f.close()
  87. config = cmd._read_pypirc()
  88. config = config.items()
  89. config.sort()
  90. waited = [('password', 'secret'), ('realm', 'pypi'),
  91. ('repository', 'http://pypi.python.org/pypi'),
  92. ('server', 'server-login'), ('username', 'tarek')]
  93. self.assertEquals(config, waited)
  94. def test_server_empty_registration(self):
  95. cmd = self._cmd(self.dist)
  96. rc = cmd._get_rc_file()
  97. self.assert_(not os.path.exists(rc))
  98. cmd._store_pypirc('tarek', 'xxx')
  99. self.assert_(os.path.exists(rc))
  100. content = open(rc).read()
  101. self.assertEquals(content, WANTED)
  102. def test_suite():
  103. return unittest.makeSuite(PyPIRCCommandTestCase)
  104. if __name__ == "__main__":
  105. unittest.main(defaultTest="test_suite")