| import os |
| import zipfile |
| import contextlib |
| |
| import pytest |
| |
| from setuptools.command.upload_docs import upload_docs |
| from setuptools.dist import Distribution |
| |
| from .textwrap import DALS |
| from . import contexts |
| |
| SETUP_PY = DALS( |
| """ |
| from setuptools import setup |
| |
| setup(name='foo') |
| """) |
| |
| |
| @pytest.fixture |
| def sample_project(tmpdir_cwd): |
| # setup.py |
| with open('setup.py', 'wt') as f: |
| f.write(SETUP_PY) |
| |
| os.mkdir('build') |
| |
| # A test document. |
| with open('build/index.html', 'w') as f: |
| f.write("Hello world.") |
| |
| # An empty folder. |
| os.mkdir('build/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 |