summaryrefslogtreecommitdiff
path: root/setuptools/tests/test_upload_docs.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/tests/test_upload_docs.py')
-rw-r--r--setuptools/tests/test_upload_docs.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/setuptools/tests/test_upload_docs.py b/setuptools/tests/test_upload_docs.py
new file mode 100644
index 00000000..55978aad
--- /dev/null
+++ b/setuptools/tests/test_upload_docs.py
@@ -0,0 +1,64 @@
+import os
+import zipfile
+import contextlib
+
+import pytest
+from jaraco import path
+
+from setuptools.command.upload_docs import upload_docs
+from setuptools.dist import Distribution
+
+from .textwrap import DALS
+from . import contexts
+
+
+@pytest.fixture
+def sample_project(tmpdir_cwd):
+ path.build({
+ 'setup.py': DALS("""
+ from setuptools import setup
+
+ setup(name='foo')
+ """),
+ 'build': {
+ 'index.html': 'Hello world.',
+ 'empty': {},
+ }
+ })
+
+
+@pytest.mark.usefixtures('sample_project')
+@pytest.mark.usefixtures('user_override')
+class TestUploadDocsTest:
+ def test_create_zipfile(self):
+ """
+ Ensure zipfile creation handles common cases, including a folder
+ containing an empty folder.
+ """
+
+ dist = Distribution()
+
+ cmd = upload_docs(dist)
+ cmd.target_dir = cmd.upload_dir = 'build'
+ with contexts.tempdir() as tmp_dir:
+ tmp_file = os.path.join(tmp_dir, 'foo.zip')
+ zip_file = cmd.create_zipfile(tmp_file)
+
+ assert zipfile.is_zipfile(tmp_file)
+
+ with contextlib.closing(zipfile.ZipFile(tmp_file)) as zip_file:
+ assert zip_file.namelist() == ['index.html']
+
+ def test_build_multipart(self):
+ data = dict(
+ a="foo",
+ b="bar",
+ file=('file.txt', b'content'),
+ )
+ body, content_type = upload_docs._build_multipart(data)
+ assert 'form-data' in content_type
+ assert "b'" not in content_type
+ assert 'b"' not in content_type
+ assert isinstance(body, bytes)
+ assert b'foo' in body
+ assert b'content' in body