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