Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_generate_files_nontemplated_exception():
with pytest.raises(exceptions.NonTemplatedInputDirException):
generate.generate_files(
context={
'cookiecutter': {'food': 'pizza'}
},
repo_dir='tests/test-generate-files-nontemplated'
)
def test_generate_files_with_trailing_newline():
generate.generate_files(
context={
'cookiecutter': {'food': 'pizzä'}
},
repo_dir='tests/test-generate-files'
)
newline_file = 'inputpizzä/simple-with-newline.txt'
assert os.path.isfile(newline_file)
with io.open(newline_file, 'r', encoding='utf-8') as f:
simple_text = f.read()
assert simple_text == u'I eat pizzä\n'
def test_oserror_hooks(mocker):
message = 'Out of memory'
err = OSError(message)
err.errno = errno.ENOMEM
prompt = mocker.patch('subprocess.Popen')
prompt.side_effect = err
with pytest.raises(FailedHookException) as excinfo:
generate.generate_files(
context={
'cookiecutter': {'shellhooks': 'shellhooks'}
},
repo_dir='tests/test-shellhooks-empty/',
overwrite_if_exists=True
)
assert message in str(excinfo.value)
def test_generate_files_absolute_path():
generate.generate_files(
context={
'cookiecutter': {'food': 'pizzä'}
},
repo_dir=os.path.abspath('tests/test-generate-files')
)
assert os.path.isfile('inputpizzä/simple.txt')
def test_run_python_hooks():
generate.generate_files(
context={
'cookiecutter': {'pyhooks': 'pyhooks'}
},
repo_dir='tests/test-pyhooks/'.replace("/", os.sep),
output_dir='tests/test-pyhooks/'.replace("/", os.sep)
)
assert os.path.exists('tests/test-pyhooks/inputpyhooks/python_pre.txt')
assert os.path.exists('tests/test-pyhooks/inputpyhooks/python_post.txt')
def test_raise_undefined_variable_file_content(tmpdir, undefined_context):
output_dir = tmpdir.mkdir('output')
with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
generate.generate_files(
repo_dir='tests/undefined-variable/file-content/',
output_dir=str(output_dir),
context=undefined_context
)
error = err.value
assert "Unable to create file 'README.rst'" == error.message
assert error.context == undefined_context
assert not output_dir.join('testproject').exists()
def test_generate_files_permissions():
"""
simple.txt and script.sh should retain their respective 0o644 and
0o755 permissions
"""
generate.generate_files(
context={
'cookiecutter': {'permissions': 'permissions'}
},
repo_dir='tests/test-generate-files-permissions'
)
assert os.path.isfile('inputpermissions/simple.txt')
# simple.txt should still be 0o644
tests_simple_file = os.path.join(
'tests',
'test-generate-files-permissions',
'input{{cookiecutter.permissions}}',
'simple.txt'
)
tests_simple_file_mode = os.stat(tests_simple_file).st_mode & 0o777
def test_return_rendered_project_dir():
os.mkdir('tests/custom_output_dir')
project_dir = generate.generate_files(
context={
'cookiecutter': {'food': 'pizzä'}
},
repo_dir=os.path.abspath('tests/test-generate-files'),
output_dir='tests/custom_output_dir'
)
assert project_dir == os.path.abspath(
'tests/custom_output_dir/inputpizzä/'
)
def test_generate_files():
generate.generate_files(
context={
'cookiecutter': {'food': 'pizzä'}
},
repo_dir='tests/test-generate-files'
)
simple_file = 'inputpizzä/simple.txt'
assert os.path.isfile(simple_file)
simple_text = io.open(simple_file, 'rt', encoding='utf-8').read()
assert simple_text == u'I eat pizzä'
else:
# If it's a local repo, no need to clone or copy to your
# cookiecutters_dir
repo_dir = template
context_file = os.path.join(repo_dir, 'cookiecutter.json')
logging.debug('context_file is {0}'.format(context_file))
context = generate_context(
context_file=context_file,
default_context=config_dict['default_context'],
extra_context=extra_context,
)
# Create project from local context and project template.
generate_files(
repo_dir=repo_dir,
context=context
)