cookiecutter
40 строк · 1.2 Кб
1"""
2test_abort_generate_on_hook_error.
3
4Tests to ensure cookiecutter properly exits with a non-zero exit code whenever
5errors occur in (optional) pre- or pos-gen hooks.
6"""
7
8import pytest9
10from cookiecutter import exceptions, generate11
12
13@pytest.mark.parametrize(14("abort_pre_gen", "abort_post_gen"),15(("yes", "no"), ("no", "yes")),16ids=("pre_gen_hook_raises_error", "post_gen_hook_raises_error"),17)
18@pytest.mark.usefixtures("clean_system")19def test_hooks_raises_errors(tmp_path, abort_pre_gen, abort_post_gen) -> None:20"""Verify pre- and pos-gen errors raises correct error code from script.21
22This allows developers to make different error codes in their code,
23for different errors.
24"""
25context = {26"cookiecutter": {27"repo_dir": "foobar",28"abort_pre_gen": abort_pre_gen,29"abort_post_gen": abort_post_gen,30}31}32
33with pytest.raises(exceptions.FailedHookException) as error:34generate.generate_files(35repo_dir="tests/hooks-abort-render",36context=context,37output_dir=str(tmp_path),38)39assert error.value.code == 540assert not tmp_path.joinpath("foobar").is_dir()41