Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 1 | """Tests for distutils.pypirc.pypirc.""" |
| 2 | import sys |
| 3 | import os |
| 4 | import unittest |
Tarek Ziadé | 1369900 | 2009-02-14 14:10:23 +0000 | [diff] [blame] | 5 | import tempfile |
| 6 | import shutil |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 7 | |
| 8 | from distutils.core import PyPIRCCommand |
| 9 | from distutils.core import Distribution |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 10 | from distutils.log import set_threshold |
| 11 | from distutils.log import WARN |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 12 | |
| 13 | from distutils.tests import support |
Éric Araujo | 54274ad | 2011-02-03 00:12:18 +0000 | [diff] [blame] | 14 | from test.test_support import run_unittest |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 15 | |
| 16 | PYPIRC = """\ |
| 17 | [distutils] |
| 18 | |
| 19 | index-servers = |
| 20 | server1 |
| 21 | server2 |
| 22 | |
| 23 | [server1] |
| 24 | username:me |
| 25 | password:secret |
| 26 | |
| 27 | [server2] |
| 28 | username:meagain |
| 29 | password: secret |
| 30 | realm:acme |
| 31 | repository:http://another.pypi/ |
| 32 | """ |
| 33 | |
| 34 | PYPIRC_OLD = """\ |
| 35 | [server-login] |
| 36 | username:tarek |
| 37 | password:secret |
| 38 | """ |
| 39 | |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 40 | WANTED = """\ |
| 41 | [distutils] |
| 42 | index-servers = |
| 43 | pypi |
| 44 | |
| 45 | [pypi] |
| 46 | username:tarek |
| 47 | password:xxx |
| 48 | """ |
| 49 | |
| 50 | |
Tarek Ziadé | 1a1158f | 2009-03-31 20:56:11 +0000 | [diff] [blame] | 51 | class PyPIRCCommandTestCase(support.TempdirManager, |
| 52 | support.LoggingSilencer, |
Tarek Ziadé | 450ca11 | 2009-05-10 12:17:30 +0000 | [diff] [blame] | 53 | support.EnvironGuard, |
Tarek Ziadé | 1a1158f | 2009-03-31 20:56:11 +0000 | [diff] [blame] | 54 | unittest.TestCase): |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 55 | |
| 56 | def setUp(self): |
| 57 | """Patches the environment.""" |
Tarek Ziadé | e3bc0ef | 2009-02-25 22:29:27 +0000 | [diff] [blame] | 58 | super(PyPIRCCommandTestCase, self).setUp() |
Tarek Ziadé | 1369900 | 2009-02-14 14:10:23 +0000 | [diff] [blame] | 59 | self.tmp_dir = self.mkdtemp() |
Tarek Ziadé | 2b06d42 | 2009-10-18 09:28:26 +0000 | [diff] [blame] | 60 | os.environ['HOME'] = self.tmp_dir |
Tarek Ziadé | 1369900 | 2009-02-14 14:10:23 +0000 | [diff] [blame] | 61 | self.rc = os.path.join(self.tmp_dir, '.pypirc') |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 62 | self.dist = Distribution() |
| 63 | |
| 64 | class command(PyPIRCCommand): |
| 65 | def __init__(self, dist): |
| 66 | PyPIRCCommand.__init__(self, dist) |
| 67 | def initialize_options(self): |
| 68 | pass |
| 69 | finalize_options = initialize_options |
| 70 | |
| 71 | self._cmd = command |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 72 | self.old_threshold = set_threshold(WARN) |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 73 | |
| 74 | def tearDown(self): |
| 75 | """Removes the patch.""" |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 76 | set_threshold(self.old_threshold) |
Tarek Ziadé | e3bc0ef | 2009-02-25 22:29:27 +0000 | [diff] [blame] | 77 | super(PyPIRCCommandTestCase, self).tearDown() |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 78 | |
| 79 | def test_server_registration(self): |
| 80 | # This test makes sure PyPIRCCommand knows how to: |
| 81 | # 1. handle several sections in .pypirc |
| 82 | # 2. handle the old format |
| 83 | |
| 84 | # new format |
Tarek Ziadé | 450ca11 | 2009-05-10 12:17:30 +0000 | [diff] [blame] | 85 | self.write_file(self.rc, PYPIRC) |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 86 | cmd = self._cmd(self.dist) |
| 87 | config = cmd._read_pypirc() |
| 88 | |
| 89 | config = config.items() |
| 90 | config.sort() |
| 91 | waited = [('password', 'secret'), ('realm', 'pypi'), |
Donald Stufft | 692497a | 2016-08-03 18:58:12 -0400 | [diff] [blame] | 92 | ('repository', 'https://upload.pypi.org/legacy/'), |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 93 | ('server', 'server1'), ('username', 'me')] |
Ezio Melotti | 2623a37 | 2010-11-21 13:34:58 +0000 | [diff] [blame] | 94 | self.assertEqual(config, waited) |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 95 | |
| 96 | # old format |
Tarek Ziadé | 450ca11 | 2009-05-10 12:17:30 +0000 | [diff] [blame] | 97 | self.write_file(self.rc, PYPIRC_OLD) |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 98 | config = cmd._read_pypirc() |
| 99 | config = config.items() |
| 100 | config.sort() |
| 101 | waited = [('password', 'secret'), ('realm', 'pypi'), |
Donald Stufft | 692497a | 2016-08-03 18:58:12 -0400 | [diff] [blame] | 102 | ('repository', 'https://upload.pypi.org/legacy/'), |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 103 | ('server', 'server-login'), ('username', 'tarek')] |
Ezio Melotti | 2623a37 | 2010-11-21 13:34:58 +0000 | [diff] [blame] | 104 | self.assertEqual(config, waited) |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 105 | |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 106 | def test_server_empty_registration(self): |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 107 | cmd = self._cmd(self.dist) |
| 108 | rc = cmd._get_rc_file() |
Serhiy Storchaka | 25a23ef | 2013-11-17 00:29:27 +0200 | [diff] [blame] | 109 | self.assertFalse(os.path.exists(rc)) |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 110 | cmd._store_pypirc('tarek', 'xxx') |
Benjamin Peterson | 5c8da86 | 2009-06-30 22:57:08 +0000 | [diff] [blame] | 111 | self.assertTrue(os.path.exists(rc)) |
Éric Araujo | d1feff7 | 2010-11-06 04:06:18 +0000 | [diff] [blame] | 112 | f = open(rc) |
| 113 | try: |
| 114 | content = f.read() |
Ezio Melotti | 2623a37 | 2010-11-21 13:34:58 +0000 | [diff] [blame] | 115 | self.assertEqual(content, WANTED) |
Éric Araujo | d1feff7 | 2010-11-06 04:06:18 +0000 | [diff] [blame] | 116 | finally: |
| 117 | f.close() |
Tarek Ziadé | e4c75bb | 2008-12-24 19:10:05 +0000 | [diff] [blame] | 118 | |
Andrew M. Kuchling | aac5c86 | 2008-05-11 14:00:00 +0000 | [diff] [blame] | 119 | def test_suite(): |
| 120 | return unittest.makeSuite(PyPIRCCommandTestCase) |
| 121 | |
| 122 | if __name__ == "__main__": |
Éric Araujo | 54274ad | 2011-02-03 00:12:18 +0000 | [diff] [blame] | 123 | run_unittest(test_suite()) |