Completed
Pull Request — master (#618)
by
unknown
55s
created

tests.remove_additional_dirs()   A

Complexity

Conditions 4

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 4
dl 0
loc 11
rs 9.2

1 Method

Rating   Name   Duplication   Size   Complexity  
A tests.fin_remove_additional_dirs() 0 5 3
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
"""
5
test_cookiecutters
6
------------------
7
8
Tests formerly known from a unittest residing in test_examples.py named
9
TestPyPackage.test_cookiecutter_pypackage
10
TestJQuery.test_cookiecutter_jquery
11
"""
12
13
from __future__ import unicode_literals
14
import os
15
import sys
16
import subprocess
17
import pytest
18
19
from cookiecutter import utils
20
from tests.skipif_markers import skipif_travis, skipif_no_network
21
22
23
@pytest.fixture(scope='function')
24
def remove_additional_dirs(request):
25
    """
26
    Remove special directories which are creating during the tests.
27
    """
28
    def fin_remove_additional_dirs():
29
        for path in ('cookiecutter-pypackage', 'cookiecutter-jquery',
30
                     'python_boilerplate', 'boilerplate'):
31
            if os.path.isdir(path):
32
                utils.rmtree(path)
33
    request.addfinalizer(fin_remove_additional_dirs)
34
35
36
def bake_data():
37
    pypackage_data = (
38
        'git clone https://github.com/audreyr/cookiecutter-pypackage.git',
39
        '{0} -m cookiecutter.cli --no-input cookiecutter-pypackage/'.format(
40
            sys.executable),
41
        'cookiecutter-pypackage',
42
        'python_boilerplate/README.rst'
43
    )
44
45
    jquery_data = (
46
        'git clone https://github.com/audreyr/cookiecutter-jquery.git',
47
        '{0} -m cookiecutter.cli --no-input cookiecutter-jquery/'.format(
48
            sys.executable),
49
        'cookiecutter-jquery',
50
        'boilerplate/README.md'
51
    )
52
53
    yield pypackage_data
54
    yield jquery_data
55
56
57
@skipif_travis
58
@skipif_no_network
59
@pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
60
@pytest.mark.parametrize('git_cmd, bake_cmd, out_dir, readme', bake_data())
61
def test_cookiecutters(git_cmd, bake_cmd, out_dir, readme):
62
    """
63
    Tests that the given cookiecutters work as expected.
64
    """
65
66
    proc = subprocess.Popen(git_cmd, stdin=subprocess.PIPE, shell=True)
67
    proc.wait()
68
69
    proc = subprocess.Popen(bake_cmd, stdin=subprocess.PIPE, shell=True)
70
    proc.wait()
71
72
    assert os.path.isdir(out_dir)
73
    assert os.path.isfile(readme)
74