test_upload_docs.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import os
  2. import zipfile
  3. import contextlib
  4. import pytest
  5. from setuptools.command.upload_docs import upload_docs
  6. from setuptools.dist import Distribution
  7. from .textwrap import DALS
  8. from . import contexts
  9. SETUP_PY = DALS(
  10. """
  11. from setuptools import setup
  12. setup(name='foo')
  13. """)
  14. @pytest.fixture
  15. def sample_project(tmpdir_cwd):
  16. # setup.py
  17. with open('setup.py', 'wt') as f:
  18. f.write(SETUP_PY)
  19. os.mkdir('build')
  20. # A test document.
  21. with open('build/index.html', 'w') as f:
  22. f.write("Hello world.")
  23. # An empty folder.
  24. os.mkdir('build/empty')
  25. @pytest.mark.usefixtures('sample_project')
  26. @pytest.mark.usefixtures('user_override')
  27. class TestUploadDocsTest:
  28. def test_create_zipfile(self):
  29. """
  30. Ensure zipfile creation handles common cases, including a folder
  31. containing an empty folder.
  32. """
  33. dist = Distribution()
  34. cmd = upload_docs(dist)
  35. cmd.target_dir = cmd.upload_dir = 'build'
  36. with contexts.tempdir() as tmp_dir:
  37. tmp_file = os.path.join(tmp_dir, 'foo.zip')
  38. zip_file = cmd.create_zipfile(tmp_file)
  39. assert zipfile.is_zipfile(tmp_file)
  40. with contextlib.closing(zipfile.ZipFile(tmp_file)) as zip_file:
  41. assert zip_file.namelist() == ['index.html']