test_bdist_egg.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """develop tests"""
  2. import os
  3. import re
  4. import zipfile
  5. import pytest
  6. from setuptools.dist import Distribution
  7. from . import contexts
  8. SETUP_PY = """\
  9. from setuptools import setup
  10. setup(py_modules=['hi'])
  11. """
  12. @pytest.fixture
  13. def setup_context(tmpdir):
  14. with (tmpdir / 'setup.py').open('w') as f:
  15. f.write(SETUP_PY)
  16. with (tmpdir / 'hi.py').open('w') as f:
  17. f.write('1\n')
  18. with tmpdir.as_cwd():
  19. yield tmpdir
  20. class Test:
  21. @pytest.mark.usefixtures("user_override")
  22. @pytest.mark.usefixtures("setup_context")
  23. def test_bdist_egg(self):
  24. dist = Distribution(
  25. dict(
  26. script_name='setup.py',
  27. script_args=['bdist_egg'],
  28. name='foo',
  29. py_modules=['hi'],
  30. )
  31. )
  32. os.makedirs(os.path.join('build', 'src'))
  33. with contexts.quiet():
  34. dist.parse_command_line()
  35. dist.run_commands()
  36. # let's see if we got our egg link at the right place
  37. [content] = os.listdir('dist')
  38. assert re.match(r'foo-0.0.0-py[23].\d+.egg$', content)
  39. @pytest.mark.xfail(
  40. os.environ.get('PYTHONDONTWRITEBYTECODE', False),
  41. reason="Byte code disabled",
  42. )
  43. @pytest.mark.usefixtures("user_override")
  44. @pytest.mark.usefixtures("setup_context")
  45. def test_exclude_source_files(self):
  46. dist = Distribution(
  47. dict(
  48. script_name='setup.py',
  49. script_args=['bdist_egg', '--exclude-source-files'],
  50. py_modules=['hi'],
  51. )
  52. )
  53. with contexts.quiet():
  54. dist.parse_command_line()
  55. dist.run_commands()
  56. [dist_name] = os.listdir('dist')
  57. dist_filename = os.path.join('dist', dist_name)
  58. zip = zipfile.ZipFile(dist_filename)
  59. names = list(zi.filename for zi in zip.filelist)
  60. assert 'hi.pyc' in names
  61. assert 'hi.py' not in names