Completed
Pull Request — master (#1030)
by
unknown
50s
created

overwrite_if_exists()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
c 2
b 0
f 0
dl 0
loc 3
rs 10
1
# -*- coding: utf-8 -*-
2
3
"""
4
test_generate_copy_without_render
5
---------------------------------
6
"""
7
8
from __future__ import unicode_literals
9
import os
10
import pytest
11
12
from cookiecutter import generate
13
from cookiecutter import utils
14
from cookiecutter.cli import OutputDirExistsException
15
16
17
@pytest.fixture(scope='function')
18
def remove_test_dir(request):
19
    """
20
    Remove the folder that is created by the test.
21
    """
22
    def fin_remove_test_dir():
23
        if os.path.exists('test_copy_without_render'):
24
            utils.rmtree('test_copy_without_render')
25
    request.addfinalizer(fin_remove_test_dir)
26
27
28
@pytest.fixture(params=[True, False])
29
def overwrite_if_exists(request):
30
    return request.param
31
32
33
@pytest.mark.usefixtures('clean_system', 'remove_test_dir')
34
def test_generate_copy_without_render_extensions(overwrite_if_exists):
35
36
    context = {
37
        'cookiecutter': {
38
            'repo_name': 'test_copy_without_render',
39
            'render_test': 'I have been rendered!',
40
            '_copy_without_render': [
41
                '*not-rendered',
42
                'rendered/not_rendered.yml',
43
                '*.txt',
44
            ]
45
        }
46
    }
47
48
    generate.generate_files(
49
        context=context,
50
        repo_dir='tests/test-generate-copy-without-render'
51
    )
52
53
    dir_contents = os.listdir('test_copy_without_render')
54
55
    assert '{{cookiecutter.repo_name}}-not-rendered' in dir_contents
56
    assert 'test_copy_without_render-rendered' in dir_contents
57
58
    with open('test_copy_without_render/README.txt') as f:
59
        assert '{{cookiecutter.render_test}}' in f.read()
60
61
    with open('test_copy_without_render/README.rst') as f:
62
        assert 'I have been rendered!' in f.read()
63
64
    with open('test_copy_without_render/'
65
              'test_copy_without_render-rendered/'
66
              'README.txt') as f:
67
        assert '{{cookiecutter.render_test}}' in f.read()
68
69
    with open('test_copy_without_render/'
70
              'test_copy_without_render-rendered/'
71
              'README.rst') as f:
72
        assert 'I have been rendered' in f.read()
73
74
    with open('test_copy_without_render/'
75
              '{{cookiecutter.repo_name}}-not-rendered/'
76
              'README.rst') as f:
77
        assert '{{cookiecutter.render_test}}' in f.read()
78
79
    with open('test_copy_without_render/rendered/not_rendered.yml') as f:
80
        assert '{{cookiecutter.render_test}}' in f.read()
81
82
    if overwrite_if_exists:
83
84
        # This should in all cases:
85
        generate.generate_files(
86
            context=context,
87
            repo_dir='tests/test-generate-copy-without-render',
88
            overwrite_if_exists=overwrite_if_exists
89
        )
90
91
    else:
92
93
        # This should fail, with OutputDirExistsException:
94
        try:
95
            generate.generate_files(
96
                context=context,
97
                repo_dir='tests/test-generate-copy-without-render',
98
                overwrite_if_exists=overwrite_if_exists
99
            )
100
        except OutputDirExistsException:
101
            pass
102