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

tests.test_generate_copy_without_render_override   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
eloc 60
dl 0
loc 95
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A remove_test_dir() 0 6 2
C test_generate_copy_without_render_extensions() 0 77 8
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