NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

test_upload.py (3401B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_upload.py
      2 import sys
      3 import os
      4 import unittest
      5 from distutils.command import upload as upload_mod
      6 from distutils.command.upload import upload
      7 from distutils.core import Distribution
      8 from distutils.tests import support
      9 from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase
     10 PYPIRC_LONG_PASSWORD = '[distutils]\n\nindex-servers =\n    server1\n    server2\n\n[server1]\nusername:me\npassword:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n\n[server2]\nusername:meagain\npassword: secret\nrealm:acme\nrepository:http://another.pypi/\n'
     11 PYPIRC_NOPASSWORD = '[distutils]\n\nindex-servers =\n    server1\n\n[server1]\nusername:me\n'
     12 
     13 class FakeOpen(object):
     14 
     15     def __init__(self, url):
     16         self.url = url
     17         if not isinstance(url, str):
     18             self.req = url
     19         else:
     20             self.req = None
     21         self.msg = 'OK'
     22 
     23     def getcode(self):
     24         return 200
     25 
     26 
     27 class uploadTestCase(PyPIRCCommandTestCase):
     28 
     29     def setUp(self):
     30         super(uploadTestCase, self).setUp()
     31         self.old_open = upload_mod.urlopen
     32         upload_mod.urlopen = self._urlopen
     33         self.last_open = None
     34 
     35     def tearDown(self):
     36         upload_mod.urlopen = self.old_open
     37         super(uploadTestCase, self).tearDown()
     38 
     39     def _urlopen(self, url):
     40         self.last_open = FakeOpen(url)
     41         return self.last_open
     42 
     43     def test_finalize_options(self):
     44         self.write_file(self.rc, PYPIRC)
     45         dist = Distribution()
     46         cmd = upload(dist)
     47         cmd.finalize_options()
     48         for attr, waited in (('username', 'me'),
     49          ('password', 'secret'),
     50          ('realm', 'pypi'),
     51          ('repository', 'http://pypi.python.org/pypi')):
     52             self.assertEqual(getattr(cmd, attr), waited)
     53 
     54     def test_saved_password(self):
     55         self.write_file(self.rc, PYPIRC_NOPASSWORD)
     56         dist = Distribution()
     57         cmd = upload(dist)
     58         cmd.finalize_options()
     59         self.assertEqual(cmd.password, None)
     60         dist.password = 'xxx'
     61         cmd = upload(dist)
     62         cmd.finalize_options()
     63         self.assertEqual(cmd.password, 'xxx')
     64 
     65     def test_upload(self):
     66         tmp = self.mkdtemp()
     67         path = os.path.join(tmp, 'xxx')
     68         self.write_file(path)
     69         command, pyversion, filename = 'xxx', '2.6', path
     70         dist_files = [(command, pyversion, filename)]
     71         self.write_file(self.rc, PYPIRC_LONG_PASSWORD)
     72         pkg_dir, dist = self.create_dist(dist_files=dist_files, author=u'd\xc3\xa9d\xc3\xa9')
     73         cmd = upload(dist)
     74         cmd.ensure_finalized()
     75         cmd.run()
     76         self.assertIn('d\xc3\xa9d\xc3\xa9', self.last_open.req.data)
     77         headers = dict(self.last_open.req.headers)
     78         self.assertEqual(headers['Content-length'], '2085')
     79         self.assertTrue(headers['Content-type'].startswith('multipart/form-data'))
     80         self.assertEqual(self.last_open.req.get_method(), 'POST')
     81         self.assertEqual(self.last_open.req.get_full_url(), 'http://pypi.python.org/pypi')
     82         self.assertTrue('xxx' in self.last_open.req.data)
     83         auth = self.last_open.req.headers['Authorization']
     84         self.assertFalse('\n' in auth)
     85 
     86 
     87 def test_suite():
     88     return unittest.makeSuite(uploadTestCase)
     89 
     90 
     91 if __name__ == '__main__':
     92     unittest.main(defaultTest='test_suite')