Completed
Push — master ( ed4748...e07a2a )
by Andrey
16s queued 13s
created

test_generate_copy_without_render_extensions()   C

Complexity

Conditions 8

Size

Total Lines 77
Code Lines 50

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 50
dl 0
loc 77
rs 6.7696
c 0
b 0
f 0
cc 8
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
"""Verify correct work of `_copy_without_render` context option."""
2
import os
3
4
import pytest
5
6
from cookiecutter import generate
7
from cookiecutter import utils
8
9
10
@pytest.fixture
11
def remove_test_dir():
12
    """Fixture. Remove the folder that is created by the test."""
13
    yield
14
    if os.path.exists('test_copy_without_render'):
15
        utils.rmtree('test_copy_without_render')
16
17
18
@pytest.mark.usefixtures('clean_system', 'remove_test_dir')
19
def test_generate_copy_without_render_extensions():
20
    """Verify correct work of `_copy_without_render` context option.
21
22
    Some files/directories should be rendered during invocation,
23
    some just copied, without any modification.
24
    """
25
    # first run
26
    generate.generate_files(
27
        context={
28
            'cookiecutter': {
29
                'repo_name': 'test_copy_without_render',
30
                'render_test': 'I have been rendered!',
31
                '_copy_without_render': [
32
                    '*not-rendered',
33
                    'rendered/not_rendered.yml',
34
                    '*.txt',
35
                    '{{cookiecutter.repo_name}}-rendered/README.md',
36
                ],
37
            }
38
        },
39
        repo_dir='tests/test-generate-copy-without-render-override',
40
    )
41
42
    # second run with override flag to True
43
    generate.generate_files(
44
        context={
45
            'cookiecutter': {
46
                'repo_name': 'test_copy_without_render',
47
                'render_test': 'I have been rendered!',
48
                '_copy_without_render': [
49
                    '*not-rendered',
50
                    'rendered/not_rendered.yml',
51
                    '*.txt',
52
                    '{{cookiecutter.repo_name}}-rendered/README.md',
53
                ],
54
            }
55
        },
56
        overwrite_if_exists=True,
57
        repo_dir='tests/test-generate-copy-without-render',
58
    )
59
60
    dir_contents = os.listdir('test_copy_without_render')
61
62
    assert 'test_copy_without_render-not-rendered' in dir_contents
63
    assert 'test_copy_without_render-rendered' in dir_contents
64
65
    with open('test_copy_without_render/README.txt') as f:
66
        assert '{{cookiecutter.render_test}}' in f.read()
67
68
    with open('test_copy_without_render/README.rst') as f:
69
        assert 'I have been rendered!' in f.read()
70
71
    with open(
72
        'test_copy_without_render/test_copy_without_render-rendered/README.txt'
73
    ) as f:
74
        assert '{{cookiecutter.render_test}}' in f.read()
75
76
    with open(
77
        'test_copy_without_render/test_copy_without_render-rendered/README.rst'
78
    ) as f:
79
        assert 'I have been rendered' in f.read()
80
81
    with open(
82
        'test_copy_without_render/'
83
        'test_copy_without_render-not-rendered/'
84
        'README.rst'
85
    ) as f:
86
        assert '{{cookiecutter.render_test}}' in f.read()
87
88
    with open('test_copy_without_render/rendered/not_rendered.yml') as f:
89
        assert '{{cookiecutter.render_test}}' in f.read()
90
91
    with open(
92
        'test_copy_without_render/' 'test_copy_without_render-rendered/' 'README.md'
93
    ) as f:
94
        assert '{{cookiecutter.render_test}}' in f.read()
95