Completed
Push — master ( 1edd10...57e203 )
by
unknown
01:17
created

test_repository_url_with_no_context_file()   A

Complexity

Conditions 3

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
c 2
b 0
f 0
dl 0
loc 17
rs 9.4285
1
# -*- coding: utf-8 -*-
2
import os
3
4
import pytest
5
6
from cookiecutter import repository, exceptions
7
8
9
@pytest.fixture
10
def template_url():
11
    """URL to example Cookiecutter template on GitHub.
12
13
    Note: when used, git clone is mocked.
14
    """
15
    return 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git'
16
17
18
def test_repository_url_should_clone(
19
        mocker, template_url, user_config_data):
20
    """`clone()` should be called with correct args when
21
    `determine_repo_dir()` is passed a repository template url.
22
    """
23
24
    mock_clone = mocker.patch(
25
        'cookiecutter.repository.clone',
26
        return_value='tests/fake-repo-tmpl',
27
        autospec=True
28
    )
29
30
    project_dir = repository.determine_repo_dir(
31
        template_url,
32
        abbreviations={},
33
        clone_to_dir=user_config_data['cookiecutters_dir'],
34
        checkout=None,
35
        no_input=True
36
    )
37
38
    mock_clone.assert_called_once_with(
39
        repo_url=template_url,
40
        checkout=None,
41
        clone_to_dir=user_config_data['cookiecutters_dir'],
42
        no_input=True
43
    )
44
45
    assert os.path.isdir(project_dir)
46
    assert 'tests/fake-repo-tmpl' == project_dir
47
48
49
def test_repository_url_with_no_context_file(mocker, template_url):
50
    mocker.patch(
51
        'cookiecutter.repository.clone',
52
        return_value='tests/fake-repo-bad',
53
        autospec=True
54
    )
55
56
    with pytest.raises(exceptions.RepositoryNotFound) as err:
57
        repository.determine_repo_dir(
58
            template_url,
59
            abbreviations={},
60
            clone_to_dir=None,
61
            checkout=None,
62
            no_input=True
63
        )
64
65
    assert str(err.value) == (
66
        'The repository tests/fake-repo-bad could not be located or does not '
67
        'contain a "cookiecutter.json" file.'
68
    )
69