aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests
diff options
context:
space:
mode:
authorPaul Ganssle <paul@ganssle.io>2018-10-28 14:19:04 -0400
committerPaul Ganssle <paul@ganssle.io>2018-11-07 17:38:41 -0500
commitb7a6d8ad1b20e94de0b0bdebd1a6e9c8fd51695a (patch)
tree25a748f4997f94265538c60c6bce2abf9ceb0b40 /setuptools/tests
parent83fb2385518f7cf7885144f12db80b9364e67c7f (diff)
downloadexternal_python_setuptools-b7a6d8ad1b20e94de0b0bdebd1a6e9c8fd51695a.tar.gz
external_python_setuptools-b7a6d8ad1b20e94de0b0bdebd1a6e9c8fd51695a.tar.bz2
external_python_setuptools-b7a6d8ad1b20e94de0b0bdebd1a6e9c8fd51695a.zip
Add failing test for issue #1381
Diffstat (limited to 'setuptools/tests')
-rw-r--r--setuptools/tests/test_upload.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/setuptools/tests/test_upload.py b/setuptools/tests/test_upload.py
index 95a8d16b..5b8e267c 100644
--- a/setuptools/tests/test_upload.py
+++ b/setuptools/tests/test_upload.py
@@ -1,13 +1,72 @@
import mock
+import os
+import re
+
from distutils import log
+from distutils.version import StrictVersion
import pytest
+import six
from setuptools.command.upload import upload
from setuptools.dist import Distribution
+def _parse_upload_body(body):
+ boundary = u'\r\n----------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
+ entries = []
+ name_re = re.compile(u'^Content-Disposition: form-data; name="([^\"]+)"')
+
+ for entry in body.split(boundary):
+ pair = entry.split(u'\r\n\r\n')
+ if not len(pair) == 2:
+ continue
+
+ key, value = map(six.text_type.strip, pair)
+ m = name_re.match(key)
+ if m is not None:
+ key = m.group(1)
+
+ entries.append((key, value))
+
+ return entries
+
+
class TestUploadTest:
+ @pytest.mark.xfail(reason='Issue #1381')
+ @mock.patch('setuptools.command.upload.urlopen')
+ def test_upload_metadata(self, patch, tmpdir):
+ dist = Distribution()
+ dist.metadata.metadata_version = StrictVersion('2.1')
+
+ content = os.path.join(str(tmpdir), "test_upload_metadata_content")
+
+ with open(content, 'w') as f:
+ f.write("Some content")
+
+ dist.dist_files = [('xxx', '3.7', content)]
+
+ patch.return_value = mock.Mock()
+ patch.return_value.getcode.return_value = 200
+
+ cmd = upload(dist)
+ cmd.announce = mock.Mock()
+ cmd.username = 'user'
+ cmd.password = 'hunter2'
+ cmd.ensure_finalized()
+ cmd.run()
+
+ # Make sure we did the upload
+ patch.assert_called_once()
+
+ # Make sure the metadata version is correct in the headers
+ request = patch.call_args_list[0][0][0]
+ body = request.data.decode('utf-8')
+
+ entries = dict(_parse_upload_body(body))
+ assert entries['metadata_version'] == '2.1'
+
+
def test_warns_deprecation(self):
dist = Distribution()
dist.dist_files = [(mock.Mock(), mock.Mock(), mock.Mock())]