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