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

overwrite_if_exists()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

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