# -*- coding: utf-8 -*-
"""Collection of tests around common path and url shorthands."""
from __future__ import unicode_literals
import pytest
from cookiecutter.config import BUILTIN_ABBREVIATIONS
from cookiecutter.repository import expand_abbreviations
@pytest.mark.parametrize(
('template', 'abbreviations', 'expected_result'),
[
('foo', {'foo': 'bar'}, 'bar'),
('baz', {'foo': 'bar'}, 'baz'),
('xx:a', {'xx': '<{0}>'}, ''),
('gh:a', {'gh': '<{0}>'}, ''),
('xx:a', {'xx': '<>'}, '<>'),
(
'gh:pydanny/cookiecutter-django',
BUILTIN_ABBREVIATIONS,
'https://github.com/pydanny/cookiecutter-django.git',
),
(
'gl:pydanny/cookiecutter-django',
BUILTIN_ABBREVIATIONS,
'https://gitlab.com/pydanny/cookiecutter-django.git',
),
(
'bb:pydanny/cookiecutter-django',
BUILTIN_ABBREVIATIONS,
'https://bitbucket.org/pydanny/cookiecutter-django',
),
],
ids=(
'Simple expansion',
'Skip expansion (expansion not an abbreviation)',
'Expansion prefix',
'expansion_override_builtin',
'expansion_prefix_ignores_suffix',
'Correct expansion for builtin abbreviations (github)',
'Correct expansion for builtin abbreviations (gitlab)',
'Correct expansion for builtin abbreviations (bitbucket)',
),
)
def test_abbreviation_expansion(template, abbreviations, expected_result):
"""Verify abbreviation unpacking."""
expanded = expand_abbreviations(template, abbreviations)
assert expanded == expected_result
def test_abbreviation_expansion_prefix_not_0_in_braces():
"""Verify abbreviation unpacking raises error on incorrect index."""
with pytest.raises(IndexError):
expand_abbreviations('xx:a', {'xx': '{1}'})