<s> """<STR_LIT>""" <EOL> from __future__ import unicode_literals <EOL> import pytest <EOL> import os <EOL> import re <EOL> from collections import OrderedDict <EOL> from cookiecutter import generate <EOL> from cookiecutter . exceptions import ContextDecodingException <EOL> def context_data ( ) : <EOL> context = ( <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> { <EOL> '<STR_LIT:test>' : { '<STR_LIT:1>' : <NUM_LIT:2> , '<STR_LIT>' : '<STR_LIT>' } <EOL> } <EOL> ) <EOL> context_with_default = ( <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT:1>' : <NUM_LIT:3> } <EOL> } , <EOL> { <EOL> '<STR_LIT:test>' : { '<STR_LIT:1>' : <NUM_LIT:3> , '<STR_LIT>' : '<STR_LIT>' } <EOL> } <EOL> ) <EOL> context_with_extra = ( <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT:1>' : <NUM_LIT:4> } , <EOL> } , <EOL> { <EOL> '<STR_LIT:test>' : { '<STR_LIT:1>' : <NUM_LIT:4> , '<STR_LIT>' : '<STR_LIT>' } <EOL> } <EOL> ) <EOL> context_with_default_and_extra = ( <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { '<STR_LIT:1>' : <NUM_LIT:3> } , <EOL> '<STR_LIT>' : { '<STR_LIT:1>' : <NUM_LIT:5> } , <EOL> } , <EOL> { <EOL> '<STR_LIT:test>' : { '<STR_LIT:1>' : <NUM_LIT:5> , '<STR_LIT>' : '<STR_LIT>' } <EOL> } <EOL> ) <EOL> yield context <EOL> yield context_with_default <EOL> yield context_with_extra <EOL> yield context_with_default_and_extra <EOL> @ pytest . mark . usefixtures ( '<STR_LIT>' ) <EOL> @ pytest . mark . parametrize ( '<STR_LIT>' , context_data ( ) ) <EOL> def test_generate_context ( input_params , expected_context ) : <EOL> """<STR_LIT>""" <EOL> assert generate . generate_context ( ** input_params ) == expected_context <EOL> @ pytest . mark . usefixtures ( '<STR_LIT>' ) <EOL> def test_generate_context_with_json_decoding_error ( ) : <EOL> with pytest . raises ( ContextDecodingException ) as excinfo : <EOL> generate . generate_context ( <EOL> '<STR_LIT>' <EOL> ) <EOL> pattern = ( <EOL> '<STR_LIT>' <EOL> '<STR_LIT>' <EOL> ) <EOL> assert re . search ( pattern , str ( excinfo . value ) ) <EOL> path = os . path . sep . join ( <EOL> [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> ) <EOL> assert path in str ( excinfo . value ) <EOL> @ pytest . fixture <EOL> def default_context ( ) : <EOL> return { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> @ pytest . fixture <EOL> def extra_context ( ) : <EOL> return { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> @ pytest . fixture <EOL> def context_file ( ) : <EOL> return '<STR_LIT>' <EOL> def test_choices ( context_file , default_context , extra_context ) : <EOL> """<STR_LIT>""" <EOL> expected_context = { <EOL> '<STR_LIT>' : OrderedDict ( [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , [ '<STR_LIT>' , '<STR_LIT:all>' , '<STR_LIT>' ] ) , <EOL> ] ) <EOL> } <EOL> generated_context = generate . generate_context ( <EOL> context_file , default_context , extra_context <EOL> ) <EOL> assert generated_context == expected_context <EOL> @ pytest . fixture <EOL> def template_context ( ) : <EOL> return OrderedDict ( [ <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , [ '<STR_LIT:all>' , '<STR_LIT>' , '<STR_LIT>' ] ) , <EOL> ] ) <EOL> def test_apply_overwrites_does_include_unused_variables ( template_context ) : <EOL> generate . apply_overwrites_to_context ( <EOL> template_context , <EOL> { '<STR_LIT>' : '<STR_LIT>' } <EOL> ) <EOL> assert '<STR_LIT>' not in template_context <EOL> def test_apply_overwrites_sets_non_list_value ( template_context ) : <EOL> generate . apply_overwrites_to_context ( <EOL> template_context , <EOL> { '<STR_LIT>' : '<STR_LIT>' } <EOL> ) <EOL> assert template_context [ '<STR_LIT>' ] == '<STR_LIT>' <EOL> def test_apply_overwrites_does_not_modify_choices_for_invalid_overwrite ( <EOL> template_context ) : <EOL> generate . apply_overwrites_to_context ( <EOL> template_context , <EOL> { '<STR_LIT>' : '<STR_LIT>' } <EOL> ) <EOL> assert template_context [ '<STR_LIT>' ] == [ '<STR_LIT:all>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> def test_apply_overwrites_sets_default_for_choice_variable ( template_context ) : <EOL> generate . apply_overwrites_to_context ( <EOL> template_context , <EOL> { '<STR_LIT>' : '<STR_LIT>' } <EOL> ) <EOL> assert template_context [ '<STR_LIT>' ] == [ '<STR_LIT>' , '<STR_LIT:all>' , '<STR_LIT>' ] </s>
