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