============================= test session starts ==============================
platform linux -- Python 3.10.12, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python
cachedir: .pytest_cache
metadata: {'Python': '3.10.12', 'Platform': 'Linux-6.8.0-1025-gke-x86_64-with-glibc2.35', 'Packages': {'pytest': '9.0.2', 'pluggy': '1.6.0'}, 'Plugins': {'anyio': '4.12.1', 'metadata': '3.1.1', 'json-report': '1.5.0', 'cov': '7.0.0'}}
rootdir: /workspace/cookiecutter
configfile: setup.cfg
plugins: anyio-4.12.1, metadata-3.1.1, json-report-1.5.0, cov-7.0.0
collecting ... collected 371 items

tests/replay/test_dump.py::test_type_error_if_no_template_name FAILED    [  0%]
tests/replay/test_dump.py::test_type_error_if_not_dict_context FAILED    [  0%]
tests/replay/test_dump.py::test_value_error_if_key_missing_in_context FAILED [  0%]
tests/replay/test_dump.py::test_ioerror_if_replay_dir_creation_fails ERROR [  1%]
tests/replay/test_dump.py::test_run_json_dump ERROR                      [  1%]
tests/replay/test_load.py::test_type_error_if_no_template_name FAILED    [  1%]
tests/replay/test_load.py::test_value_error_if_key_missing_in_context ERROR [  1%]
tests/replay/test_load.py::test_io_error_if_no_replay_file ERROR         [  2%]
tests/replay/test_load.py::test_run_json_load ERROR                      [  2%]
tests/replay/test_replay.py::test_get_replay_file_name[bar] FAILED       [  2%]
tests/replay/test_replay.py::test_get_replay_file_name[bar.json] FAILED  [  2%]
tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs0] FAILED [  3%]
tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs1] FAILED [  3%]
tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs2] FAILED [  3%]
tests/replay/test_replay.py::test_main_does_not_invoke_dump_but_load ERROR [  4%]
tests/replay/test_replay.py::test_main_does_not_invoke_load_but_dump ERROR [  4%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Simple expansion] FAILED [  4%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Skip expansion (expansion not an abbreviation)] FAILED [  4%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Expansion prefix] FAILED [  5%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[expansion_override_builtin] FAILED [  5%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[expansion_prefix_ignores_suffix] FAILED [  5%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (github)] FAILED [  5%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (gitlab)] FAILED [  6%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (bitbucket)] FAILED [  6%]
tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion_prefix_not_0_in_braces FAILED [  6%]
tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[/path/to/zipfile.zip-False] ERROR [  7%]
tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[https://example.com/path/to/zipfile.zip-True] ERROR [  7%]
tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[http://example.com/path/to/zipfile.zip-True] ERROR [  7%]
tests/repository/test_determine_repo_dir_clones_repo.py::test_repository_url_should_clone ERROR [  7%]
tests/repository/test_determine_repo_dir_clones_repo.py::test_repository_url_with_no_context_file ERROR [  8%]
tests/repository/test_determine_repo_dir_finds_existing_cookiecutter.py::test_should_find_existing_cookiecutter FAILED [  8%]
tests/repository/test_determine_repo_dir_finds_subdirectories.py::test_should_find_existing_cookiecutter FAILED [  8%]
tests/repository/test_determine_repo_dir_finds_subdirectories.py::test_local_repo_typo FAILED [  8%]
tests/repository/test_determine_repository_should_use_local_repo.py::test_finds_local_repo FAILED [  9%]
tests/repository/test_determine_repository_should_use_local_repo.py::test_local_repo_with_no_context_raises FAILED [  9%]
tests/repository/test_determine_repository_should_use_local_repo.py::test_local_repo_typo FAILED [  9%]
tests/repository/test_is_repo_url.py::test_is_zip_file[/path/to/zipfile.zip] FAILED [  9%]
tests/repository/test_is_repo_url.py::test_is_zip_file[https://example.com/path/to/zipfile.zip] FAILED [ 10%]
tests/repository/test_is_repo_url.py::test_is_zip_file[http://example.com/path/to/zipfile.zip] FAILED [ 10%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[gitolite@server:team/repo] FAILED [ 10%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[git@github.com:audreyfeldroy/cookiecutter.git] FAILED [ 11%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[https://github.com/cookiecutter/cookiecutter.git] FAILED [ 11%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[git+https://private.com/gitrepo] FAILED [ 11%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[hg+https://private.com/mercurialrepo] FAILED [ 11%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[https://bitbucket.org/pokoli/cookiecutter.hg] FAILED [ 12%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[file://server/path/to/repo.git] FAILED [ 12%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[/audreyr/cookiecutter.git] FAILED [ 12%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[/home/audreyr/cookiecutter] FAILED [ 12%]
tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template] FAILED [ 13%]
tests/repository/test_is_repo_url.py::test_expand_abbreviations FAILED   [ 13%]
tests/repository/test_repository_has_cookiecutter_json.py::test_valid_repository FAILED [ 13%]
tests/repository/test_repository_has_cookiecutter_json.py::test_invalid_repository[tests/fake-repo-bad] PASSED [ 14%]
tests/repository/test_repository_has_cookiecutter_json.py::test_invalid_repository[tests/unknown-repo] PASSED [ 14%]
tests/test_abort_generate_on_hook_error.py::test_hooks_raises_errors[pre_gen_hook_raises_error] FAILED [ 14%]
tests/test_abort_generate_on_hook_error.py::test_hooks_raises_errors[post_gen_hook_raises_error] FAILED [ 14%]
tests/test_cli.py::test_cli_version[-V] FAILED                           [ 15%]
tests/test_cli.py::test_cli_version[--version] FAILED                    [ 15%]
tests/test_cli.py::test_cli_error_on_existing_output_directory FAILED    [ 15%]
tests/test_cli.py::test_cli FAILED                                       [ 15%]
tests/test_cli.py::test_cli_verbose FAILED                               [ 16%]
tests/test_cli.py::test_cli_replay ERROR                                 [ 16%]
tests/test_cli.py::test_cli_replay_file ERROR                            [ 16%]
tests/test_cli.py::test_cli_replay_generated ERROR                       [ 16%]
tests/test_cli.py::test_cli_exit_on_noinput_and_replay ERROR             [ 17%]
tests/test_cli.py::test_run_cookiecutter_on_overwrite_if_exists_and_replay[-f] ERROR [ 17%]
tests/test_cli.py::test_run_cookiecutter_on_overwrite_if_exists_and_replay[--overwrite-if-exists] ERROR [ 17%]
tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_does_not_exist[-f] FAILED [ 18%]
tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_does_not_exist[--overwrite-if-exists] FAILED [ 18%]
tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_exists[-f] PASSED [ 18%]
tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_exists[--overwrite-if-exists] PASSED [ 18%]
tests/test_cli.py::test_cli_output_dir[-o] ERROR                         [ 19%]
tests/test_cli.py::test_cli_output_dir[--output-dir] ERROR               [ 19%]
tests/test_cli.py::test_cli_help[-h] PASSED                              [ 19%]
tests/test_cli.py::test_cli_help[--help] PASSED                          [ 19%]
tests/test_cli.py::test_cli_help[help] FAILED                            [ 20%]
tests/test_cli.py::test_user_config ERROR                                [ 20%]
tests/test_cli.py::test_default_user_config_overwrite ERROR              [ 20%]
tests/test_cli.py::test_default_user_config ERROR                        [ 21%]
tests/test_cli.py::test_echo_undefined_variable_error FAILED             [ 21%]
tests/test_cli.py::test_echo_unknown_extension_error FAILED              [ 21%]
tests/test_cli.py::test_local_extension FAILED                           [ 21%]
tests/test_cli.py::test_local_extension_not_available FAILED             [ 22%]
tests/test_cli.py::test_cli_extra_context FAILED                         [ 22%]
tests/test_cli.py::test_cli_extra_context_invalid_format FAILED          [ 22%]
tests/test_cli.py::test_debug_file_non_verbose FAILED                    [ 22%]
tests/test_cli.py::test_debug_file_verbose FAILED                        [ 23%]
tests/test_cli.py::test_debug_list_installed_templates FAILED            [ 23%]
tests/test_cli.py::test_debug_list_installed_templates_failure FAILED    [ 23%]
tests/test_cli.py::test_directory_repo FAILED                            [ 23%]
tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=yes-None-True] ERROR [ 24%]
tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=no-None-False] ERROR [ 24%]
tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=ask-yes-True] ERROR [ 24%]
tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=ask-no-False] ERROR [ 25%]
tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=yes-None-True] ERROR [ 25%]
tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=no-None-False] ERROR [ 25%]
tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=ask-yes-True] ERROR [ 25%]
tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=ask-no-False] ERROR [ 26%]
tests/test_cli.py::test_cli_with_json_decoding_error FAILED              [ 26%]
tests/test_cli.py::test_cli_with_pre_prompt_hook FAILED                  [ 26%]
tests/test_cli.py::test_cli_with_pre_prompt_hook_fail FAILED             [ 26%]
tests/test_cookiecutter_invocation.py::test_should_invoke_main FAILED    [ 27%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre/] FAILED [ 27%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre] FAILED [ 27%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_extra_context FAILED [ 28%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_templated_context FAILED [ 28%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_rendered_file FAILED [ 28%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_dict_values_in_context FAILED [ 28%]
tests/test_cookiecutter_local_no_input.py::test_cookiecutter_template_cleanup ERROR [ 29%]
tests/test_cookiecutter_local_with_input.py::test_cookiecutter_local_with_input FAILED [ 29%]
tests/test_cookiecutter_local_with_input.py::test_cookiecutter_input_extra_context FAILED [ 29%]
tests/test_cookiecutter_nested_templates.py::test_cookiecutter_nested_templates[fake-nested-templates-fake-project] ERROR [ 29%]
tests/test_cookiecutter_nested_templates.py::test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package] ERROR [ 30%]
tests/test_custom_extensions_in_hooks.py::test_hook_with_extension[pre_gen_hook] FAILED [ 30%]
tests/test_custom_extensions_in_hooks.py::test_hook_with_extension[post_gen_hook] FAILED [ 30%]
tests/test_default_extensions.py::test_jinja2_time_extension FAILED      [ 30%]
tests/test_default_extensions.py::test_jinja2_slugify_extension FAILED   [ 31%]
tests/test_default_extensions.py::test_jinja2_uuid_extension FAILED      [ 31%]
tests/test_environment.py::test_env_should_raise_for_unknown_extension FAILED [ 31%]
tests/test_environment.py::test_env_should_come_with_default_extensions PASSED [ 32%]
tests/test_exceptions.py::test_undefined_variable_to_str PASSED          [ 32%]
tests/test_find.py::test_find_template[template with default jinja strings] FAILED [ 32%]
tests/test_find.py::test_find_template[template with custom jinja strings] FAILED [ 32%]
tests/test_find.py::test_find_template[template with custom jinja strings but folder with default jinja strings] FAILED [ 33%]
tests/test_find.py::test_find_template[template missing folder] FAILED   [ 33%]
tests/test_generate_context.py::test_generate_context[input_params0-expected_context0] FAILED [ 33%]
tests/test_generate_context.py::test_generate_context[input_params1-expected_context1] FAILED [ 33%]
tests/test_generate_context.py::test_generate_context[input_params2-expected_context2] FAILED [ 34%]
tests/test_generate_context.py::test_generate_context[input_params3-expected_context3] FAILED [ 34%]
tests/test_generate_context.py::test_generate_context_with_json_decoding_error FAILED [ 34%]
tests/test_generate_context.py::test_default_context_replacement_in_generate_context FAILED [ 35%]
tests/test_generate_context.py::test_generate_context_decodes_non_ascii_chars FAILED [ 35%]
tests/test_generate_context.py::test_apply_overwrites_does_include_unused_variables PASSED [ 35%]
tests/test_generate_context.py::test_apply_overwrites_sets_non_list_value FAILED [ 35%]
tests/test_generate_context.py::test_apply_overwrites_does_not_modify_choices_for_invalid_overwrite FAILED [ 36%]
tests/test_generate_context.py::test_apply_overwrites_invalid_overwrite FAILED [ 36%]
tests/test_generate_context.py::test_apply_overwrites_sets_multichoice_values FAILED [ 36%]
tests/test_generate_context.py::test_apply_overwrites_invalid_multichoice_values FAILED [ 36%]
tests/test_generate_context.py::test_apply_overwrites_error_additional_values FAILED [ 37%]
tests/test_generate_context.py::test_apply_overwrites_in_dictionaries FAILED [ 37%]
tests/test_generate_context.py::test_apply_overwrites_sets_default_for_choice_variable FAILED [ 37%]
tests/test_generate_context.py::test_apply_overwrites_in_nested_dict FAILED [ 38%]
tests/test_generate_context.py::test_apply_overwrite_context_as_in_nested_dict_with_additional_values FAILED [ 38%]
tests/test_generate_context.py::test_apply_overwrites_in_nested_dict_additional_values FAILED [ 38%]
tests/test_generate_copy_without_render.py::test_generate_copy_without_render_extensions FAILED [ 38%]
tests/test_generate_copy_without_render_override.py::test_generate_copy_without_render_extensions FAILED [ 39%]
tests/test_generate_file.py::test_generate_file FAILED                   [ 39%]
tests/test_generate_file.py::test_generate_file_jsonify_filter FAILED    [ 39%]
tests/test_generate_file.py::test_generate_file_random_ascii_string[True-10] FAILED [ 39%]
tests/test_generate_file.py::test_generate_file_random_ascii_string[True-40] FAILED [ 40%]
tests/test_generate_file.py::test_generate_file_random_ascii_string[False-10] FAILED [ 40%]
tests/test_generate_file.py::test_generate_file_random_ascii_string[False-40] FAILED [ 40%]
tests/test_generate_file.py::test_generate_file_with_true_condition FAILED [ 40%]
tests/test_generate_file.py::test_generate_file_with_false_condition PASSED [ 41%]
tests/test_generate_file.py::test_generate_file_verbose_template_syntax_error FAILED [ 41%]
tests/test_generate_file.py::test_generate_file_does_not_translate_lf_newlines_to_crlf FAILED [ 41%]
tests/test_generate_file.py::test_generate_file_does_not_translate_crlf_newlines_to_lf FAILED [ 42%]
tests/test_generate_file.py::test_generate_file_handles_mixed_line_endings FAILED [ 42%]
tests/test_generate_files.py::test_generate_files_nontemplated_exception FAILED [ 42%]
tests/test_generate_files.py::test_generate_files FAILED                 [ 42%]
tests/test_generate_files.py::test_generate_files_with_linux_newline FAILED [ 43%]
tests/test_generate_files.py::test_generate_files_with_jinja2_environment FAILED [ 43%]
tests/test_generate_files.py::test_generate_files_with_trailing_newline_forced_to_linux_by_context FAILED [ 43%]
tests/test_generate_files.py::test_generate_files_with_windows_newline FAILED [ 43%]
tests/test_generate_files.py::test_generate_files_with_windows_newline_forced_to_linux_by_context FAILED [ 44%]
tests/test_generate_files.py::test_generate_files_binaries FAILED        [ 44%]
tests/test_generate_files.py::test_generate_files_absolute_path FAILED   [ 44%]
tests/test_generate_files.py::test_generate_files_output_dir FAILED      [ 45%]
tests/test_generate_files.py::test_generate_files_permissions FAILED     [ 45%]
tests/test_generate_files.py::test_generate_files_with_overwrite_if_exists_with_skip_if_file_exists FAILED [ 45%]
tests/test_generate_files.py::test_generate_files_with_skip_if_file_exists FAILED [ 45%]
tests/test_generate_files.py::test_generate_files_with_overwrite_if_exists FAILED [ 46%]
tests/test_generate_files.py::test_raise_undefined_variable_file_name FAILED [ 46%]
tests/test_generate_files.py::test_raise_undefined_variable_file_name_existing_project FAILED [ 46%]
tests/test_generate_files.py::test_raise_undefined_variable_file_content FAILED [ 46%]
tests/test_generate_files.py::test_raise_undefined_variable_dir_name FAILED [ 47%]
tests/test_generate_files.py::test_keep_project_dir_on_failure FAILED    [ 47%]
tests/test_generate_files.py::test_raise_undefined_variable_dir_name_existing_project FAILED [ 47%]
tests/test_generate_files.py::test_raise_undefined_variable_project_dir FAILED [ 47%]
tests/test_generate_hooks.py::test_ignore_hooks_dirs PASSED              [ 48%]
tests/test_generate_hooks.py::test_run_python_hooks FAILED               [ 48%]
tests/test_generate_hooks.py::test_run_python_hooks_cwd FAILED           [ 48%]
tests/test_generate_hooks.py::test_empty_hooks FAILED                    [ 49%]
tests/test_generate_hooks.py::test_oserror_hooks ERROR                   [ 49%]
tests/test_generate_hooks.py::test_run_failing_hook_removes_output_directory FAILED [ 49%]
tests/test_generate_hooks.py::test_run_failing_hook_preserves_existing_output_directory FAILED [ 49%]
tests/test_generate_hooks.py::test_run_shell_hooks FAILED                [ 50%]
tests/test_generate_hooks.py::test_run_shell_hooks_win SKIPPED (Win only
test)                                                                    [ 50%]
tests/test_generate_hooks.py::test_ignore_shell_hooks PASSED             [ 50%]
tests/test_generate_hooks.py::test_deprecate_run_hook_from_repo_dir FAILED [ 50%]
tests/test_get_config.py::test_merge_configs PASSED                      [ 51%]
tests/test_get_config.py::test_get_config FAILED                         [ 51%]
tests/test_get_config.py::test_get_config_does_not_exist FAILED          [ 51%]
tests/test_get_config.py::test_invalid_config FAILED                     [ 52%]
tests/test_get_config.py::test_get_config_with_defaults FAILED           [ 52%]
tests/test_get_config.py::test_get_config_empty_config_file FAILED       [ 52%]
tests/test_get_config.py::test_get_config_invalid_file_with_array_as_top_level_element FAILED [ 52%]
tests/test_get_config.py::test_get_config_invalid_file_with_multiple_docs FAILED [ 53%]
tests/test_get_user_config.py::test_get_user_config_valid PASSED         [ 53%]
tests/test_get_user_config.py::test_get_user_config_invalid FAILED       [ 53%]
tests/test_get_user_config.py::test_get_user_config_nonexistent PASSED   [ 53%]
tests/test_get_user_config.py::test_specify_config_path ERROR            [ 54%]
tests/test_get_user_config.py::test_default_config_path PASSED           [ 54%]
tests/test_get_user_config.py::test_default_config_from_env_variable PASSED [ 54%]
tests/test_get_user_config.py::test_force_default_config ERROR           [ 54%]
tests/test_get_user_config.py::test_expand_user_for_directories_in_config FAILED [ 55%]
tests/test_get_user_config.py::test_expand_vars_for_directories_in_config FAILED [ 55%]
tests/test_get_user_config.py::test_specify_config_values PASSED         [ 55%]
tests/test_hooks.py::TestFindHooks::test_find_hook FAILED                [ 56%]
tests/test_hooks.py::TestFindHooks::test_no_hooks PASSED                 [ 56%]
tests/test_hooks.py::TestFindHooks::test_unknown_hooks_dir PASSED        [ 56%]
tests/test_hooks.py::TestFindHooks::test_hook_not_found PASSED           [ 56%]
tests/test_hooks.py::TestExternalHooks::test_run_script FAILED           [ 57%]
tests/test_hooks.py::TestExternalHooks::test_run_failing_script ERROR    [ 57%]
tests/test_hooks.py::TestExternalHooks::test_run_failing_script_enoexec ERROR [ 57%]
tests/test_hooks.py::TestExternalHooks::test_run_script_cwd FAILED       [ 57%]
tests/test_hooks.py::TestExternalHooks::test_run_script_with_context FAILED [ 58%]
tests/test_hooks.py::TestExternalHooks::test_run_hook FAILED             [ 58%]
tests/test_hooks.py::TestExternalHooks::test_run_failing_hook FAILED     [ 58%]
tests/test_hooks.py::test_ignore_hook_backup_files PASSED                [ 59%]
tests/test_log.py::test_info_stdout_logging FAILED                       [ 59%]
tests/test_log.py::test_debug_stdout_logging FAILED                      [ 59%]
tests/test_log.py::test_debug_file_logging FAILED                        [ 59%]
tests/test_main.py::test_original_cookiecutter_options_preserved_in__cookiecutter ERROR [ 60%]
tests/test_main.py::test_replay_dump_template_name ERROR                 [ 60%]
tests/test_main.py::test_replay_load_template_name ERROR                 [ 60%]
tests/test_main.py::test_custom_replay_file ERROR                        [ 60%]
tests/test_output_folder.py::test_output_folder FAILED                   [ 61%]
tests/test_output_folder.py::test_exception_when_output_folder_exists FAILED [ 61%]
tests/test_pre_prompt_hooks.py::test_run_pre_prompt_python_hook FAILED   [ 61%]
tests/test_pre_prompt_hooks.py::test_run_pre_prompt_python_hook_fail FAILED [ 61%]
tests/test_pre_prompt_hooks.py::test_run_pre_prompt_shell_hook FAILED    [ 62%]
tests/test_preferred_encoding.py::test_not_ascii PASSED                  [ 62%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str[1-1] ERROR [ 62%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str[True-True] ERROR [ 63%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str[foo-foo] ERROR [ 63%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str[{{cookiecutter.project}}-foobar] ERROR [ 63%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str[None-None] ERROR [ 63%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var0-rendered_var0] FAILED [ 64%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var1-rendered_var1] FAILED [ 64%]
tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var2-rendered_var2] FAILED [ 64%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config[ASCII default prompt/input] FAILED [ 64%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config[Unicode default prompt/input] FAILED [ 65%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_prompts[ASCII default prompt/input] FAILED [ 65%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context0] FAILED [ 65%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context1] FAILED [ 66%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context2] FAILED [ 66%]
tests/test_prompt.py::TestPrompt::test_prompt_for_config_dict FAILED     [ 66%]
tests/test_prompt.py::TestPrompt::test_should_render_dict FAILED         [ 66%]
tests/test_prompt.py::TestPrompt::test_should_render_deep_dict FAILED    [ 67%]
tests/test_prompt.py::TestPrompt::test_should_render_deep_dict_with_human_prompts FAILED [ 67%]
tests/test_prompt.py::TestPrompt::test_internal_use_no_human_prompts FAILED [ 67%]
tests/test_prompt.py::TestPrompt::test_prompt_for_templated_config FAILED [ 67%]
tests/test_prompt.py::TestPrompt::test_dont_prompt_for_private_context_var FAILED [ 68%]
tests/test_prompt.py::TestPrompt::test_should_render_private_variables_with_two_underscores FAILED [ 68%]
tests/test_prompt.py::TestPrompt::test_should_not_render_private_variables FAILED [ 68%]
tests/test_prompt.py::TestReadUserChoice::test_should_invoke_read_user_choice ERROR [ 69%]
tests/test_prompt.py::TestReadUserChoice::test_should_invoke_read_user_variable ERROR [ 69%]
tests/test_prompt.py::TestReadUserChoice::test_should_render_choices ERROR [ 69%]
tests/test_prompt.py::TestPromptChoiceForConfig::test_should_return_first_option_if_no_input ERROR [ 69%]
tests/test_prompt.py::TestPromptChoiceForConfig::test_should_read_user_choice ERROR [ 70%]
tests/test_prompt.py::TestReadUserYesNo::test_should_invoke_read_user_yes_no[True] ERROR [ 70%]
tests/test_prompt.py::TestReadUserYesNo::test_should_invoke_read_user_yes_no[False] ERROR [ 70%]
tests/test_prompt.py::TestReadUserYesNo::test_boolean_parameter_no_input FAILED [ 70%]
tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict] FAILED [ 71%]
tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with choices] FAILED [ 71%]
tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with dict_key] FAILED [ 71%]
tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with key_value] FAILED [ 71%]
tests/test_prompt.py::test_cookiecutter_nested_templates[fake-nested-templates-fake-project] FAILED [ 72%]
tests/test_prompt.py::test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package] FAILED [ 72%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[] FAILED [ 72%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[/tmp] FAILED [ 73%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[/foo] FAILED [ 73%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_win_paths[] SKIPPED [ 73%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_win_paths[C:/tmp] SKIPPED [ 73%]
tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_win_paths[D:/tmp] SKIPPED [ 74%]
tests/test_prompt.py::test_prompt_should_ask_and_rm_repo_dir ERROR       [ 74%]
tests/test_prompt.py::test_prompt_should_ask_and_exit_on_user_no_answer ERROR [ 74%]
tests/test_prompt.py::test_prompt_should_ask_and_rm_repo_file ERROR      [ 74%]
tests/test_prompt.py::test_prompt_should_ask_and_keep_repo_on_no_reuse ERROR [ 75%]
tests/test_prompt.py::test_prompt_should_ask_and_keep_repo_on_reuse ERROR [ 75%]
tests/test_prompt.py::test_prompt_should_not_ask_if_no_input_and_rm_repo_dir ERROR [ 75%]
tests/test_prompt.py::test_prompt_should_not_ask_if_no_input_and_rm_repo_file ERROR [ 76%]
tests/test_read_repo_password.py::test_click_invocation ERROR            [ 76%]
tests/test_read_user_choice.py::test_click_invocation[1-hello] ERROR     [ 76%]
tests/test_read_user_choice.py::test_click_invocation[2-world] ERROR     [ 76%]
tests/test_read_user_choice.py::test_click_invocation[3-foo] ERROR       [ 77%]
tests/test_read_user_choice.py::test_click_invocation[4-bar] ERROR       [ 77%]
tests/test_read_user_choice.py::test_raise_if_options_is_not_a_non_empty_list FAILED [ 77%]
tests/test_read_user_dict.py::test_process_json_invalid_json FAILED      [ 77%]
tests/test_read_user_dict.py::test_process_json_non_dict FAILED          [ 78%]
tests/test_read_user_dict.py::test_process_json_valid_json FAILED        [ 78%]
tests/test_read_user_dict.py::test_process_json_deep_dict FAILED         [ 78%]
tests/test_read_user_dict.py::test_should_raise_type_error ERROR         [ 78%]
tests/test_read_user_dict.py::test_should_call_prompt_with_process_json ERROR [ 79%]
tests/test_read_user_dict.py::test_should_not_load_json_from_sentinel ERROR [ 79%]
tests/test_read_user_dict.py::test_read_user_dict_default_value[\n] ERROR [ 79%]
tests/test_read_user_dict.py::test_read_user_dict_default_value[\ndefault\n] ERROR [ 80%]
tests/test_read_user_dict.py::test_json_prompt_process_response FAILED   [ 80%]
tests/test_read_user_variable.py::test_click_invocation ERROR            [ 80%]
tests/test_read_user_variable.py::test_input_loop_with_null_default_value ERROR [ 80%]
tests/test_read_user_yes_no.py::test_click_invocation ERROR              [ 81%]
tests/test_read_user_yes_no.py::test_yesno_prompt_process_response FAILED [ 81%]
tests/test_repo_not_found.py::test_should_raise_error_if_repo_does_not_exist FAILED [ 81%]
tests/test_specify_output_dir.py::test_api_invocation ERROR              [ 81%]
tests/test_specify_output_dir.py::test_default_output_dir ERROR          [ 82%]
tests/test_templates.py::test_build_templates[include] FAILED            [ 82%]
tests/test_templates.py::test_build_templates[no-templates] FAILED       [ 82%]
tests/test_templates.py::test_build_templates[extends] FAILED            [ 83%]
tests/test_templates.py::test_build_templates[super] FAILED              [ 83%]
tests/test_time_extension.py::test_tz_is_required PASSED                 [ 83%]
tests/test_time_extension.py::test_utc_default_datetime_format PASSED    [ 83%]
tests/test_time_extension.py::test_accept_valid_timezones[utc] FAILED    [ 84%]
tests/test_time_extension.py::test_accept_valid_timezones[local] FAILED  [ 84%]
tests/test_time_extension.py::test_accept_valid_timezones[Europe/Berlin] FAILED [ 84%]
tests/test_time_extension.py::test_environment_datetime_format FAILED    [ 84%]
tests/test_time_extension.py::test_add_time FAILED                       [ 85%]
tests/test_time_extension.py::test_substract_time FAILED                 [ 85%]
tests/test_time_extension.py::test_offset_with_format FAILED             [ 85%]
tests/test_utils.py::test_force_delete ERROR                             [ 85%]
tests/test_utils.py::test_rmtree PASSED                                  [ 86%]
tests/test_utils.py::test_make_sure_path_exists PASSED                   [ 86%]
tests/test_utils.py::test_make_sure_path_exists_correctly_handle_os_error ERROR [ 86%]
tests/test_utils.py::test_work_in PASSED                                 [ 87%]
tests/test_utils.py::test_work_in_without_path PASSED                    [ 87%]
tests/test_utils.py::test_create_tmp_repo_dir PASSED                     [ 87%]
tests/vcs/test_clone.py::test_clone_should_raise_if_vcs_not_installed ERROR [ 87%]
tests/vcs/test_clone.py::test_clone_should_rstrip_trailing_slash_in_repo_url ERROR [ 88%]
tests/vcs/test_clone.py::test_clone_should_abort_if_user_does_not_want_to_reclone ERROR [ 88%]
tests/vcs/test_clone.py::test_clone_should_silent_exit_if_ok_to_reuse ERROR [ 88%]
tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-https://github.com/hello/world.git-world] ERROR [ 88%]
tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[hg-https://bitbucket.org/foo/bar-bar] ERROR [ 89%]
tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@host:gitoliterepo-gitoliterepo] ERROR [ 89%]
tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@gitlab.com:cookiecutter/cookiecutter.git-cookiecutter] ERROR [ 89%]
tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@github.com:cookiecutter/cookiecutter.git-cookiecutter] ERROR [ 90%]
tests/vcs/test_clone.py::test_clone_handles_repo_typo[fatal: repository 'https://github.com/hackebro/cookiedozer' not found] ERROR [ 90%]
tests/vcs/test_clone.py::test_clone_handles_repo_typo[hg: abort: HTTP Error 404: Not Found] ERROR [ 90%]
tests/vcs/test_clone.py::test_clone_handles_branch_typo[error: pathspec 'unknown_branch' did not match any file(s) known to git] ERROR [ 90%]
tests/vcs/test_clone.py::test_clone_handles_branch_typo[hg: abort: unknown revision 'unknown_branch'!] ERROR [ 91%]
tests/vcs/test_clone.py::test_clone_unknown_subprocess_error ERROR       [ 91%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] FAILED [ 91%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[hg+https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] FAILED [ 91%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] FAILED [ 92%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] FAILED [ 92%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage.git-git-https://github.com/audreyfeldroy/cookiecutter-pypackage.git] FAILED [ 92%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage-git-https://github.com/audreyfeldroy/cookiecutter-pypackage] FAILED [ 92%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git-git-git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git] FAILED [ 93%]
tests/vcs/test_identify_repo.py::test_identify_known_repo[https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket-hg-https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket] FAILED [ 93%]
tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+git] FAILED [ 93%]
tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+hg] FAILED [ 94%]
tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+bar] FAILED [ 94%]
tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foobar] FAILED [ 94%]
tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[http://norepotypespecified.com] FAILED [ 94%]
tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[-False] ERROR  [ 95%]
tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[None-False] ERROR [ 95%]
tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[False-False] ERROR [ 95%]
tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[/usr/local/bin/git-True] ERROR [ 95%]
tests/zipfile/test_unzip.py::test_unzip_local_file ERROR                 [ 96%]
tests/zipfile/test_unzip.py::test_unzip_protected_local_file_environment_password ERROR [ 96%]
tests/zipfile/test_unzip.py::test_unzip_protected_local_file_bad_environment_password ERROR [ 96%]
tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_password_with_noinput ERROR [ 97%]
tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_password ERROR [ 97%]
tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_bad_password ERROR [ 97%]
tests/zipfile/test_unzip.py::test_empty_zip_file ERROR                   [ 97%]
tests/zipfile/test_unzip.py::test_non_repo_zip_file ERROR                [ 98%]
tests/zipfile/test_unzip.py::test_bad_zip_file ERROR                     [ 98%]
tests/zipfile/test_unzip.py::test_unzip_url ERROR                        [ 98%]
tests/zipfile/test_unzip.py::test_unzip_url_with_empty_chunks ERROR      [ 98%]
tests/zipfile/test_unzip.py::test_unzip_url_existing_cache ERROR         [ 99%]
tests/zipfile/test_unzip.py::test_unzip_url_existing_cache_no_input ERROR [ 99%]
tests/zipfile/test_unzip.py::test_unzip_should_abort_if_no_redownload ERROR [ 99%]
tests/zipfile/test_unzip.py::test_unzip_is_ok_to_reuse ERROR             [100%]

==================================== ERRORS ====================================
_________ ERROR at setup of test_ioerror_if_replay_dir_creation_fails __________
file /workspace/cookiecutter/tests/replay/test_dump.py, line 76
  def test_ioerror_if_replay_dir_creation_fails(mock_ensure_failure, replay_test_dir):
file /workspace/cookiecutter/tests/replay/test_dump.py, line 54
  @pytest.fixture
  def mock_ensure_failure(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_ensure_failure, mock_ensure_success, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_replay_dump, replay_file, replay_test_dir, subtests, template_name, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_dump.py:54
_____________________ ERROR at setup of test_run_json_dump _____________________
file /workspace/cookiecutter/tests/replay/test_dump.py, line 84
  def test_run_json_dump(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_ensure_failure, mock_ensure_success, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_replay_dump, replay_file, replay_test_dir, subtests, template_name, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_dump.py:84
_________ ERROR at setup of test_value_error_if_key_missing_in_context _________
file /workspace/cookiecutter/tests/replay/test_load.py, line 30
  def test_value_error_if_key_missing_in_context(mocker, replay_test_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, replay_file, replay_test_dir, subtests, template_name, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_load.py:30
______________ ERROR at setup of test_io_error_if_no_replay_file _______________
file /workspace/cookiecutter/tests/replay/test_load.py, line 37
  def test_io_error_if_no_replay_file(mocker, replay_test_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, replay_file, replay_test_dir, subtests, template_name, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_load.py:37
_____________________ ERROR at setup of test_run_json_load _____________________
file /workspace/cookiecutter/tests/replay/test_load.py, line 43
  def test_run_json_load(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, replay_file, replay_test_dir, subtests, template_name, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_load.py:43
__________ ERROR at setup of test_main_does_not_invoke_dump_but_load ___________
file /workspace/cookiecutter/tests/replay/test_replay.py, line 32
  def test_main_does_not_invoke_dump_but_load(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, replay_test_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_replay.py:32
__________ ERROR at setup of test_main_does_not_invoke_load_but_dump ___________
file /workspace/cookiecutter/tests/replay/test_replay.py, line 49
  def test_main_does_not_invoke_load_but_dump(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_user_config, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, replay_test_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/replay/test_replay.py:49
_______ ERROR at setup of test_zipfile_unzip[/path/to/zipfile.zip-False] _______
file /workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py, line 10
  @pytest.mark.parametrize(
      'template, is_url',
      [
          ('/path/to/zipfile.zip', False),
          ('https://example.com/path/to/zipfile.zip', True),
          ('http://example.com/path/to/zipfile.zip', True),
      ],
  )
  def test_zipfile_unzip(mocker, template, is_url, user_config_data):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template_url, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py:10
_ ERROR at setup of test_zipfile_unzip[https://example.com/path/to/zipfile.zip-True] _
file /workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py, line 10
  @pytest.mark.parametrize(
      'template, is_url',
      [
          ('/path/to/zipfile.zip', False),
          ('https://example.com/path/to/zipfile.zip', True),
          ('http://example.com/path/to/zipfile.zip', True),
      ],
  )
  def test_zipfile_unzip(mocker, template, is_url, user_config_data):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template_url, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py:10
_ ERROR at setup of test_zipfile_unzip[http://example.com/path/to/zipfile.zip-True] _
file /workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py, line 10
  @pytest.mark.parametrize(
      'template, is_url',
      [
          ('/path/to/zipfile.zip', False),
          ('https://example.com/path/to/zipfile.zip', True),
          ('http://example.com/path/to/zipfile.zip', True),
      ],
  )
  def test_zipfile_unzip(mocker, template, is_url, user_config_data):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template_url, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py:10
______________ ERROR at setup of test_repository_url_should_clone ______________
file /workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py, line 61
  def test_repository_url_should_clone(mocker, template_url, user_config_data):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template_url, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py:61
__________ ERROR at setup of test_repository_url_with_no_context_file __________
file /workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py, line 93
  def test_repository_url_with_no_context_file(mocker, template_url, user_config_data):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template_url, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/repository/test_determine_repo_dir_clones_repo.py:93
______________________ ERROR at setup of test_cli_replay _______________________
file /workspace/cookiecutter/tests/test_cli.py, line 104
  @pytest.mark.usefixtures('remove_fake_project_dir')
  def test_cli_replay(mocker, cli_runner):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:104
____________________ ERROR at setup of test_cli_replay_file ____________________
file /workspace/cookiecutter/tests/test_cli.py, line 131
  @pytest.mark.usefixtures('remove_fake_project_dir')
  def test_cli_replay_file(mocker, cli_runner):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:131
_________________ ERROR at setup of test_cli_replay_generated __________________
file /workspace/cookiecutter/tests/test_cli.py, line 158
  @pytest.mark.usefixtures('remove_tmp_dir')
  def test_cli_replay_generated(mocker, cli_runner):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:158
____________ ERROR at setup of test_cli_exit_on_noinput_and_replay _____________
file /workspace/cookiecutter/tests/test_cli.py, line 174
  @pytest.mark.usefixtures('remove_fake_project_dir')
  def test_cli_exit_on_noinput_and_replay(mocker, cli_runner):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:174
_ ERROR at setup of test_run_cookiecutter_on_overwrite_if_exists_and_replay[-f] _
file /workspace/cookiecutter/tests/test_cli.py, line 216
  @pytest.mark.usefixtures('remove_fake_project_dir')
  def test_run_cookiecutter_on_overwrite_if_exists_and_replay(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:216
_ ERROR at setup of test_run_cookiecutter_on_overwrite_if_exists_and_replay[--overwrite-if-exists] _
file /workspace/cookiecutter/tests/test_cli.py, line 216
  @pytest.mark.usefixtures('remove_fake_project_dir')
  def test_run_cookiecutter_on_overwrite_if_exists_and_replay(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:216
__________________ ERROR at setup of test_cli_output_dir[-o] ___________________
file /workspace/cookiecutter/tests/test_cli.py, line 277
  def test_cli_output_dir(mocker, cli_runner, output_dir_flag, output_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:277
_____________ ERROR at setup of test_cli_output_dir[--output-dir] ______________
file /workspace/cookiecutter/tests/test_cli.py, line 277
  def test_cli_output_dir(mocker, cli_runner, output_dir_flag, output_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:277
______________________ ERROR at setup of test_user_config ______________________
file /workspace/cookiecutter/tests/test_cli.py, line 322
  def test_user_config(mocker, cli_runner, user_config_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:322
_____________ ERROR at setup of test_default_user_config_overwrite _____________
file /workspace/cookiecutter/tests/test_cli.py, line 348
  def test_default_user_config_overwrite(mocker, cli_runner, user_config_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:348
__________________ ERROR at setup of test_default_user_config __________________
file /workspace/cookiecutter/tests/test_cli.py, line 379
  def test_default_user_config(mocker, cli_runner):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:379
___ ERROR at setup of test_cli_accept_hooks[-o---accept-hooks=yes-None-True] ___
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
___ ERROR at setup of test_cli_accept_hooks[-o---accept-hooks=no-None-False] ___
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
___ ERROR at setup of test_cli_accept_hooks[-o---accept-hooks=ask-yes-True] ____
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
___ ERROR at setup of test_cli_accept_hooks[-o---accept-hooks=ask-no-False] ____
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
_ ERROR at setup of test_cli_accept_hooks[--output-dir---accept-hooks=yes-None-True] _
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
_ ERROR at setup of test_cli_accept_hooks[--output-dir---accept-hooks=no-None-False] _
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
_ ERROR at setup of test_cli_accept_hooks[--output-dir---accept-hooks=ask-yes-True] _
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
_ ERROR at setup of test_cli_accept_hooks[--output-dir---accept-hooks=ask-no-False] _
file /workspace/cookiecutter/tests/test_cli.py, line 636
  @pytest.mark.parametrize(
      "accept_hooks_arg,user_input,expected", cli_accept_hook_arg_testdata
  )
  def test_cli_accept_hooks(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, cli_runner, clone_dir, cov, debug_file, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, help_cli_flag, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, make_fake_project_dir, metadata, monkeypatch, no_cover, output_dir, output_dir_flag, overwrite_cli_flag, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_fake_project_dir, remove_tmp_dir, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir, version_cli_flag
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cli.py:636
_____________ ERROR at setup of test_cookiecutter_template_cleanup _____________
file /workspace/cookiecutter/tests/test_cookiecutter_local_no_input.py, line 124
  @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
  def test_cookiecutter_template_cleanup(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_additional_dirs, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cookiecutter_local_no_input.py:124
_ ERROR at setup of test_cookiecutter_nested_templates[fake-nested-templates-fake-project] _
file /workspace/cookiecutter/tests/test_cookiecutter_nested_templates.py, line 10
  @pytest.mark.parametrize(
      "template_dir,output_dir",
      [
          ["fake-nested-templates", "fake-project"],
          ["fake-nested-templates-old-style", "fake-package"],
      ],
  )
  def test_cookiecutter_nested_templates(mocker, template_dir: str, output_dir: str):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cookiecutter_nested_templates.py:10
_ ERROR at setup of test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package] _
file /workspace/cookiecutter/tests/test_cookiecutter_nested_templates.py, line 10
  @pytest.mark.parametrize(
      "template_dir,output_dir",
      [
          ["fake-nested-templates", "fake-project"],
          ["fake-nested-templates-old-style", "fake-package"],
      ],
  )
  def test_cookiecutter_nested_templates(mocker, template_dir: str, output_dir: str):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_cookiecutter_nested_templates.py:10
_____________________ ERROR at setup of test_oserror_hooks _____________________
file /workspace/cookiecutter/tests/test_generate_hooks.py, line 90
  @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
  def test_oserror_hooks(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, remove_additional_folders, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_generate_hooks.py:90
__________________ ERROR at setup of test_specify_config_path __________________
file /workspace/cookiecutter/tests/test_get_user_config.py, line 99
  def test_specify_config_path(mocker, custom_config_path, custom_config):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, back_up_rc, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, custom_config, custom_config_path, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_get_user_config.py:99
_________________ ERROR at setup of test_force_default_config __________________
file /workspace/cookiecutter/tests/test_get_user_config.py, line 124
  def test_force_default_config(mocker, custom_config_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, back_up_rc, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, custom_config, custom_config_path, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_config_path, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_get_user_config.py:124
_________ ERROR at setup of TestExternalHooks.test_run_failing_script __________
file /workspace/cookiecutter/tests/test_hooks.py, line 149
      def test_run_failing_script(self, mocker):
E       fixture 'mocker' not found
>       available fixtures: _xunit_setup_method_fixture_TestExternalHooks, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, dir_with_hooks, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_hooks.py:149
_____ ERROR at setup of TestExternalHooks.test_run_failing_script_enoexec ______
file /workspace/cookiecutter/tests/test_hooks.py, line 160
      def test_run_failing_script_enoexec(self, mocker):
E       fixture 'mocker' not found
>       available fixtures: _xunit_setup_method_fixture_TestExternalHooks, anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, dir_with_hooks, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_hooks.py:160
_ ERROR at setup of test_original_cookiecutter_options_preserved_in__cookiecutter _
file /workspace/cookiecutter/tests/test_main.py, line 6
  def test_original_cookiecutter_options_preserved_in__cookiecutter(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_main.py:6
_______________ ERROR at setup of test_replay_dump_template_name _______________
file /workspace/cookiecutter/tests/test_main.py, line 32
  def test_replay_dump_template_name(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_main.py:32
_______________ ERROR at setup of test_replay_load_template_name _______________
file /workspace/cookiecutter/tests/test_main.py, line 65
  def test_replay_load_template_name(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_main.py:65
__________________ ERROR at setup of test_custom_replay_file ___________________
file /workspace/cookiecutter/tests/test_main.py, line 96
  def test_custom_replay_file(monkeypatch, mocker, user_config_file):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_main.py:96
________ ERROR at setup of TestRenderVariable.test_convert_to_str[1-1] _________
file /workspace/cookiecutter/tests/test_prompt.py, line 25
      @pytest.mark.parametrize(
          'raw_var, rendered_var',
          [
              (1, '1'),
              (True, True),
              ('foo', 'foo'),
              ('{{cookiecutter.project}}', 'foobar'),
              (None, None),
          ],
      )
      def test_convert_to_str(self, mocker, raw_var, rendered_var):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:25
_____ ERROR at setup of TestRenderVariable.test_convert_to_str[True-True] ______
file /workspace/cookiecutter/tests/test_prompt.py, line 25
      @pytest.mark.parametrize(
          'raw_var, rendered_var',
          [
              (1, '1'),
              (True, True),
              ('foo', 'foo'),
              ('{{cookiecutter.project}}', 'foobar'),
              (None, None),
          ],
      )
      def test_convert_to_str(self, mocker, raw_var, rendered_var):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:25
______ ERROR at setup of TestRenderVariable.test_convert_to_str[foo-foo] _______
file /workspace/cookiecutter/tests/test_prompt.py, line 25
      @pytest.mark.parametrize(
          'raw_var, rendered_var',
          [
              (1, '1'),
              (True, True),
              ('foo', 'foo'),
              ('{{cookiecutter.project}}', 'foobar'),
              (None, None),
          ],
      )
      def test_convert_to_str(self, mocker, raw_var, rendered_var):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:25
_ ERROR at setup of TestRenderVariable.test_convert_to_str[{{cookiecutter.project}}-foobar] _
file /workspace/cookiecutter/tests/test_prompt.py, line 25
      @pytest.mark.parametrize(
          'raw_var, rendered_var',
          [
              (1, '1'),
              (True, True),
              ('foo', 'foo'),
              ('{{cookiecutter.project}}', 'foobar'),
              (None, None),
          ],
      )
      def test_convert_to_str(self, mocker, raw_var, rendered_var):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:25
_____ ERROR at setup of TestRenderVariable.test_convert_to_str[None-None] ______
file /workspace/cookiecutter/tests/test_prompt.py, line 25
      @pytest.mark.parametrize(
          'raw_var, rendered_var',
          [
              (1, '1'),
              (True, True),
              ('foo', 'foo'),
              ('{{cookiecutter.project}}', 'foobar'),
              (None, None),
          ],
      )
      def test_convert_to_str(self, mocker, raw_var, rendered_var):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:25
___ ERROR at setup of TestReadUserChoice.test_should_invoke_read_user_choice ___
file /workspace/cookiecutter/tests/test_prompt.py, line 386
      def test_should_invoke_read_user_choice(self, mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:386
__ ERROR at setup of TestReadUserChoice.test_should_invoke_read_user_variable __
file /workspace/cookiecutter/tests/test_prompt.py, line 410
      def test_should_invoke_read_user_variable(self, mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:410
_______ ERROR at setup of TestReadUserChoice.test_should_render_choices ________
file /workspace/cookiecutter/tests/test_prompt.py, line 430
      def test_should_render_choices(self, mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:430
_ ERROR at setup of TestPromptChoiceForConfig.test_should_return_first_option_if_no_input _
file /workspace/cookiecutter/tests/test_prompt.py, line 484
      def test_should_return_first_option_if_no_input(self, mocker, choices, context):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, choices, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:484
___ ERROR at setup of TestPromptChoiceForConfig.test_should_read_user_choice ___
file /workspace/cookiecutter/tests/test_prompt.py, line 501
      def test_should_read_user_choice(self, mocker, choices, context):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, choices, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:501
_ ERROR at setup of TestReadUserYesNo.test_should_invoke_read_user_yes_no[True] _
file /workspace/cookiecutter/tests/test_prompt.py, line 522
      @pytest.mark.parametrize(
          'run_as_docker',
          (
              True,
              False,
          ),
      )
      def test_should_invoke_read_user_yes_no(self, mocker, run_as_docker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:522
_ ERROR at setup of TestReadUserYesNo.test_should_invoke_read_user_yes_no[False] _
file /workspace/cookiecutter/tests/test_prompt.py, line 522
      @pytest.mark.parametrize(
          'run_as_docker',
          (
              True,
              False,
          ),
      )
      def test_should_invoke_read_user_yes_no(self, mocker, run_as_docker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:522
___________ ERROR at setup of test_prompt_should_ask_and_rm_repo_dir ___________
file /workspace/cookiecutter/tests/test_prompt.py, line 645
  def test_prompt_should_ask_and_rm_repo_dir(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:645
_____ ERROR at setup of test_prompt_should_ask_and_exit_on_user_no_answer ______
file /workspace/cookiecutter/tests/test_prompt.py, line 661
  def test_prompt_should_ask_and_exit_on_user_no_answer(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:661
__________ ERROR at setup of test_prompt_should_ask_and_rm_repo_file ___________
file /workspace/cookiecutter/tests/test_prompt.py, line 680
  def test_prompt_should_ask_and_rm_repo_file(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:680
______ ERROR at setup of test_prompt_should_ask_and_keep_repo_on_no_reuse ______
file /workspace/cookiecutter/tests/test_prompt.py, line 697
  def test_prompt_should_ask_and_keep_repo_on_no_reuse(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:697
_______ ERROR at setup of test_prompt_should_ask_and_keep_repo_on_reuse ________
file /workspace/cookiecutter/tests/test_prompt.py, line 713
  def test_prompt_should_ask_and_keep_repo_on_reuse(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:713
___ ERROR at setup of test_prompt_should_not_ask_if_no_input_and_rm_repo_dir ___
file /workspace/cookiecutter/tests/test_prompt.py, line 733
  def test_prompt_should_not_ask_if_no_input_and_rm_repo_dir(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:733
__ ERROR at setup of test_prompt_should_not_ask_if_no_input_and_rm_repo_file ___
file /workspace/cookiecutter/tests/test_prompt.py, line 752
  def test_prompt_should_not_ask_if_no_input_and_rm_repo_file(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, patch_readline_on_win, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_prompt.py:752
___________________ ERROR at setup of test_click_invocation ____________________
file /workspace/cookiecutter/tests/test_read_repo_password.py, line 6
  def test_click_invocation(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_repo_password.py:6
_______________ ERROR at setup of test_click_invocation[1-hello] _______________
file /workspace/cookiecutter/tests/test_read_user_choice.py, line 18
  @pytest.mark.parametrize('user_choice, expected_value', enumerate(OPTIONS, 1))
  def test_click_invocation(mocker, user_choice, expected_value):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_choice.py:18
_______________ ERROR at setup of test_click_invocation[2-world] _______________
file /workspace/cookiecutter/tests/test_read_user_choice.py, line 18
  @pytest.mark.parametrize('user_choice, expected_value', enumerate(OPTIONS, 1))
  def test_click_invocation(mocker, user_choice, expected_value):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_choice.py:18
________________ ERROR at setup of test_click_invocation[3-foo] ________________
file /workspace/cookiecutter/tests/test_read_user_choice.py, line 18
  @pytest.mark.parametrize('user_choice, expected_value', enumerate(OPTIONS, 1))
  def test_click_invocation(mocker, user_choice, expected_value):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_choice.py:18
________________ ERROR at setup of test_click_invocation[4-bar] ________________
file /workspace/cookiecutter/tests/test_read_user_choice.py, line 18
  @pytest.mark.parametrize('user_choice, expected_value', enumerate(OPTIONS, 1))
  def test_click_invocation(mocker, user_choice, expected_value):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_choice.py:18
________________ ERROR at setup of test_should_raise_type_error ________________
file /workspace/cookiecutter/tests/test_read_user_dict.py, line 75
  def test_should_raise_type_error(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_dict.py:75
_________ ERROR at setup of test_should_call_prompt_with_process_json __________
file /workspace/cookiecutter/tests/test_read_user_dict.py, line 84
  def test_should_call_prompt_with_process_json(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_dict.py:84
__________ ERROR at setup of test_should_not_load_json_from_sentinel ___________
file /workspace/cookiecutter/tests/test_read_user_dict.py, line 99
  def test_should_not_load_json_from_sentinel(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_dict.py:99
___________ ERROR at setup of test_read_user_dict_default_value[\n] ____________
file /workspace/cookiecutter/tests/test_read_user_dict.py, line 112
  @pytest.mark.parametrize("input", ["\n", "\ndefault\n"])
  def test_read_user_dict_default_value(mocker, input):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_dict.py:112
_______ ERROR at setup of test_read_user_dict_default_value[\ndefault\n] _______
file /workspace/cookiecutter/tests/test_read_user_dict.py, line 112
  @pytest.mark.parametrize("input", ["\n", "\ndefault\n"])
  def test_read_user_dict_default_value(mocker, input):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_dict.py:112
___________________ ERROR at setup of test_click_invocation ____________________
file /workspace/cookiecutter/tests/test_read_user_variable.py, line 17
  def test_click_invocation(mock_prompt):
file /workspace/cookiecutter/tests/test_read_user_variable.py, line 11
  @pytest.fixture
  def mock_prompt(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_prompt, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_variable.py:11
__________ ERROR at setup of test_input_loop_with_null_default_value ___________
file /workspace/cookiecutter/tests/test_read_user_variable.py, line 29
  def test_input_loop_with_null_default_value(mock_prompt):
file /workspace/cookiecutter/tests/test_read_user_variable.py, line 11
  @pytest.fixture
  def mock_prompt(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_prompt, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_variable.py:11
___________________ ERROR at setup of test_click_invocation ____________________
file /workspace/cookiecutter/tests/test_read_user_yes_no.py, line 12
  def test_click_invocation(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_read_user_yes_no.py:12
____________________ ERROR at setup of test_api_invocation _____________________
file /workspace/cookiecutter/tests/test_specify_output_dir.py, line 48
  def test_api_invocation(mocker, template, output_dir, context):
file /workspace/cookiecutter/tests/test_specify_output_dir.py, line 30
  @pytest.fixture(autouse=True)
  def mock_gen_context(mocker, context):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_gen_context, mock_prompt, mock_replay, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_specify_output_dir.py:30
__________________ ERROR at setup of test_default_output_dir ___________________
file /workspace/cookiecutter/tests/test_specify_output_dir.py, line 65
  def test_default_output_dir(mocker, template, context):
file /workspace/cookiecutter/tests/test_specify_output_dir.py, line 30
  @pytest.fixture(autouse=True)
  def mock_gen_context(mocker, context):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, context, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, mock_gen_context, mock_prompt, mock_replay, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, template, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_specify_output_dir.py:30
_____________________ ERROR at setup of test_force_delete ______________________
file /workspace/cookiecutter/tests/test_utils.py, line 18
  def test_force_delete(mocker, tmp_path):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_utils.py:18
____ ERROR at setup of test_make_sure_path_exists_correctly_handle_os_error ____
file /workspace/cookiecutter/tests/test_utils.py, line 63
  def test_make_sure_path_exists_correctly_handle_os_error(mocker):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/test_utils.py:63
________ ERROR at setup of test_clone_should_raise_if_vcs_not_installed ________
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 11
  def test_clone_should_raise_if_vcs_not_installed(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:11
____ ERROR at setup of test_clone_should_rstrip_trailing_slash_in_repo_url _____
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 22
  def test_clone_should_rstrip_trailing_slash_in_repo_url(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:22
__ ERROR at setup of test_clone_should_abort_if_user_does_not_want_to_reclone __
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 41
  def test_clone_should_abort_if_user_does_not_want_to_reclone(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:41
________ ERROR at setup of test_clone_should_silent_exit_if_ok_to_reuse ________
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 64
  def test_clone_should_silent_exit_if_ok_to_reuse(mocker, tmpdir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:64
_ ERROR at setup of test_clone_should_invoke_vcs_command[git-https://github.com/hello/world.git-world] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 87
  @pytest.mark.parametrize(
      'repo_type, repo_url, repo_name',
      [
          ('git', 'https://github.com/hello/world.git', 'world'),
          ('hg', 'https://bitbucket.org/foo/bar', 'bar'),
          ('git', 'git@host:gitoliterepo', 'gitoliterepo'),
          ('git', 'git@gitlab.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
          ('git', 'git@github.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
      ],
  )
  def test_clone_should_invoke_vcs_command(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:87
_ ERROR at setup of test_clone_should_invoke_vcs_command[hg-https://bitbucket.org/foo/bar-bar] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 87
  @pytest.mark.parametrize(
      'repo_type, repo_url, repo_name',
      [
          ('git', 'https://github.com/hello/world.git', 'world'),
          ('hg', 'https://bitbucket.org/foo/bar', 'bar'),
          ('git', 'git@host:gitoliterepo', 'gitoliterepo'),
          ('git', 'git@gitlab.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
          ('git', 'git@github.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
      ],
  )
  def test_clone_should_invoke_vcs_command(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:87
_ ERROR at setup of test_clone_should_invoke_vcs_command[git-git@host:gitoliterepo-gitoliterepo] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 87
  @pytest.mark.parametrize(
      'repo_type, repo_url, repo_name',
      [
          ('git', 'https://github.com/hello/world.git', 'world'),
          ('hg', 'https://bitbucket.org/foo/bar', 'bar'),
          ('git', 'git@host:gitoliterepo', 'gitoliterepo'),
          ('git', 'git@gitlab.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
          ('git', 'git@github.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
      ],
  )
  def test_clone_should_invoke_vcs_command(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:87
_ ERROR at setup of test_clone_should_invoke_vcs_command[git-git@gitlab.com:cookiecutter/cookiecutter.git-cookiecutter] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 87
  @pytest.mark.parametrize(
      'repo_type, repo_url, repo_name',
      [
          ('git', 'https://github.com/hello/world.git', 'world'),
          ('hg', 'https://bitbucket.org/foo/bar', 'bar'),
          ('git', 'git@host:gitoliterepo', 'gitoliterepo'),
          ('git', 'git@gitlab.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
          ('git', 'git@github.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
      ],
  )
  def test_clone_should_invoke_vcs_command(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:87
_ ERROR at setup of test_clone_should_invoke_vcs_command[git-git@github.com:cookiecutter/cookiecutter.git-cookiecutter] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 87
  @pytest.mark.parametrize(
      'repo_type, repo_url, repo_name',
      [
          ('git', 'https://github.com/hello/world.git', 'world'),
          ('hg', 'https://bitbucket.org/foo/bar', 'bar'),
          ('git', 'git@host:gitoliterepo', 'gitoliterepo'),
          ('git', 'git@gitlab.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
          ('git', 'git@github.com:cookiecutter/cookiecutter.git', 'cookiecutter'),
      ],
  )
  def test_clone_should_invoke_vcs_command(
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:87
_ ERROR at setup of test_clone_handles_repo_typo[fatal: repository 'https://github.com/hackebro/cookiedozer' not found] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 139
  @pytest.mark.parametrize(
      'error_message',
      [
          (b"fatal: repository 'https://github.com/hackebro/cookiedozer' not found"),
          b'hg: abort: HTTP Error 404: Not Found',
      ],
  )
  def test_clone_handles_repo_typo(mocker, clone_dir, error_message):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:139
_ ERROR at setup of test_clone_handles_repo_typo[hg: abort: HTTP Error 404: Not Found] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 139
  @pytest.mark.parametrize(
      'error_message',
      [
          (b"fatal: repository 'https://github.com/hackebro/cookiedozer' not found"),
          b'hg: abort: HTTP Error 404: Not Found',
      ],
  )
  def test_clone_handles_repo_typo(mocker, clone_dir, error_message):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:139
_ ERROR at setup of test_clone_handles_branch_typo[error: pathspec 'unknown_branch' did not match any file(s) known to git] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 167
  @pytest.mark.parametrize(
      'error_message',
      [
          b"error: pathspec 'unknown_branch' did not match any file(s) known to git",
          b"hg: abort: unknown revision 'unknown_branch'!",
      ],
  )
  def test_clone_handles_branch_typo(mocker, clone_dir, error_message):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:167
_ ERROR at setup of test_clone_handles_branch_typo[hg: abort: unknown revision 'unknown_branch'!] _
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 167
  @pytest.mark.parametrize(
      'error_message',
      [
          b"error: pathspec 'unknown_branch' did not match any file(s) known to git",
          b"hg: abort: unknown revision 'unknown_branch'!",
      ],
  )
  def test_clone_handles_branch_typo(mocker, clone_dir, error_message):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:167
____________ ERROR at setup of test_clone_unknown_subprocess_error _____________
file /workspace/cookiecutter/tests/vcs/test_clone.py, line 198
  def test_clone_unknown_subprocess_error(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_clone.py:198
_______________ ERROR at setup of test_is_vcs_installed[-False] ________________
file /workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py, line 8
  @pytest.mark.parametrize(
      'which_return, result',
      [('', False), (None, False), (False, False), ('/usr/local/bin/git', True)],
  )
  def test_is_vcs_installed(mocker, which_return, result):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py:8
_____________ ERROR at setup of test_is_vcs_installed[None-False] ______________
file /workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py, line 8
  @pytest.mark.parametrize(
      'which_return, result',
      [('', False), (None, False), (False, False), ('/usr/local/bin/git', True)],
  )
  def test_is_vcs_installed(mocker, which_return, result):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py:8
_____________ ERROR at setup of test_is_vcs_installed[False-False] _____________
file /workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py, line 8
  @pytest.mark.parametrize(
      'which_return, result',
      [('', False), (None, False), (False, False), ('/usr/local/bin/git', True)],
  )
  def test_is_vcs_installed(mocker, which_return, result):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py:8
_______ ERROR at setup of test_is_vcs_installed[/usr/local/bin/git-True] _______
file /workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py, line 8
  @pytest.mark.parametrize(
      'which_return, result',
      [('', False), (None, False), (False, False), ('/usr/local/bin/git', True)],
  )
  def test_is_vcs_installed(mocker, which_return, result):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/vcs/test_is_vcs_installed.py:8
___________________ ERROR at setup of test_unzip_local_file ____________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 32
  def test_unzip_local_file(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:32
____ ERROR at setup of test_unzip_protected_local_file_environment_password ____
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 46
  def test_unzip_protected_local_file_environment_password(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:46
__ ERROR at setup of test_unzip_protected_local_file_bad_environment_password __
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 63
  def test_unzip_protected_local_file_bad_environment_password(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:63
_ ERROR at setup of test_unzip_protected_local_file_user_password_with_noinput _
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 78
  def test_unzip_protected_local_file_user_password_with_noinput(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:78
_______ ERROR at setup of test_unzip_protected_local_file_user_password ________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 93
  def test_unzip_protected_local_file_user_password(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:93
_____ ERROR at setup of test_unzip_protected_local_file_user_bad_password ______
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 110
  def test_unzip_protected_local_file_user_bad_password(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:110
____________________ ERROR at setup of test_empty_zip_file _____________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 127
  def test_empty_zip_file(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:127
___________________ ERROR at setup of test_non_repo_zip_file ___________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 139
  def test_non_repo_zip_file(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:139
_____________________ ERROR at setup of test_bad_zip_file ______________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 151
  def test_bad_zip_file(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:151
_______________________ ERROR at setup of test_unzip_url _______________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 163
  def test_unzip_url(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:163
______________ ERROR at setup of test_unzip_url_with_empty_chunks ______________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 188
  def test_unzip_url_with_empty_chunks(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:188
_______________ ERROR at setup of test_unzip_url_existing_cache ________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 213
  def test_unzip_url_existing_cache(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:213
___________ ERROR at setup of test_unzip_url_existing_cache_no_input ___________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 242
  def test_unzip_url_existing_cache_no_input(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:242
__________ ERROR at setup of test_unzip_should_abort_if_no_redownload __________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 267
  def test_unzip_should_abort_if_no_redownload(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:267
_________________ ERROR at setup of test_unzip_is_ok_to_reuse __________________
file /workspace/cookiecutter/tests/zipfile/test_unzip.py, line 290
  def test_unzip_is_ok_to_reuse(mocker, clone_dir):
E       fixture 'mocker' not found
>       available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, clean_system, clone_dir, cov, doctest_namespace, free_tcp_port, free_tcp_port_factory, free_udp_port, free_udp_port_factory, include_metadata_in_junit_xml, isolated_filesystem, json_metadata, metadata, monkeypatch, no_cover, output_dir, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, user_config_data, user_config_file, user_dir
>       use 'pytest --fixtures [testpath]' for help on them.

/workspace/cookiecutter/tests/zipfile/test_unzip.py:290
=================================== FAILURES ===================================
_____________________ test_type_error_if_no_template_name ______________________

replay_test_dir = 'tests/test-replay/'
context = {'cookiecutter': {'email': 'raphael@hackebrot.de', 'full_name': 'Raphael Pierzina', 'github_username': 'hackebrot', 'version': '0.1.0'}}

    def test_type_error_if_no_template_name(replay_test_dir, context):
        """Test that replay.dump raises if the template_name is not a valid str."""
>       with pytest.raises(TypeError):
E       Failed: DID NOT RAISE <class 'TypeError'>

tests/replay/test_dump.py:37: Failed
_____________________ test_type_error_if_not_dict_context ______________________

replay_test_dir = 'tests/test-replay/', template_name = 'cookiedozer'

    def test_type_error_if_not_dict_context(replay_test_dir, template_name):
        """Test that replay.dump raises if the context is not of type dict."""
>       with pytest.raises(TypeError):
E       Failed: DID NOT RAISE <class 'TypeError'>

tests/replay/test_dump.py:43: Failed
__________________ test_value_error_if_key_missing_in_context __________________

replay_test_dir = 'tests/test-replay/', template_name = 'cookiedozer'

    def test_value_error_if_key_missing_in_context(replay_test_dir, template_name):
        """Test that replay.dump raises if the context does not contain a key \
        named 'cookiecutter'."""
>       with pytest.raises(ValueError):
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/replay/test_dump.py:50: Failed
_____________________ test_type_error_if_no_template_name ______________________

replay_test_dir = 'tests/test-replay/'

    def test_type_error_if_no_template_name(replay_test_dir):
        """Test that replay.load raises if the template_name is not a valid str."""
>       with pytest.raises(TypeError):
E       Failed: DID NOT RAISE <class 'TypeError'>

tests/replay/test_load.py:26: Failed
________________________ test_get_replay_file_name[bar] ________________________

replay_file_name = 'bar'

    @pytest.mark.parametrize("replay_file_name", ['bar', 'bar.json'])
    def test_get_replay_file_name(replay_file_name):
        """Make sure that replay.get_file_name generates a valid json file path."""
        exp_replay_file_path = os.path.join('foo', 'bar.json')
        replay_file_path = replay.get_file_name('foo', replay_file_name)
>       assert replay_file_path == exp_replay_file_path
E       AssertionError: assert None == 'foo/bar.json'

tests/replay/test_replay.py:15: AssertionError
_____________________ test_get_replay_file_name[bar.json] ______________________

replay_file_name = 'bar.json'

    @pytest.mark.parametrize("replay_file_name", ['bar', 'bar.json'])
    def test_get_replay_file_name(replay_file_name):
        """Make sure that replay.get_file_name generates a valid json file path."""
        exp_replay_file_path = os.path.join('foo', 'bar.json')
        replay_file_path = replay.get_file_name('foo', replay_file_name)
>       assert replay_file_path == exp_replay_file_path
E       AssertionError: assert None == 'foo/bar.json'

tests/replay/test_replay.py:15: AssertionError
_________________ test_raise_on_invalid_mode[invalid_kwargs0] __________________

invalid_kwargs = {'no_input': True}

    @pytest.mark.parametrize(
        'invalid_kwargs',
        (
            {'no_input': True},
            {'extra_context': {}},
            {'no_input': True, 'extra_context': {}},
        ),
    )
    def test_raise_on_invalid_mode(invalid_kwargs):
        """Test `cookiecutter` raise exception on unacceptable `replay` request."""
>       with pytest.raises(exceptions.InvalidModeException):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>

tests/replay/test_replay.py:28: Failed
_________________ test_raise_on_invalid_mode[invalid_kwargs1] __________________

invalid_kwargs = {'extra_context': {}}

    @pytest.mark.parametrize(
        'invalid_kwargs',
        (
            {'no_input': True},
            {'extra_context': {}},
            {'no_input': True, 'extra_context': {}},
        ),
    )
    def test_raise_on_invalid_mode(invalid_kwargs):
        """Test `cookiecutter` raise exception on unacceptable `replay` request."""
>       with pytest.raises(exceptions.InvalidModeException):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>

tests/replay/test_replay.py:28: Failed
_________________ test_raise_on_invalid_mode[invalid_kwargs2] __________________

invalid_kwargs = {'extra_context': {}, 'no_input': True}

    @pytest.mark.parametrize(
        'invalid_kwargs',
        (
            {'no_input': True},
            {'extra_context': {}},
            {'no_input': True, 'extra_context': {}},
        ),
    )
    def test_raise_on_invalid_mode(invalid_kwargs):
        """Test `cookiecutter` raise exception on unacceptable `replay` request."""
>       with pytest.raises(exceptions.InvalidModeException):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>

tests/replay/test_replay.py:28: Failed
________________ test_abbreviation_expansion[Simple expansion] _________________

template = 'foo', abbreviations = {'foo': 'bar'}, expected_result = 'bar'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == 'bar'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
_ test_abbreviation_expansion[Skip expansion (expansion not an abbreviation)] __

template = 'baz', abbreviations = {'foo': 'bar'}, expected_result = 'baz'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == 'baz'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
________________ test_abbreviation_expansion[Expansion prefix] _________________

template = 'xx:a', abbreviations = {'xx': '<{0}>'}, expected_result = '<a>'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == '<a>'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
___________ test_abbreviation_expansion[expansion_override_builtin] ____________

template = 'gh:a', abbreviations = {'gh': '<{0}>'}, expected_result = '<a>'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == '<a>'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
_________ test_abbreviation_expansion[expansion_prefix_ignores_suffix] _________

template = 'xx:a', abbreviations = {'xx': '<>'}, expected_result = '<>'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == '<>'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
_ test_abbreviation_expansion[Correct expansion for builtin abbreviations (github)] _

template = 'gh:pydanny/cookiecutter-django'
abbreviations = {'bb': 'https://bitbucket.org/{0}', 'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git'}
expected_result = 'https://github.com/pydanny/cookiecutter-django.git'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == 'https://github.com/pydanny/cookiecutter-django.git'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
_ test_abbreviation_expansion[Correct expansion for builtin abbreviations (gitlab)] _

template = 'gl:pydanny/cookiecutter-django'
abbreviations = {'bb': 'https://bitbucket.org/{0}', 'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git'}
expected_result = 'https://gitlab.com/pydanny/cookiecutter-django.git'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == 'https://gitlab.com/pydanny/cookiecutter-django.git'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
_ test_abbreviation_expansion[Correct expansion for builtin abbreviations (bitbucket)] _

template = 'bb:pydanny/cookiecutter-django'
abbreviations = {'bb': 'https://bitbucket.org/{0}', 'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git'}
expected_result = 'https://bitbucket.org/pydanny/cookiecutter-django'

    @pytest.mark.parametrize(
        ('template', 'abbreviations', 'expected_result'),
        [
            ('foo', {'foo': 'bar'}, 'bar'),
            ('baz', {'foo': 'bar'}, 'baz'),
            ('xx:a', {'xx': '<{0}>'}, '<a>'),
            ('gh:a', {'gh': '<{0}>'}, '<a>'),
            ('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
E       AssertionError: assert None == 'https://bitbucket.org/pydanny/cookiecutter-django'

tests/repository/test_abbreviation_expansion.py:47: AssertionError
______________ test_abbreviation_expansion_prefix_not_0_in_braces ______________

    def test_abbreviation_expansion_prefix_not_0_in_braces():
        """Verify abbreviation unpacking raises error on incorrect index."""
>       with pytest.raises(IndexError):
E       Failed: DID NOT RAISE <class 'IndexError'>

tests/repository/test_abbreviation_expansion.py:52: Failed
____________________ test_should_find_existing_cookiecutter ____________________

template = 'cookiecutter-pytest-plugin'
user_config_data = {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutter_replay'}
cloned_cookiecutter_path = '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters/cookiecutter-pytest-plugin'

    def test_should_find_existing_cookiecutter(
        template, user_config_data, cloned_cookiecutter_path
    ):
        """
        Should find folder created by `cloned_cookiecutter_path` and return it.
    
        This folder is considered like previously cloned project directory.
        """
>       project_dir, cleanup = repository.determine_repo_dir(
            template=template,
            abbreviations={},
            clone_to_dir=user_config_data['cookiecutters_dir'],
            checkout=None,
            no_input=True,
        )
E       TypeError: cannot unpack non-iterable NoneType object

tests/repository/test_determine_repo_dir_finds_existing_cookiecutter.py:38: TypeError
____________________ test_should_find_existing_cookiecutter ____________________

template = 'cookiecutter-pytest-plugin'
user_config_data = {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutter_replay'}
cloned_cookiecutter_path = '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters/cookiecutter-pytest-plugin/my-dir'

    def test_should_find_existing_cookiecutter(
        template, user_config_data, cloned_cookiecutter_path
    ):
        """Find `cookiecutter.json` in sub folder created by `cloned_cookiecutter_path`."""
>       project_dir, cleanup = repository.determine_repo_dir(
            template=template,
            abbreviations={},
            clone_to_dir=user_config_data['cookiecutters_dir'],
            checkout=None,
            no_input=True,
            directory='my-dir',
        )
E       TypeError: cannot unpack non-iterable NoneType object

tests/repository/test_determine_repo_dir_finds_subdirectories.py:38: TypeError
_____________________________ test_local_repo_typo _____________________________

template = 'cookiecutter-pytest-plugin'
user_config_data = {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutter_replay'}
cloned_cookiecutter_path = '/tmp/pytest-of-openhands/pytest-11/user_dir0/cookiecutters/cookiecutter-pytest-plugin/my-dir'

    def test_local_repo_typo(template, user_config_data, cloned_cookiecutter_path):
        """Wrong pointing to `cookiecutter.json` sub-directory should raise."""
>       with pytest.raises(exceptions.RepositoryNotFound) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>

tests/repository/test_determine_repo_dir_finds_subdirectories.py:53: Failed
____________________________ test_finds_local_repo _____________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_finds_local_repo0')

    def test_finds_local_repo(tmp_path):
        """A valid local repository should be returned."""
>       project_dir, cleanup = repository.determine_repo_dir(
            'tests/fake-repo',
            abbreviations={},
            clone_to_dir=str(tmp_path),
            checkout=None,
            no_input=True,
        )
E       TypeError: cannot unpack non-iterable NoneType object

tests/repository/test_determine_repository_should_use_local_repo.py:12: TypeError
____________________ test_local_repo_with_no_context_raises ____________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_local_repo_with_no_contex0')

    def test_local_repo_with_no_context_raises(tmp_path):
        """A local repository without a cookiecutter.json should raise a \
        `RepositoryNotFound` exception."""
        template_path = str(Path('tests', 'fake-repo-bad'))
>       with pytest.raises(exceptions.RepositoryNotFound) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>

tests/repository/test_determine_repository_should_use_local_repo.py:28: Failed
_____________________________ test_local_repo_typo _____________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_local_repo_typo1')

    def test_local_repo_typo(tmp_path):
        """An unknown local repository should raise a `RepositoryNotFound` \
        exception."""
        template_path = str(Path('tests', 'unknown-repo'))
>       with pytest.raises(exceptions.RepositoryNotFound) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>

tests/repository/test_determine_repository_should_use_local_repo.py:52: Failed
____________________ test_is_zip_file[/path/to/zipfile.zip] ____________________

zipfile = '/path/to/zipfile.zip'

    def test_is_zip_file(zipfile):
        """Verify is_repo_url works."""
>       assert is_zip_file(zipfile) is True
E       AssertionError: assert None is True
E        +  where None = is_zip_file('/path/to/zipfile.zip')

tests/repository/test_is_repo_url.py:23: AssertionError
__________ test_is_zip_file[https://example.com/path/to/zipfile.zip] ___________

zipfile = 'https://example.com/path/to/zipfile.zip'

    def test_is_zip_file(zipfile):
        """Verify is_repo_url works."""
>       assert is_zip_file(zipfile) is True
E       AssertionError: assert None is True
E        +  where None = is_zip_file('https://example.com/path/to/zipfile.zip')

tests/repository/test_is_repo_url.py:23: AssertionError
___________ test_is_zip_file[http://example.com/path/to/zipfile.zip] ___________

zipfile = 'http://example.com/path/to/zipfile.zip'

    def test_is_zip_file(zipfile):
        """Verify is_repo_url works."""
>       assert is_zip_file(zipfile) is True
E       AssertionError: assert None is True
E        +  where None = is_zip_file('http://example.com/path/to/zipfile.zip')

tests/repository/test_is_repo_url.py:23: AssertionError
_________ test_is_repo_url_for_remote_urls[gitolite@server:team/repo] __________

remote_repo_url = 'gitolite@server:team/repo'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('gitolite@server:team/repo')

tests/repository/test_is_repo_url.py:44: AssertionError
_ test_is_repo_url_for_remote_urls[git@github.com:audreyfeldroy/cookiecutter.git] _

remote_repo_url = 'git@github.com:audreyfeldroy/cookiecutter.git'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('git@github.com:audreyfeldroy/cookiecutter.git')

tests/repository/test_is_repo_url.py:44: AssertionError
_ test_is_repo_url_for_remote_urls[https://github.com/cookiecutter/cookiecutter.git] _

remote_repo_url = 'https://github.com/cookiecutter/cookiecutter.git'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('https://github.com/cookiecutter/cookiecutter.git')

tests/repository/test_is_repo_url.py:44: AssertionError
______ test_is_repo_url_for_remote_urls[git+https://private.com/gitrepo] _______

remote_repo_url = 'git+https://private.com/gitrepo'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('git+https://private.com/gitrepo')

tests/repository/test_is_repo_url.py:44: AssertionError
____ test_is_repo_url_for_remote_urls[hg+https://private.com/mercurialrepo] ____

remote_repo_url = 'hg+https://private.com/mercurialrepo'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('hg+https://private.com/mercurialrepo')

tests/repository/test_is_repo_url.py:44: AssertionError
_ test_is_repo_url_for_remote_urls[https://bitbucket.org/pokoli/cookiecutter.hg] _

remote_repo_url = 'https://bitbucket.org/pokoli/cookiecutter.hg'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('https://bitbucket.org/pokoli/cookiecutter.hg')

tests/repository/test_is_repo_url.py:44: AssertionError
_______ test_is_repo_url_for_remote_urls[file://server/path/to/repo.git] _______

remote_repo_url = 'file://server/path/to/repo.git'

    def test_is_repo_url_for_remote_urls(remote_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(remote_repo_url) is True
E       AssertionError: assert None is True
E        +  where None = is_repo_url('file://server/path/to/repo.git')

tests/repository/test_is_repo_url.py:44: AssertionError
__________ test_is_repo_url_for_local_urls[/audreyr/cookiecutter.git] __________

local_repo_url = '/audreyr/cookiecutter.git'

    def test_is_repo_url_for_local_urls(local_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(local_repo_url) is False
E       AssertionError: assert None is False
E        +  where None = is_repo_url('/audreyr/cookiecutter.git')

tests/repository/test_is_repo_url.py:64: AssertionError
_________ test_is_repo_url_for_local_urls[/home/audreyr/cookiecutter] __________

local_repo_url = '/home/audreyr/cookiecutter'

    def test_is_repo_url_for_local_urls(local_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(local_repo_url) is False
E       AssertionError: assert None is False
E        +  where None = is_repo_url('/home/audreyr/cookiecutter')

tests/repository/test_is_repo_url.py:64: AssertionError
_ test_is_repo_url_for_local_urls[c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template] _

local_repo_url = 'c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template'

    def test_is_repo_url_for_local_urls(local_repo_url):
        """Verify is_repo_url works."""
>       assert is_repo_url(local_repo_url) is False
E       AssertionError: assert None is False
E        +  where None = is_repo_url('c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template')

tests/repository/test_is_repo_url.py:64: AssertionError
__________________________ test_expand_abbreviations ___________________________

    def test_expand_abbreviations():
        """Validate `repository.expand_abbreviations` correctly translate url."""
        template = 'gh:audreyfeldroy/cookiecutter-pypackage'
    
        # This is not a valid repo url just yet!
        # First `repository.expand_abbreviations` needs to translate it
>       assert is_repo_url(template) is False
E       AssertionError: assert None is False
E        +  where None = is_repo_url('gh:audreyfeldroy/cookiecutter-pypackage')

tests/repository/test_is_repo_url.py:73: AssertionError
____________________________ test_valid_repository _____________________________

    def test_valid_repository():
        """Validate correct response if `cookiecutter.json` file exist."""
>       assert repository_has_cookiecutter_json('tests/fake-repo')
E       AssertionError: assert None
E        +  where None = repository_has_cookiecutter_json('tests/fake-repo')

tests/repository/test_repository_has_cookiecutter_json.py:10: AssertionError
_____________ test_hooks_raises_errors[pre_gen_hook_raises_error] ______________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_hooks_raises_errors_pre_g0')
abort_pre_gen = 'yes', abort_post_gen = 'no'

    @pytest.mark.parametrize(
        ("abort_pre_gen", "abort_post_gen"),
        (("yes", "no"), ("no", "yes")),
        ids=("pre_gen_hook_raises_error", "post_gen_hook_raises_error"),
    )
    @pytest.mark.usefixtures("clean_system")
    def test_hooks_raises_errors(tmp_path, abort_pre_gen, abort_post_gen):
        """Verify pre- and pos-gen errors raises correct error code from script.
    
        This allows developers to make different error codes in their code,
        for different errors.
        """
        context = {
            "cookiecutter": {
                "repo_dir": "foobar",
                "abort_pre_gen": abort_pre_gen,
                "abort_post_gen": abort_post_gen,
            }
        }
    
        with pytest.raises(exceptions.FailedHookException) as error:
            generate.generate_files(
                repo_dir="tests/hooks-abort-render",
                context=context,
                output_dir=str(tmp_path),
            )
>           assert error.value.code == 5

tests/test_abort_generate_on_hook_error.py:39: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <ExceptionInfo for raises contextmanager>

    @property
    def value(self) -> E:
        """The exception value."""
>       assert self._excinfo is not None, (
            ".value can only be used after the context manager exits"
        )
E       AssertionError: .value can only be used after the context manager exits

/home/openhands/.local/lib/python3.10/site-packages/_pytest/_code/code.py:606: AssertionError
_____________ test_hooks_raises_errors[post_gen_hook_raises_error] _____________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_hooks_raises_errors_post_0')
abort_pre_gen = 'no', abort_post_gen = 'yes'

    @pytest.mark.parametrize(
        ("abort_pre_gen", "abort_post_gen"),
        (("yes", "no"), ("no", "yes")),
        ids=("pre_gen_hook_raises_error", "post_gen_hook_raises_error"),
    )
    @pytest.mark.usefixtures("clean_system")
    def test_hooks_raises_errors(tmp_path, abort_pre_gen, abort_post_gen):
        """Verify pre- and pos-gen errors raises correct error code from script.
    
        This allows developers to make different error codes in their code,
        for different errors.
        """
        context = {
            "cookiecutter": {
                "repo_dir": "foobar",
                "abort_pre_gen": abort_pre_gen,
                "abort_post_gen": abort_post_gen,
            }
        }
    
        with pytest.raises(exceptions.FailedHookException) as error:
            generate.generate_files(
                repo_dir="tests/hooks-abort-render",
                context=context,
                output_dir=str(tmp_path),
            )
>           assert error.value.code == 5

tests/test_abort_generate_on_hook_error.py:39: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <ExceptionInfo for raises contextmanager>

    @property
    def value(self) -> E:
        """The exception value."""
>       assert self._excinfo is not None, (
            ".value can only be used after the context manager exits"
        )
E       AssertionError: .value can only be used after the context manager exits

/home/openhands/.local/lib/python3.10/site-packages/_pytest/_code/code.py:606: AssertionError
_____________________________ test_cli_version[-V] _____________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
version_cli_flag = '-V'

    def test_cli_version(cli_runner, version_cli_flag):
        """Verify Cookiecutter version output by `cookiecutter` on cli invocation."""
        result = cli_runner(version_cli_flag)
        assert result.exit_code == 0
>       assert result.output.startswith('Cookiecutter')
E       AssertionError: assert False
E        +  where False = <built-in method startswith of str object at 0x71e89e16a1f0>('Cookiecutter')
E        +    where <built-in method startswith of str object at 0x71e89e16a1f0> = 'main, version 2.6.0\n'.startswith
E        +      where 'main, version 2.6.0\n' = <Result okay>.output

tests/test_cli.py:72: AssertionError
_________________________ test_cli_version[--version] __________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
version_cli_flag = '--version'

    def test_cli_version(cli_runner, version_cli_flag):
        """Verify Cookiecutter version output by `cookiecutter` on cli invocation."""
        result = cli_runner(version_cli_flag)
        assert result.exit_code == 0
>       assert result.output.startswith('Cookiecutter')
E       AssertionError: assert False
E        +  where False = <built-in method startswith of str object at 0x71e89e1c8fd0>('Cookiecutter')
E        +    where <built-in method startswith of str object at 0x71e89e1c8fd0> = 'main, version 2.6.0\n'.startswith
E        +      where 'main, version 2.6.0\n' = <Result okay>.output

tests/test_cli.py:72: AssertionError
_________________ test_cli_error_on_existing_output_directory __________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('make_fake_project_dir', 'remove_fake_project_dir')
    def test_cli_error_on_existing_output_directory(cli_runner):
        """Test cli invocation without `overwrite-if-exists` fail if dir exist."""
        result = cli_runner('tests/fake-repo-pre/', '--no-input')
>       assert result.exit_code != 0
E       assert 0 != 0
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:79: AssertionError
___________________________________ test_cli ___________________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli(cli_runner):
        """Test cli invocation work without flags if directory not exist."""
        result = cli_runner('tests/fake-repo-pre/', '--no-input')
        assert result.exit_code == 0
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:89: AssertionError
_______________________________ test_cli_verbose _______________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_verbose(cli_runner):
        """Test cli invocation display log if called with `verbose` flag."""
        result = cli_runner('tests/fake-repo-pre/', '--no-input', '-v')
        assert result.exit_code == 0
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:99: AssertionError
_______ test_cli_overwrite_if_exists_when_output_dir_does_not_exist[-f] ________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
overwrite_cli_flag = '-f'

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_overwrite_if_exists_when_output_dir_does_not_exist(
        cli_runner, overwrite_cli_flag
    ):
        """Test cli invocation with `overwrite-if-exists` and `no-input` flags.
    
        Case when output dir not exist.
        """
        result = cli_runner('tests/fake-repo-pre/', '--no-input', overwrite_cli_flag)
    
        assert result.exit_code == 0
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:257: AssertionError
_ test_cli_overwrite_if_exists_when_output_dir_does_not_exist[--overwrite-if-exists] _

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
overwrite_cli_flag = '--overwrite-if-exists'

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_overwrite_if_exists_when_output_dir_does_not_exist(
        cli_runner, overwrite_cli_flag
    ):
        """Test cli invocation with `overwrite-if-exists` and `no-input` flags.
    
        Case when output dir not exist.
        """
        result = cli_runner('tests/fake-repo-pre/', '--no-input', overwrite_cli_flag)
    
        assert result.exit_code == 0
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:257: AssertionError
_____________________________ test_cli_help[help] ______________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
help_cli_flag = 'help'

    def test_cli_help(cli_runner, help_cli_flag):
        """Test cli invocation display help message with `help` flag."""
        result = cli_runner(help_cli_flag)
        assert result.exit_code == 0
>       assert result.output.startswith('Usage')
E       AssertionError: assert False
E        +  where False = <built-in method startswith of str object at 0x71e8a09e4030>('Usage')
E        +    where <built-in method startswith of str object at 0x71e8a09e4030> = ''.startswith
E        +      where '' = <Result okay>.output

tests/test_cli.py:313: AssertionError
______________________ test_echo_undefined_variable_error ______________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_echo_undefined_variable_e0/output'
cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    def test_echo_undefined_variable_error(output_dir, cli_runner):
        """Cli invocation return error if variable undefined in template."""
        template_path = 'tests/undefined-variable/file-name/'
    
        result = cli_runner(
            '--no-input',
            '--default-config',
            '--output-dir',
            output_dir,
            template_path,
        )
    
>       assert result.exit_code == 1
E       assert 0 == 1
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:417: AssertionError
______________________ test_echo_unknown_extension_error _______________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_echo_unknown_extension_er0/output'
cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    def test_echo_unknown_extension_error(output_dir, cli_runner):
        """Cli return error if extension incorrectly defined in template."""
        template_path = 'tests/test-extensions/unknown/'
    
        result = cli_runner(
            '--no-input',
            '--default-config',
            '--output-dir',
            output_dir,
            template_path,
        )
    
>       assert result.exit_code == 1
E       assert 0 == 1
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:457: AssertionError
_____________________________ test_local_extension _____________________________

tmpdir = local('/tmp/pytest-of-openhands/pytest-11/test_local_extension0')
cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    def test_local_extension(tmpdir, cli_runner):
        """Test to verify correct work of extension, included in template."""
        output_dir = str(tmpdir.mkdir('output'))
        template_path = 'tests/test-extensions/local_extension/'
    
        result = cli_runner(
            '--no-input',
            '--default-config',
            '--output-dir',
            output_dir,
            template_path,
        )
        assert result.exit_code == 0
>       content = Path(output_dir, 'Foobar', 'HISTORY.rst').read_text()

tests/test_cli.py:475: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:1134: in read_text
    with self.open(mode='r', encoding=encoding, errors=errors) as f:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_local_extension0/output/Foobar/HISTORY.rst')
mode = 'r', buffering = -1, encoding = 'locale', errors = None, newline = None

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return self._accessor.open(self, mode, buffering, encoding, errors,
                                   newline)
E       FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pytest-of-openhands/pytest-11/test_local_extension0/output/Foobar/HISTORY.rst'

/usr/lib/python3.10/pathlib.py:1119: FileNotFoundError
______________________ test_local_extension_not_available ______________________

tmpdir = local('/tmp/pytest-of-openhands/pytest-11/test_local_extension_not_avail0')
cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    def test_local_extension_not_available(tmpdir, cli_runner):
        """Test handling of included but unavailable local extension."""
        context = {'cookiecutter': {'_extensions': ['foobar']}}
    
>       with pytest.raises(UnknownExtension) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownExtension'>

tests/test_cli.py:484: Failed
____________________________ test_cli_extra_context ____________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_extra_context(cli_runner):
        """Cli invocation replace content if called with replacement pairs."""
        result = cli_runner(
            'tests/fake-repo-pre/',
            '--no-input',
            '-v',
            'project_name=Awesomez',
        )
        assert result.exit_code == 0
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:500: AssertionError
____________________ test_cli_extra_context_invalid_format _____________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_extra_context_invalid_format(cli_runner):
        """Cli invocation raise error if called with unknown argument."""
        result = cli_runner(
            'tests/fake-repo-pre/',
            '--no-input',
            '-v',
            'ExtraContextWithNoEqualsSoInvalid',
        )
>       assert result.exit_code == 2
E       assert 0 == 2
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:514: AssertionError
_________________________ test_debug_file_non_verbose __________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
debug_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_non_verbose0/fake-repo.log')

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_debug_file_non_verbose(cli_runner, debug_file):
        """Test cli invocation writes log to `debug-file` if flag enabled.
    
        Case for normal log output.
        """
        assert not debug_file.exists()
    
        result = cli_runner(
            '--no-input',
            '--debug-file',
            str(debug_file),
            'tests/fake-repo-pre/',
        )
        assert result.exit_code == 0
    
>       assert debug_file.exists()
E       AssertionError: assert False
E        +  where False = exists()
E        +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_non_verbose0/fake-repo.log').exists

tests/test_cli.py:541: AssertionError
___________________________ test_debug_file_verbose ____________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
debug_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_verbose0/fake-repo.log')

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_debug_file_verbose(cli_runner, debug_file):
        """Test cli invocation writes log to `debug-file` if flag enabled.
    
        Case for verbose log output.
        """
        assert not debug_file.exists()
    
        result = cli_runner(
            '--verbose',
            '--no-input',
            '--debug-file',
            str(debug_file),
            'tests/fake-repo-pre/',
        )
        assert result.exit_code == 0
    
>       assert debug_file.exists()
E       AssertionError: assert False
E        +  where False = exists()
E        +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_verbose0/fake-repo.log').exists

tests/test_cli.py:568: AssertionError
_____________________ test_debug_list_installed_templates ______________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
debug_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_list_installed_temp0/fake-repo.log')
user_config_path = '/tmp/pytest-of-openhands/pytest-11/test_debug_list_installed_temp0/tests/config.yaml'

    @pytest.mark.usefixtures('make_fake_project_dir', 'remove_fake_project_dir')
    def test_debug_list_installed_templates(cli_runner, debug_file, user_config_path):
        """Verify --list-installed command correct invocation."""
        fake_template_dir = os.path.dirname(os.path.abspath('fake-project'))
        os.makedirs(os.path.dirname(user_config_path))
        # Single quotes in YAML will not parse escape codes (\).
        Path(user_config_path).write_text(f"cookiecutters_dir: '{fake_template_dir}'")
        Path("fake-project", "cookiecutter.json").write_text('{}')
    
        result = cli_runner(
            '--list-installed',
            '--config-file',
            user_config_path,
            str(debug_file),
        )
    
>       assert "1 installed templates:" in result.output
E       AssertionError: assert '1 installed templates:' in ''
E        +  where '' = <Result okay>.output

tests/test_cli.py:594: AssertionError
_________________ test_debug_list_installed_templates_failure __________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
debug_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_list_installed_temp1/fake-repo.log')
user_config_path = '/tmp/pytest-of-openhands/pytest-11/test_debug_list_installed_temp1/tests/config.yaml'

    def test_debug_list_installed_templates_failure(
        cli_runner, debug_file, user_config_path
    ):
        """Verify --list-installed command error on invocation."""
        os.makedirs(os.path.dirname(user_config_path))
        Path(user_config_path).write_text('cookiecutters_dir: "/notarealplace/"')
    
        result = cli_runner(
            '--list-installed', '--config-file', user_config_path, str(debug_file)
        )
    
>       assert "Error: Cannot list installed templates." in result.output
E       AssertionError: assert 'Error: Cannot list installed templates.' in ''
E        +  where '' = <Result okay>.output

tests/test_cli.py:609: AssertionError
_____________________________ test_directory_repo ______________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_directory_repo(cli_runner):
        """Test cli invocation works with `directory` option."""
        result = cli_runner(
            'tests/fake-repo-dir/',
            '--no-input',
            '-v',
            '--directory=my-dir',
        )
        assert result.exit_code == 0
>       assert os.path.isdir("fake-project")
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:623: AssertionError
______________________ test_cli_with_json_decoding_error _______________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_with_json_decoding_error(cli_runner):
        """Test cli invocation with a malformed JSON file."""
        template_path = 'tests/fake-repo-bad-json/'
        result = cli_runner(template_path, '--no-input')
>       assert result.exit_code != 0
E       assert 0 != 0
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:680: AssertionError
________________________ test_cli_with_pre_prompt_hook _________________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>

    @pytest.mark.usefixtures('remove_fake_project_dir')
    def test_cli_with_pre_prompt_hook(cli_runner):
        """Test cli invocation in a template with pre_prompt hook."""
        template_path = 'tests/test-pyhooks/'
        result = cli_runner(template_path, '--no-input')
        assert result.exit_code == 0
        dir_name = 'inputfake-project'
>       assert os.path.isdir(dir_name)
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('inputfake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cli.py:701: AssertionError
______________________ test_cli_with_pre_prompt_hook_fail ______________________

cli_runner = <function cli_runner.<locals>.cli_main at 0x71e89e2b65f0>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e349e70>

    def test_cli_with_pre_prompt_hook_fail(cli_runner, monkeypatch):
        """Test cli invocation will fail when a given env var is present."""
        template_path = 'tests/test-pyhooks/'
        with monkeypatch.context() as m:
            m.setenv('COOKIECUTTER_FAIL_PRE_PROMPT', '1')
            result = cli_runner(template_path, '--no-input')
>       assert result.exit_code == 1
E       assert 0 == 1
E        +  where 0 = <Result okay>.exit_code

tests/test_cli.py:712: AssertionError
___________________________ test_should_invoke_main ____________________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e447df0>
project_dir = 'fake-project-templated'

    @pytest.mark.usefixtures('clean_system')
    def test_should_invoke_main(monkeypatch, project_dir):
        """Should create a project and exit with 0 code on cli invocation."""
        monkeypatch.setenv('PYTHONPATH', '.')
    
>       exit_code = subprocess.check_call(
            [sys.executable, '-m', 'cookiecutter.cli', 'tests/fake-repo-tmpl', '--no-input']
        )

tests/test_cookiecutter_invocation.py:31: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

popenargs = (['/usr/bin/python', '-m', 'cookiecutter.cli', 'tests/fake-repo-tmpl', '--no-input'],)
kwargs = {}, retcode = 1
cmd = ['/usr/bin/python', '-m', 'cookiecutter.cli', 'tests/fake-repo-tmpl', '--no-input']

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.
    
        The arguments are the same as for the call function.  Example:
    
        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command '['/usr/bin/python', '-m', 'cookiecutter.cli', 'tests/fake-repo-tmpl', '--no-input']' returned non-zero exit status 1.

/usr/lib/python3.10/subprocess.py:369: CalledProcessError
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/workspace/cookiecutter/cookiecutter/cli.py", line 6, in <module>
    import click
ModuleNotFoundError: No module named 'click'
_____ test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre/] ______

path = 'tests/fake-repo-pre/'

    @pytest.mark.parametrize('path', ['tests/fake-repo-pre/', 'tests/fake-repo-pre'])
    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_no_input_return_project_dir(path):
        """Verify `cookiecutter` create project dir on input with or without slash."""
        project_dir = main.cookiecutter(path, no_input=True)
        assert os.path.isdir('tests/fake-repo-pre/{{cookiecutter.repo_name}}')
        assert not os.path.isdir('tests/fake-repo-pre/fake-project')
>       assert os.path.isdir(project_dir)

tests/test_cookiecutter_local_no_input.py:42: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

s = None

    def isdir(s):
        """Return true if the pathname refers to an existing directory."""
        try:
>           st = os.stat(s)
E           TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

/usr/lib/python3.10/genericpath.py:42: TypeError
______ test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre] ______

path = 'tests/fake-repo-pre'

    @pytest.mark.parametrize('path', ['tests/fake-repo-pre/', 'tests/fake-repo-pre'])
    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_no_input_return_project_dir(path):
        """Verify `cookiecutter` create project dir on input with or without slash."""
        project_dir = main.cookiecutter(path, no_input=True)
        assert os.path.isdir('tests/fake-repo-pre/{{cookiecutter.repo_name}}')
        assert not os.path.isdir('tests/fake-repo-pre/fake-project')
>       assert os.path.isdir(project_dir)

tests/test_cookiecutter_local_no_input.py:42: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

s = None

    def isdir(s):
        """Return true if the pathname refers to an existing directory."""
        try:
>           st = os.stat(s)
E           TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

/usr/lib/python3.10/genericpath.py:42: TypeError
___________________ test_cookiecutter_no_input_extra_context ___________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_no_input_extra_context():
        """Verify `cookiecutter` accept `extra_context` argument."""
        main.cookiecutter(
            'tests/fake-repo-pre',
            no_input=True,
            extra_context={'repo_name': 'fake-project-extra'},
        )
>       assert os.path.isdir('fake-project-extra')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-extra')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_no_input.py:55: AssertionError
_____________________ test_cookiecutter_templated_context ______________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_templated_context():
        """Verify Jinja2 templating correctly works in `cookiecutter.json` file."""
        main.cookiecutter('tests/fake-repo-tmpl', no_input=True)
>       assert os.path.isdir('fake-project-templated')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-templated')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_no_input.py:62: AssertionError
_______________ test_cookiecutter_no_input_return_rendered_file ________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_no_input_return_rendered_file():
        """Verify Jinja2 templating correctly works in `cookiecutter.json` file."""
        project_dir = main.cookiecutter('tests/fake-repo-pre', no_input=True)
>       assert project_dir == os.path.abspath('fake-project')
E       AssertionError: assert None == '/workspace/cookiecutter/fake-project'
E        +  where '/workspace/cookiecutter/fake-project' = <function abspath at 0x71e8a08eedd0>('fake-project')
E        +    where <function abspath at 0x71e8a08eedd0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.abspath
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_no_input.py:69: AssertionError
___________________ test_cookiecutter_dict_values_in_context ___________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_dict_values_in_context():
        """Verify configured dictionary from `cookiecutter.json` correctly unpacked."""
        project_dir = main.cookiecutter('tests/fake-repo-dict', no_input=True)
>       assert project_dir == os.path.abspath('fake-project-dict')
E       AssertionError: assert None == '/workspace/cookiecutter/fake-project-dict'
E        +  where '/workspace/cookiecutter/fake-project-dict' = <function abspath at 0x71e8a08eedd0>('fake-project-dict')
E        +    where <function abspath at 0x71e8a08eedd0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.abspath
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_no_input.py:78: AssertionError
______________________ test_cookiecutter_local_with_input ______________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e06e500>

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_local_with_input(monkeypatch):
        """Verify simple cookiecutter run results, without extra_context provided."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
        main.cookiecutter('tests/fake-repo-pre/', no_input=False)
        assert os.path.isdir('tests/fake-repo-pre/{{cookiecutter.repo_name}}')
        assert not os.path.isdir('tests/fake-repo-pre/fake-project')
>       assert os.path.isdir('fake-project')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_with_input.py:30: AssertionError
____________________ test_cookiecutter_input_extra_context _____________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e06d450>

    @pytest.mark.usefixtures('clean_system', 'remove_additional_dirs')
    def test_cookiecutter_input_extra_context(monkeypatch):
        """Verify simple cookiecutter run results, with extra_context provided."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
        main.cookiecutter(
            'tests/fake-repo-pre',
            no_input=False,
            extra_context={'repo_name': 'fake-project-input-extra'},
        )
>       assert os.path.isdir('fake-project-input-extra')
E       AssertionError: assert False
E        +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-input-extra')
E        +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_cookiecutter_local_with_input.py:47: AssertionError
____________________ test_hook_with_extension[pre_gen_hook] ____________________

template = 'tests/test-extensions/custom-extension-pre'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_hook_with_extension_pre_g0/output'

    def test_hook_with_extension(template, output_dir):
        """Verify custom Jinja2 extension correctly work in hooks and file rendering.
    
        Each file in hooks has simple tests inside and will raise error if not
        correctly rendered.
        """
        project_dir = main.cookiecutter(
            template,
            no_input=True,
            output_dir=output_dir,
            extra_context={'project_slug': 'foobar', 'name': 'Cookiemonster'},
        )
    
>       readme = Path(project_dir, 'README.rst').read_text(encoding="utf-8")

tests/test_custom_extensions_in_hooks.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'README.rst')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
___________________ test_hook_with_extension[post_gen_hook] ____________________

template = 'tests/test-extensions/custom-extension-post'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_hook_with_extension_post_0/output'

    def test_hook_with_extension(template, output_dir):
        """Verify custom Jinja2 extension correctly work in hooks and file rendering.
    
        Each file in hooks has simple tests inside and will raise error if not
        correctly rendered.
        """
        project_dir = main.cookiecutter(
            template,
            no_input=True,
            output_dir=output_dir,
            extra_context={'project_slug': 'foobar', 'name': 'Cookiemonster'},
        )
    
>       readme = Path(project_dir, 'README.rst').read_text(encoding="utf-8")

tests/test_custom_extensions_in_hooks.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'README.rst')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
__________________________ test_jinja2_time_extension __________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_jinja2_time_extension0')

    def test_jinja2_time_extension(tmp_path):
        """Verify Jinja2 time extension work correctly."""
        project_dir = cookiecutter(
            'tests/test-extensions/default/', no_input=True, output_dir=str(tmp_path)
        )
>       changelog_file = os.path.join(project_dir, 'HISTORY.rst')

tests/test_default_extensions.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a = None, p = ('HISTORY.rst',)

    def join(a, *p):
        """Join two or more pathname components, inserting '/' as needed.
        If any component is an absolute path, all previous path components
        will be discarded.  An empty last part will result in a path that
        ends with a separator."""
>       a = os.fspath(a)
E       TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/posixpath.py:76: TypeError
________________________ test_jinja2_slugify_extension _________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_jinja2_slugify_extension0')

    def test_jinja2_slugify_extension(tmp_path):
        """Verify Jinja2 slugify extension work correctly."""
        project_dir = cookiecutter(
            'tests/test-extensions/default/', no_input=True, output_dir=str(tmp_path)
        )
    
>       assert os.path.basename(project_dir) == "it-s-slugified-foobar"

tests/test_default_extensions.py:51: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

p = None

    def basename(p):
        """Returns the final component of a pathname"""
>       p = os.fspath(p)
E       TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/posixpath.py:142: TypeError
__________________________ test_jinja2_uuid_extension __________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_jinja2_uuid_extension0')

    def test_jinja2_uuid_extension(tmp_path):
        """Verify Jinja2 uuid extension work correctly."""
        project_dir = cookiecutter(
            'tests/test-extensions/default/', no_input=True, output_dir=str(tmp_path)
        )
>       changelog_file = os.path.join(project_dir, 'id')

tests/test_default_extensions.py:59: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a = None, p = ('id',)

    def join(a, *p):
        """Join two or more pathname components, inserting '/' as needed.
        If any component is an absolute path, all previous path components
        will be discarded.  An empty last part will result in a path that
        ends with a separator."""
>       a = os.fspath(a)
E       TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/posixpath.py:76: TypeError
_________________ test_env_should_raise_for_unknown_extension __________________

    def test_env_should_raise_for_unknown_extension():
        """Test should raise if extension not installed in system."""
        context = {'cookiecutter': {'_extensions': ['foobar']}}
    
>       with pytest.raises(UnknownExtension) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownExtension'>

tests/test_environment.py:13: Failed
___________ test_find_template[template with default jinja strings] ____________

repo_name = 'fake-repo-pre'
env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e127880>
error_expectation = <contextlib.nullcontext object at 0x71e89e52ab90>
expected = '{{cookiecutter.repo_name}}'

    @pytest.mark.parametrize(
        "repo_name,context,error_expectation,expected",
        [
            ("fake-repo-pre", {}, does_not_raise(), '{{cookiecutter.repo_name}}'),
            (
                "fake-repo-pre2",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                does_not_raise(),
                '{%{cookiecutter.repo_name}%}',
            ),
            (
                "fake-repo-pre",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                pytest.raises(NonTemplatedInputDirException),
                None,
            ),
            ("fake-repo-bad", {}, pytest.raises(NonTemplatedInputDirException), None),
        ],
        ids=[
            'template with default jinja strings',
            'template with custom jinja strings',
            'template with custom jinja strings but folder with default jinja strings',
            'template missing folder',
        ],
    )
    def test_find_template(repo_name, env, error_expectation, expected):
        """Verify correctness of `find.find_template` path detection."""
        repo_dir = Path('tests', repo_name)
    
        with error_expectation:
            template = find.find_template(repo_dir, env)
    
            test_dir = Path(repo_dir, expected)
>           assert template == test_dir
E           AssertionError: assert None == PosixPath('tests/fake-repo-pre/{{cookiecutter.repo_name}}')

tests/test_find.py:72: AssertionError
____________ test_find_template[template with custom jinja strings] ____________

repo_name = 'fake-repo-pre2'
env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e1f5ed0>
error_expectation = <contextlib.nullcontext object at 0x71e89e52abf0>
expected = '{%{cookiecutter.repo_name}%}'

    @pytest.mark.parametrize(
        "repo_name,context,error_expectation,expected",
        [
            ("fake-repo-pre", {}, does_not_raise(), '{{cookiecutter.repo_name}}'),
            (
                "fake-repo-pre2",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                does_not_raise(),
                '{%{cookiecutter.repo_name}%}',
            ),
            (
                "fake-repo-pre",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                pytest.raises(NonTemplatedInputDirException),
                None,
            ),
            ("fake-repo-bad", {}, pytest.raises(NonTemplatedInputDirException), None),
        ],
        ids=[
            'template with default jinja strings',
            'template with custom jinja strings',
            'template with custom jinja strings but folder with default jinja strings',
            'template missing folder',
        ],
    )
    def test_find_template(repo_name, env, error_expectation, expected):
        """Verify correctness of `find.find_template` path detection."""
        repo_dir = Path('tests', repo_name)
    
        with error_expectation:
            template = find.find_template(repo_dir, env)
    
            test_dir = Path(repo_dir, expected)
>           assert template == test_dir
E           AssertionError: assert None == PosixPath('tests/fake-repo-pre2/{%{cookiecutter.repo_name}%}')

tests/test_find.py:72: AssertionError
_ test_find_template[template with custom jinja strings but folder with default jinja strings] _

repo_name = 'fake-repo-pre'
env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e05cfd0>
error_expectation = RaisesExc(NonTemplatedInputDirException), expected = None

    @pytest.mark.parametrize(
        "repo_name,context,error_expectation,expected",
        [
            ("fake-repo-pre", {}, does_not_raise(), '{{cookiecutter.repo_name}}'),
            (
                "fake-repo-pre2",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                does_not_raise(),
                '{%{cookiecutter.repo_name}%}',
            ),
            (
                "fake-repo-pre",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                pytest.raises(NonTemplatedInputDirException),
                None,
            ),
            ("fake-repo-bad", {}, pytest.raises(NonTemplatedInputDirException), None),
        ],
        ids=[
            'template with default jinja strings',
            'template with custom jinja strings',
            'template with custom jinja strings but folder with default jinja strings',
            'template missing folder',
        ],
    )
    def test_find_template(repo_name, env, error_expectation, expected):
        """Verify correctness of `find.find_template` path detection."""
        repo_dir = Path('tests', repo_name)
    
        with error_expectation:
            template = find.find_template(repo_dir, env)
    
>           test_dir = Path(repo_dir, expected)

tests/test_find.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>
args = (PosixPath('tests/fake-repo-pre'), None)

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
_________________ test_find_template[template missing folder] __________________

repo_name = 'fake-repo-bad'
env = <cookiecutter.environment.StrictEnvironment object at 0x71e89da6a260>
error_expectation = RaisesExc(NonTemplatedInputDirException), expected = None

    @pytest.mark.parametrize(
        "repo_name,context,error_expectation,expected",
        [
            ("fake-repo-pre", {}, does_not_raise(), '{{cookiecutter.repo_name}}'),
            (
                "fake-repo-pre2",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                does_not_raise(),
                '{%{cookiecutter.repo_name}%}',
            ),
            (
                "fake-repo-pre",
                {
                    'cookiecutter': {
                        '_jinja2_env_vars': {
                            'variable_start_string': '{%{',
                            'variable_end_string': '}%}',
                        }
                    }
                },
                pytest.raises(NonTemplatedInputDirException),
                None,
            ),
            ("fake-repo-bad", {}, pytest.raises(NonTemplatedInputDirException), None),
        ],
        ids=[
            'template with default jinja strings',
            'template with custom jinja strings',
            'template with custom jinja strings but folder with default jinja strings',
            'template missing folder',
        ],
    )
    def test_find_template(repo_name, env, error_expectation, expected):
        """Verify correctness of `find.find_template` path detection."""
        repo_dir = Path('tests', repo_name)
    
        with error_expectation:
            template = find.find_template(repo_dir, env)
    
>           test_dir = Path(repo_dir, expected)

tests/test_find.py:71: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>
args = (PosixPath('tests/fake-repo-bad'), None)

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
____________ test_generate_context[input_params0-expected_context0] ____________

input_params = {'context_file': 'tests/test-generate-context/test.json'}
expected_context = {'test': {'1': 2, 'some_key': 'some_val'}}

    @pytest.mark.usefixtures('clean_system')
    @pytest.mark.parametrize('input_params, expected_context', context_data())
    def test_generate_context(input_params, expected_context):
        """Verify input contexts combinations result in expected content on output."""
>       assert generate.generate_context(**input_params) == expected_context
E       AssertionError: assert None == {'test': {'1': 2, 'some_key': 'some_val'}}
E        +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json'})
E        +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context

tests/test_generate_context.py:58: AssertionError
____________ test_generate_context[input_params1-expected_context1] ____________

input_params = {'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}}
expected_context = {'test': {'1': 3, 'some_key': 'some_val'}}

    @pytest.mark.usefixtures('clean_system')
    @pytest.mark.parametrize('input_params, expected_context', context_data())
    def test_generate_context(input_params, expected_context):
        """Verify input contexts combinations result in expected content on output."""
>       assert generate.generate_context(**input_params) == expected_context
E       AssertionError: assert None == {'test': {'1': 3, 'some_key': 'some_val'}}
E        +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}})
E        +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context

tests/test_generate_context.py:58: AssertionError
____________ test_generate_context[input_params2-expected_context2] ____________

input_params = {'context_file': 'tests/test-generate-context/test.json', 'extra_context': {'1': 4}}
expected_context = {'test': {'1': 4, 'some_key': 'some_val'}}

    @pytest.mark.usefixtures('clean_system')
    @pytest.mark.parametrize('input_params, expected_context', context_data())
    def test_generate_context(input_params, expected_context):
        """Verify input contexts combinations result in expected content on output."""
>       assert generate.generate_context(**input_params) == expected_context
E       AssertionError: assert None == {'test': {'1': 4, 'some_key': 'some_val'}}
E        +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'extra_context': {'1': 4}})
E        +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context

tests/test_generate_context.py:58: AssertionError
____________ test_generate_context[input_params3-expected_context3] ____________

input_params = {'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}, 'extra_context': {'1': 5}}
expected_context = {'test': {'1': 5, 'some_key': 'some_val'}}

    @pytest.mark.usefixtures('clean_system')
    @pytest.mark.parametrize('input_params, expected_context', context_data())
    def test_generate_context(input_params, expected_context):
        """Verify input contexts combinations result in expected content on output."""
>       assert generate.generate_context(**input_params) == expected_context
E       AssertionError: assert None == {'test': {'1': 5, 'some_key': 'some_val'}}
E        +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}, 'extra_context': {'1': 5}})
E        +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context

tests/test_generate_context.py:58: AssertionError
________________ test_generate_context_with_json_decoding_error ________________

    @pytest.mark.usefixtures('clean_system')
    def test_generate_context_with_json_decoding_error():
        """Verify malformed JSON file generates expected error output."""
>       with pytest.raises(ContextDecodingException) as excinfo:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.ContextDecodingException'>

tests/test_generate_context.py:64: Failed
_____________ test_default_context_replacement_in_generate_context _____________

    def test_default_context_replacement_in_generate_context():
        """Verify default content settings are correctly replaced by template settings.
    
        Make sure that the default for list variables of `orientation` is based on
        the user config (`choices_template.json`) and not changed to a single value
        from `default_context`.
        """
        expected_context = {
            'choices_template': OrderedDict(
                [
                    ('full_name', 'Raphael Pierzina'),
                    ('github_username', 'hackebrot'),
                    ('project_name', 'Kivy Project'),
                    ('repo_name', '{{cookiecutter.project_name|lower}}'),
                    ('orientation', ['landscape', 'all', 'portrait']),
                ]
            )
        }
    
        generated_context = generate.generate_context(
            context_file='tests/test-generate-context/choices_template.json',
            default_context={
                'not_in_template': 'foobar',
                'project_name': 'Kivy Project',
                'orientation': 'landscape',
            },
            extra_context={
                'also_not_in_template': 'foobar2',
                'github_username': 'hackebrot',
            },
        )
    
>       assert generated_context == expected_context
E       AssertionError: assert None == {'choices_template': OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['landscape', 'all', 'portrait'])])}

tests/test_generate_context.py:109: AssertionError
________________ test_generate_context_decodes_non_ascii_chars _________________

    def test_generate_context_decodes_non_ascii_chars():
        """Verify `generate_context` correctly decodes non-ascii chars."""
        expected_context = {
            'non_ascii': OrderedDict(
                [
                    ('full_name', 'éèà'),
                ]
            )
        }
    
        generated_context = generate.generate_context(
            context_file='tests/test-generate-context/non_ascii.json'
        )
    
>       assert generated_context == expected_context
E       AssertionError: assert None == {'non_ascii': OrderedDict([('full_name', '\xe9\xe8\xe0')])}

tests/test_generate_context.py:126: AssertionError
__________________ test_apply_overwrites_sets_non_list_value ___________________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_sets_non_list_value(template_context):
        """Verify `apply_overwrites_to_context` work with string variables."""
        generate.apply_overwrites_to_context(
            context=template_context, overwrite_context={'repo_name': 'foobar'}
        )
    
>       assert template_context['repo_name'] == 'foobar'
E       AssertionError: assert '{{cookiecutter.project_name|lower}}' == 'foobar'
E         
E         - foobar
E         + {{cookiecutter.project_name|lower}}

tests/test_generate_context.py:166: AssertionError
_____ test_apply_overwrites_does_not_modify_choices_for_invalid_overwrite ______

    def test_apply_overwrites_does_not_modify_choices_for_invalid_overwrite():
        """Verify variables overwrite for list if variable not in list ignored."""
        expected_context = {
            'choices_template': OrderedDict(
                [
                    ('full_name', 'Raphael Pierzina'),
                    ('github_username', 'hackebrot'),
                    ('project_name', 'Kivy Project'),
                    ('repo_name', '{{cookiecutter.project_name|lower}}'),
                    ('orientation', ['all', 'landscape', 'portrait']),
                ]
            )
        }
    
>       with pytest.warns(UserWarning, match="Invalid default received"):
E       Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted.
E        Emitted warnings: [].

tests/test_generate_context.py:183: Failed
___________________ test_apply_overwrites_invalid_overwrite ____________________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_invalid_overwrite(template_context):
        """Verify variables overwrite for list if variable not in list not ignored."""
>       with pytest.raises(ValueError):
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_generate_context.py:202: Failed
________________ test_apply_overwrites_sets_multichoice_values _________________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_sets_multichoice_values(template_context):
        """Verify variable overwrite for list given multiple valid values."""
        generate.apply_overwrites_to_context(
            context=template_context,
            overwrite_context={'deployment_regions': ['eu']},
        )
>       assert template_context['deployment_regions'] == ['eu']
E       AssertionError: assert ['eu', 'us', 'ap'] == ['eu']
E         
E         Left contains 2 more items, first extra item: 'us'
E         
E         Full diff:
E           [
E               'eu',
E         +     'us',
E         +     'ap',
E           ]

tests/test_generate_context.py:214: AssertionError
_______________ test_apply_overwrites_invalid_multichoice_values _______________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_invalid_multichoice_values(template_context):
        """Verify variable overwrite for list given invalid list entries not ignored."""
>       with pytest.raises(ValueError):
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_generate_context.py:219: Failed
________________ test_apply_overwrites_error_additional_values _________________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_error_additional_values(template_context):
        """Verify variable overwrite for list given additional entries not ignored."""
>       with pytest.raises(ValueError):
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_generate_context.py:228: Failed
____________________ test_apply_overwrites_in_dictionaries _____________________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_in_dictionaries(template_context):
        """Verify variable overwrite for lists nested in dictionary variables."""
        generate.apply_overwrites_to_context(
            context=template_context,
            overwrite_context={'deployments': {'preprod': ['eu'], 'prod': ['ap']}},
        )
>       assert template_context['deployments']['preprod'] == ['eu']
E       AssertionError: assert ['eu', 'us', 'ap'] == ['eu']
E         
E         Left contains 2 more items, first extra item: 'us'
E         
E         Full diff:
E           [
E               'eu',
E         +     'us',
E         +     'ap',
E           ]

tests/test_generate_context.py:241: AssertionError
____________ test_apply_overwrites_sets_default_for_choice_variable ____________

template_context = OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait']), ('deployment_regions', ['eu', 'us', 'ap']), ('deployments', {'preprod': ['eu', 'us', 'ap'], 'prod': ['eu', 'us', 'ap']})])

    def test_apply_overwrites_sets_default_for_choice_variable(template_context):
        """Verify overwritten list member became a default value."""
        generate.apply_overwrites_to_context(
            context=template_context, overwrite_context={'orientation': 'landscape'}
        )
    
>       assert template_context['orientation'] == ['landscape', 'all', 'portrait']
E       AssertionError: assert ['all', 'landscape', 'portrait'] == ['landscape', 'all', 'portrait']
E         
E         At index 0 diff: 'all' != 'landscape'
E         
E         Full diff:
E           [
E         +     'all',
E               'landscape',
E         -     'all',
E               'portrait',
E           ]

tests/test_generate_context.py:251: AssertionError
_____________________ test_apply_overwrites_in_nested_dict _____________________

    def test_apply_overwrites_in_nested_dict():
        """Verify nested dict in default content settings are correctly replaced."""
        expected_context = {
            'nested_dict': OrderedDict(
                [
                    ('full_name', 'Raphael Pierzina'),
                    ('github_username', 'hackebrot'),
                    (
                        'project',
                        OrderedDict(
                            [
                                ('name', 'My Kivy Project'),
                                ('description', 'My Kivy Project'),
                                ('repo_name', '{{cookiecutter.project_name|lower}}'),
                                ('orientation', ["all", "landscape", "portrait"]),
                            ]
                        ),
                    ),
                ]
            )
        }
    
        generated_context = generate.generate_context(
            context_file='tests/test-generate-context/nested_dict.json',
            default_context={
                'not_in_template': 'foobar',
                'project': {
                    'description': 'My Kivy Project',
                },
            },
            extra_context={
                'also_not_in_template': 'foobar2',
                'github_username': 'hackebrot',
                'project': {
                    'name': 'My Kivy Project',
                },
            },
        )
    
>       assert generated_context == expected_context
E       AssertionError: assert None == {'nested_dict': OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project', OrderedDict([('name', 'My Kivy Project'), ('description', 'My Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait'])]))])}

tests/test_generate_context.py:293: AssertionError
____ test_apply_overwrite_context_as_in_nested_dict_with_additional_values _____

    def test_apply_overwrite_context_as_in_nested_dict_with_additional_values():
        """Verify nested dict in default content settings are correctly added.
    
        The `apply_overwrites_to_context` function should add the extra values to the dict.
        """
        expected = OrderedDict({"key1": "value1", "key2": "value2"})
        context = OrderedDict({"key1": "value1"})
        overwrite_context = OrderedDict({"key2": "value2"})
        generate.apply_overwrites_to_context(
            context,
            overwrite_context,
            in_dictionary_variable=True,
        )
>       assert context == expected
E       AssertionError: assert OrderedDict([('key1', 'value1')]) == OrderedDict([('key1', 'value1'), ('key2', 'value2')])
E         
E         Common items:
E         {'key1': 'value1'}
E         Right contains 1 more item:
E         {'key2': 'value2'}
E         
E         Full diff:
E           OrderedDict({
E               'key1': 'value1',
E         -     'key2': 'value2',
E           })

tests/test_generate_context.py:309: AssertionError
____________ test_apply_overwrites_in_nested_dict_additional_values ____________

    def test_apply_overwrites_in_nested_dict_additional_values():
        """Verify nested dict in default content settings are correctly added."""
        expected_context = {
            'nested_dict_additional': OrderedDict(
                [
                    ('mainkey1', 'mainvalue1'),
                    (
                        'mainkey2',
                        OrderedDict(
                            [
                                ('subkey1', 'subvalue1'),
                                (
                                    'subkey2',
                                    OrderedDict(
                                        [
                                            ('subsubkey1', 'subsubvalue1'),
                                            ('subsubkey2', 'subsubvalue2_default'),
                                            ('subsubkey3', 'subsubvalue3_extra'),
                                        ]
                                    ),
                                ),
                                ('subkey4', 'subvalue4_default'),
                                ('subkey5', 'subvalue5_extra'),
                            ]
                        ),
                    ),
                ]
            )
        }
    
        generated_context = generate.generate_context(
            context_file='tests/test-generate-context/nested_dict_additional.json',
            default_context={
                'not_in_template': 'foobar',
                'mainkey2': {
                    'subkey2': {
                        'subsubkey2': 'subsubvalue2_default',
                    },
                    'subkey4': 'subvalue4_default',
                },
            },
            extra_context={
                'also_not_in_template': 'foobar2',
                'mainkey2': {
                    'subkey2': {
                        'subsubkey3': 'subsubvalue3_extra',
                    },
                    'subkey5': 'subvalue5_extra',
                },
            },
        )
    
>       assert generated_context == expected_context
E       AssertionError: assert None == {'nested_dict_additional': OrderedDict([('mainkey1', 'mainvalue1'), ('mainkey2', OrderedDict([('subkey1', 'subvalue1'), ('subkey2', OrderedDict([('subsubkey1', 'subsubvalue1'), ('subsubkey2', 'subsubvalue2_default'), ('subsubkey3', 'subsubvalue3_extra')])), ('subkey4', 'subvalue4_default'), ('subkey5', 'subvalue5_extra')]))])}

tests/test_generate_context.py:364: AssertionError
_________________ test_generate_copy_without_render_extensions _________________

    @pytest.mark.usefixtures('clean_system', 'remove_test_dir')
    def test_generate_copy_without_render_extensions():
        """Verify correct work of `_copy_without_render` context option.
    
        Some files/directories should be rendered during invocation,
        some just copied, without any modification.
        """
        generate.generate_files(
            context={
                'cookiecutter': {
                    'repo_name': 'test_copy_without_render',
                    'render_test': 'I have been rendered!',
                    '_copy_without_render': [
                        '*not-rendered',
                        'rendered/not_rendered.yml',
                        '*.txt',
                        '{{cookiecutter.repo_name}}-rendered/README.md',
                    ],
                }
            },
            repo_dir='tests/test-generate-copy-without-render',
        )
    
>       dir_contents = os.listdir('test_copy_without_render')
E       FileNotFoundError: [Errno 2] No such file or directory: 'test_copy_without_render'

tests/test_generate_copy_without_render.py:42: FileNotFoundError
_________________ test_generate_copy_without_render_extensions _________________

    @pytest.mark.usefixtures('clean_system', 'remove_test_dir')
    def test_generate_copy_without_render_extensions():
        """Verify correct work of `_copy_without_render` context option.
    
        Some files/directories should be rendered during invocation,
        some just copied, without any modification.
        """
        # first run
        generate.generate_files(
            context={
                'cookiecutter': {
                    'repo_name': 'test_copy_without_render',
                    'render_test': 'I have been rendered!',
                    '_copy_without_render': [
                        '*not-rendered',
                        'rendered/not_rendered.yml',
                        '*.txt',
                        '{{cookiecutter.repo_name}}-rendered/README.md',
                    ],
                }
            },
            repo_dir='tests/test-generate-copy-without-render-override',
        )
    
        # second run with override flag to True
        generate.generate_files(
            context={
                'cookiecutter': {
                    'repo_name': 'test_copy_without_render',
                    'render_test': 'I have been rendered!',
                    '_copy_without_render': [
                        '*not-rendered',
                        'rendered/not_rendered.yml',
                        '*.txt',
                        '{{cookiecutter.repo_name}}-rendered/README.md',
                    ],
                }
            },
            overwrite_if_exists=True,
            repo_dir='tests/test-generate-copy-without-render',
        )
    
>       dir_contents = os.listdir('test_copy_without_render')
E       FileNotFoundError: [Errno 2] No such file or directory: 'test_copy_without_render'

tests/test_generate_copy_without_render_override.py:61: FileNotFoundError
______________________________ test_generate_file ______________________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89dbfa500>

    def test_generate_file(env):
        """Verify simple file is generated with rendered context data."""
        infile = 'tests/files/{{cookiecutter.generate_file}}.txt'
        generate.generate_file(
            project_dir=".",
            infile=infile,
            context={'cookiecutter': {'generate_file': 'cheese'}},
            env=env,
        )
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:53: AssertionError
______________________ test_generate_file_jsonify_filter _______________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e224a30>

    def test_generate_file_jsonify_filter(env):
        """Verify jsonify filter works during files generation process."""
        infile = 'tests/files/{{cookiecutter.jsonify_file}}.txt'
        data = {'jsonify_file': 'cheese', 'type': 'roquefort'}
        generate.generate_file(
            project_dir=".", infile=infile, context={'cookiecutter': data}, env=env
        )
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:65: AssertionError
_______________ test_generate_file_random_ascii_string[True-10] ________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e05c7f0>
length = 10, punctuation = True

    @pytest.mark.parametrize("length", (10, 40))
    @pytest.mark.parametrize("punctuation", (True, False))
    def test_generate_file_random_ascii_string(env, length, punctuation):
        """Verify correct work of random_ascii_string extension on file generation."""
        infile = 'tests/files/{{cookiecutter.random_string_file}}.txt'
        data = {'random_string_file': 'cheese'}
        context = {"cookiecutter": data, "length": length, "punctuation": punctuation}
        generate.generate_file(project_dir=".", infile=infile, context=context, env=env)
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:78: AssertionError
_______________ test_generate_file_random_ascii_string[True-40] ________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89dbfbd00>
length = 40, punctuation = True

    @pytest.mark.parametrize("length", (10, 40))
    @pytest.mark.parametrize("punctuation", (True, False))
    def test_generate_file_random_ascii_string(env, length, punctuation):
        """Verify correct work of random_ascii_string extension on file generation."""
        infile = 'tests/files/{{cookiecutter.random_string_file}}.txt'
        data = {'random_string_file': 'cheese'}
        context = {"cookiecutter": data, "length": length, "punctuation": punctuation}
        generate.generate_file(project_dir=".", infile=infile, context=context, env=env)
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:78: AssertionError
_______________ test_generate_file_random_ascii_string[False-10] _______________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e349e10>
length = 10, punctuation = False

    @pytest.mark.parametrize("length", (10, 40))
    @pytest.mark.parametrize("punctuation", (True, False))
    def test_generate_file_random_ascii_string(env, length, punctuation):
        """Verify correct work of random_ascii_string extension on file generation."""
        infile = 'tests/files/{{cookiecutter.random_string_file}}.txt'
        data = {'random_string_file': 'cheese'}
        context = {"cookiecutter": data, "length": length, "punctuation": punctuation}
        generate.generate_file(project_dir=".", infile=infile, context=context, env=env)
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:78: AssertionError
_______________ test_generate_file_random_ascii_string[False-40] _______________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89dbf8250>
length = 40, punctuation = False

    @pytest.mark.parametrize("length", (10, 40))
    @pytest.mark.parametrize("punctuation", (True, False))
    def test_generate_file_random_ascii_string(env, length, punctuation):
        """Verify correct work of random_ascii_string extension on file generation."""
        infile = 'tests/files/{{cookiecutter.random_string_file}}.txt'
        data = {'random_string_file': 'cheese'}
        context = {"cookiecutter": data, "length": length, "punctuation": punctuation}
        generate.generate_file(project_dir=".", infile=infile, context=context, env=env)
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:78: AssertionError
____________________ test_generate_file_with_true_condition ____________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e05f940>

    def test_generate_file_with_true_condition(env):
        """Verify correct work of boolean condition in file name on file generation.
    
        This test has positive answer, so file should be rendered.
        """
        infile = (
            'tests/files/{% if cookiecutter.generate_file == \'y\' %}cheese.txt{% endif %}'
        )
        generate.generate_file(
            project_dir=".",
            infile=infile,
            context={'cookiecutter': {'generate_file': 'y'}},
            env=env,
        )
>       assert os.path.isfile('tests/files/cheese.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_file.py:97: AssertionError
_______________ test_generate_file_verbose_template_syntax_error _______________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e348220>
expected_msg_regex = re.compile('Missing end of comment tag\n {2}File "(.[/\\\\])*tests[/\\\\]files[/\\\\]syntax_error.txt", line 1\n {4}I eat {{ syntax_error }} {# this comment is not closed}')

    def test_generate_file_verbose_template_syntax_error(env, expected_msg_regex):
        """Verify correct exception raised on syntax error in file before generation."""
>       with pytest.raises(TemplateSyntaxError) as exception:
E       Failed: DID NOT RAISE <class 'jinja2.exceptions.TemplateSyntaxError'>

tests/test_generate_file.py:131: Failed
__________ test_generate_file_does_not_translate_lf_newlines_to_crlf ___________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e05e020>
tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_file_does_not_tr0')

    def test_generate_file_does_not_translate_lf_newlines_to_crlf(env, tmp_path):
        """Verify that file generation use same line ending, as in source file."""
        infile = 'tests/files/{{cookiecutter.generate_file}}_lf_newlines.txt'
        generate.generate_file(
            project_dir=".",
            infile=infile,
            context={'cookiecutter': {'generate_file': 'cheese'}},
            env=env,
        )
    
        # this generated file should have a LF line ending
        gf = 'tests/files/cheese_lf_newlines.txt'
>       with Path(gf).open(encoding='utf-8', newline='') as f:

tests/test_generate_file.py:153: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('tests/files/cheese_lf_newlines.txt'), mode = 'r'
buffering = -1, encoding = 'utf-8', errors = None, newline = ''

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return self._accessor.open(self, mode, buffering, encoding, errors,
                                   newline)
E       FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_lf_newlines.txt'

/usr/lib/python3.10/pathlib.py:1119: FileNotFoundError
__________ test_generate_file_does_not_translate_crlf_newlines_to_lf ___________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e1f3c70>

    def test_generate_file_does_not_translate_crlf_newlines_to_lf(env):
        """Verify that file generation use same line ending, as in source file."""
        infile = 'tests/files/{{cookiecutter.generate_file}}_crlf_newlines.txt'
        generate.generate_file(
            project_dir=".",
            infile=infile,
            context={'cookiecutter': {'generate_file': 'cheese'}},
            env=env,
        )
    
        # this generated file should have a CRLF line ending
        gf = 'tests/files/cheese_crlf_newlines.txt'
>       with Path(gf).open(encoding='utf-8', newline='') as f:

tests/test_generate_file.py:171: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('tests/files/cheese_crlf_newlines.txt'), mode = 'r'
buffering = -1, encoding = 'utf-8', errors = None, newline = ''

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return self._accessor.open(self, mode, buffering, encoding, errors,
                                   newline)
E       FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_crlf_newlines.txt'

/usr/lib/python3.10/pathlib.py:1119: FileNotFoundError
________________ test_generate_file_handles_mixed_line_endings _________________

env = <cookiecutter.environment.StrictEnvironment object at 0x71e89e1a6500>
tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_file_handles_mix0')

    def test_generate_file_handles_mixed_line_endings(env, tmp_path):
        """Verify that file generation gracefully handles mixed line endings."""
        infile = 'tests/files/{{cookiecutter.generate_file}}_mixed_newlines.txt'
        with open(infile, mode='w', encoding='utf-8', newline='') as f:
            f.write('newline is CRLF\r\n')
            f.write('newline is LF\n')
        generate.generate_file(
            project_dir=".",
            infile=infile,
            context={'cookiecutter': {'generate_file': 'cheese'}},
            env=env,
        )
    
        # this generated file should have either CRLF or LF line ending
        gf = 'tests/files/cheese_mixed_newlines.txt'
>       with Path(gf).open(encoding='utf-8', newline='') as f:

tests/test_generate_file.py:192: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('tests/files/cheese_mixed_newlines.txt'), mode = 'r'
buffering = -1, encoding = 'utf-8', errors = None, newline = ''

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return self._accessor.open(self, mode, buffering, encoding, errors,
                                   newline)
E       FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_mixed_newlines.txt'

/usr/lib/python3.10/pathlib.py:1119: FileNotFoundError
__________________ test_generate_files_nontemplated_exception __________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_nontemplat0')

    def test_generate_files_nontemplated_exception(tmp_path):
        """
        Verify `generate_files` raises when no directories to render exist.
    
        Note: Check `tests/test-generate-files-nontemplated` location to understand.
        """
>       with pytest.raises(exceptions.NonTemplatedInputDirException):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.NonTemplatedInputDirException'>

tests/test_generate_files.py:21: Failed
_____________________________ test_generate_files ______________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files0')

    def test_generate_files(tmp_path):
        """Verify directory name correctly rendered with unicode containing context."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        simple_file = Path(tmp_path, 'inputpizzä/simple.txt')
>       assert simple_file.exists()
E       AssertionError: assert False
E        +  where False = exists()
E        +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files0/inputpizz\xe4/simple.txt').exists

tests/test_generate_files.py:38: AssertionError
____________________ test_generate_files_with_linux_newline ____________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_linux0')

    def test_generate_files_with_linux_newline(tmp_path):
        """Verify new line not removed by templating engine after folder generation."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        newline_file = Path(tmp_path, 'inputpizzä/simple-with-newline.txt')
>       assert newline_file.is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_linux0/inputpizz\xe4/simple-with-newline.txt').is_file

tests/test_generate_files.py:54: AssertionError
_________________ test_generate_files_with_jinja2_environment __________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_jinja0')

    def test_generate_files_with_jinja2_environment(tmp_path):
        """Extend StrictEnvironment with _jinja2_env_vars cookiecutter template option."""
        generate.generate_files(
            context={
                'cookiecutter': {
                    'food': 'pizzä',
                    '_jinja2_env_vars': {'lstrip_blocks': True, 'trim_blocks': True},
                }
            },
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        conditions_file = tmp_path.joinpath('inputpizzä/simple-with-conditions.txt')
>       assert conditions_file.is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_jinja0/inputpizz\xe4/simple-with-conditions.txt').is_file

tests/test_generate_files.py:77: AssertionError
_____ test_generate_files_with_trailing_newline_forced_to_linux_by_context _____

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_trail0')

    def test_generate_files_with_trailing_newline_forced_to_linux_by_context(tmp_path):
        """Verify new line not removed by templating engine after folder generation."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä', '_new_lines': '\r\n'}},
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        # assert 'Overwritting endline character with %s' in caplog.messages
        newline_file = Path(tmp_path, 'inputpizzä/simple-with-newline.txt')
>       assert newline_file.is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_trail0/inputpizz\xe4/simple-with-newline.txt').is_file

tests/test_generate_files.py:94: AssertionError
___________________ test_generate_files_with_windows_newline ___________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo0')

    def test_generate_files_with_windows_newline(tmp_path):
        """Verify windows source line end not changed during files generation."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        newline_file = Path(tmp_path, 'inputpizzä/simple-with-newline-crlf.txt')
>       assert newline_file.is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo0/inputpizz\xe4/simple-with-newline-crlf.txt').is_file

tests/test_generate_files.py:112: AssertionError
_____ test_generate_files_with_windows_newline_forced_to_linux_by_context ______

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo1')

    def test_generate_files_with_windows_newline_forced_to_linux_by_context(tmp_path):
        """Verify windows line end changed to linux during files generation."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä', '_new_lines': '\n'}},
            repo_dir='tests/test-generate-files',
            output_dir=tmp_path,
        )
    
        newline_file = Path(tmp_path, 'inputpizzä/simple-with-newline-crlf.txt')
>       assert newline_file.is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo1/inputpizz\xe4/simple-with-newline-crlf.txt').is_file

tests/test_generate_files.py:130: AssertionError
_________________________ test_generate_files_binaries _________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0')

    def test_generate_files_binaries(tmp_path):
        """Verify binary files created during directory generation."""
        generate.generate_files(
            context={'cookiecutter': {'binary_test': 'binary_files'}},
            repo_dir='tests/test-generate-binaries',
            output_dir=tmp_path,
        )
    
        dst_dir = Path(tmp_path, 'inputbinary_files')
    
>       assert is_binary(str(Path(dst_dir, 'logo.png')))
E       AssertionError: assert False
E        +  where False = is_binary('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png')
E        +    where '/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png' = str(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png'))
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files'), 'logo.png')

tests/test_generate_files.py:150: AssertionError
----------------------------- Captured stdout call -----------------------------
[Errno 2] No such file or directory: '/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png'
______________________ test_generate_files_absolute_path _______________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0')

    def test_generate_files_absolute_path(tmp_path):
        """Verify usage of absolute path does not change files generation behaviour."""
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir=Path('tests/test-generate-files').absolute(),
            output_dir=tmp_path,
        )
>       assert Path(tmp_path, 'inputpizzä/simple.txt').is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0/inputpizz\xe4/simple.txt').is_file
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0/inputpizz\xe4/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0'), 'inputpizz\xe4/simple.txt')

tests/test_generate_files.py:168: AssertionError
________________________ test_generate_files_output_dir ________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0')

    def test_generate_files_output_dir(tmp_path):
        """Verify `output_dir` option for `generate_files` changing location correctly."""
        output_dir = Path(tmp_path, 'custom_output_dir')
        output_dir.mkdir()
    
        project_dir = generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir=Path('tests/test-generate-files').absolute(),
            output_dir=output_dir,
        )
    
>       assert Path(output_dir, 'inputpizzä/simple.txt').exists()
E       AssertionError: assert False
E        +  where False = exists()
E        +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir/inputpizz\xe4/simple.txt').exists
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir/inputpizz\xe4/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir'), 'inputpizz\xe4/simple.txt')

tests/test_generate_files.py:182: AssertionError
_______________________ test_generate_files_permissions ________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0')

    def test_generate_files_permissions(tmp_path):
        """Verify generates files respect source 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',
            output_dir=tmp_path,
        )
    
>       assert Path(tmp_path, 'inputpermissions/simple.txt').is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0/inputpermissions/simple.txt').is_file
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0/inputpermissions/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0'), 'inputpermissions/simple.txt')

tests/test_generate_files.py:199: AssertionError
____ test_generate_files_with_overwrite_if_exists_with_skip_if_file_exists _____

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0')

    def test_generate_files_with_overwrite_if_exists_with_skip_if_file_exists(tmp_path):
        """Verify `skip_if_file_exist` has priority over `overwrite_if_exists`."""
        simple_file = Path(tmp_path, 'inputpizzä/simple.txt')
        simple_with_new_line_file = Path(tmp_path, 'inputpizzä/simple-with-newline.txt')
    
        Path(tmp_path, 'inputpizzä').mkdir(parents=True)
        with Path(simple_file).open('w') as f:
            f.write('temp')
    
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir='tests/test-generate-files',
            overwrite_if_exists=True,
            skip_if_file_exists=True,
            output_dir=tmp_path,
        )
    
        assert Path(simple_file).is_file()
        assert Path(simple_file).exists()
>       assert Path(simple_with_new_line_file).is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt').is_file
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt'))

tests/test_generate_files.py:250: AssertionError
_________________ test_generate_files_with_skip_if_file_exists _________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_skip_0')

    def test_generate_files_with_skip_if_file_exists(tmp_path):
        """Verify existed files not removed if error raised with `skip_if_file_exists`."""
        simple_file = Path(tmp_path, 'inputpizzä/simple.txt')
        simple_with_new_line_file = Path(tmp_path, 'inputpizzä/simple-with-newline.txt')
    
        Path(tmp_path, 'inputpizzä').mkdir(parents=True)
        Path(simple_file).write_text('temp')
    
>       with pytest.raises(exceptions.OutputDirExistsException):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.OutputDirExistsException'>

tests/test_generate_files.py:265: Failed
_________________ test_generate_files_with_overwrite_if_exists _________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1')

    def test_generate_files_with_overwrite_if_exists(tmp_path):
        """Verify overwrite_if_exists overwrites old files."""
        simple_file = Path(tmp_path, 'inputpizzä/simple.txt')
        simple_with_new_line_file = Path(tmp_path, 'inputpizzä/simple-with-newline.txt')
    
        Path(tmp_path, 'inputpizzä').mkdir(parents=True)
        Path(simple_file).write_text('temp')
    
        generate.generate_files(
            context={'cookiecutter': {'food': 'pizzä'}},
            repo_dir='tests/test-generate-files',
            overwrite_if_exists=True,
            output_dir=tmp_path,
        )
    
        assert Path(simple_file).is_file()
        assert Path(simple_file).exists()
>       assert Path(simple_with_new_line_file).is_file()
E       AssertionError: assert False
E        +  where False = is_file()
E        +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt').is_file
E        +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt'))

tests/test_generate_files.py:298: AssertionError
___________________ test_raise_undefined_variable_file_name ____________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_0/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_raise_undefined_variable_file_name(output_dir, undefined_context):
        """Verify correct error raised when file name cannot be rendered."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:315: Failed
___________ test_raise_undefined_variable_file_name_existing_project ___________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_1/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_raise_undefined_variable_file_name_existing_project(
        output_dir, undefined_context
    ):
        """Verify correct error raised when file name cannot be rendered."""
        testproj_path = Path(output_dir, 'testproject')
        testproj_path.mkdir()
    
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:335: Failed
__________________ test_raise_undefined_variable_file_content __________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_2/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_raise_undefined_variable_file_content(output_dir, undefined_context):
        """Verify correct error raised when file content cannot be rendered."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:351: Failed
____________________ test_raise_undefined_variable_dir_name ____________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_3/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_raise_undefined_variable_dir_name(output_dir, undefined_context):
        """Verify correct error raised when directory name cannot be rendered."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:366: Failed
_______________________ test_keep_project_dir_on_failure _______________________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_keep_project_dir_on_failu0/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_keep_project_dir_on_failure(output_dir, undefined_context):
        """Verify correct error raised when directory name cannot be rendered."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:385: Failed
___________ test_raise_undefined_variable_dir_name_existing_project ____________

output_dir = '/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_4/output'
undefined_context = {'cookiecutter': {'github_username': 'hackebrot', 'project_slug': 'testproject'}}

    def test_raise_undefined_variable_dir_name_existing_project(
        output_dir, undefined_context
    ):
        """Verify correct error raised when directory name cannot be rendered."""
        testproj_path = Path(output_dir, 'testproject')
        testproj_path.mkdir()
    
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:402: Failed
__________________ test_raise_undefined_variable_project_dir ___________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_raise_undefined_variable_5')

    def test_raise_undefined_variable_project_dir(tmp_path):
        """Verify correct error raised when directory name cannot be rendered."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_generate_files.py:422: Failed
____________________________ test_run_python_hooks _____________________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_run_python_hooks():
        """Verify pre and post generation python hooks executed and result in output_dir.
    
        Each hook should create in target directory. Test verifies that these files
        created.
        """
        generate.generate_files(
            context={'cookiecutter': {'pyhooks': 'pyhooks'}},
            repo_dir='tests/test-pyhooks/',
            output_dir='tests/test-pyhooks/',
        )
>       assert os.path.exists('tests/test-pyhooks/inputpyhooks/python_pre.txt')
E       AssertionError: assert False
E        +  where False = <function exists at 0x71e8a08edea0>('tests/test-pyhooks/inputpyhooks/python_pre.txt')
E        +    where <function exists at 0x71e8a08edea0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.exists
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_hooks.py:55: AssertionError
__________________________ test_run_python_hooks_cwd ___________________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_run_python_hooks_cwd():
        """Verify pre and post generation python hooks executed and result in current dir.
    
        Each hook should create in target directory. Test verifies that these files
        created.
        """
        generate.generate_files(
            context={'cookiecutter': {'pyhooks': 'pyhooks'}}, repo_dir='tests/test-pyhooks/'
        )
>       assert os.path.exists('inputpyhooks/python_pre.txt')
E       AssertionError: assert False
E        +  where False = <function exists at 0x71e8a08edea0>('inputpyhooks/python_pre.txt')
E        +    where <function exists at 0x71e8a08edea0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.exists
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_generate_hooks.py:69: AssertionError
_______________________________ test_empty_hooks _______________________________

    @pytest.mark.skipif(WINDOWS, reason='OSError.errno=8 is not thrown on Windows')
    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_empty_hooks():
        """Verify error is raised on empty hook script. Ignored on windows.
    
        OSError.errno=8 is not thrown on Windows when the script is empty
        because it always runs through shell instead of needing a shebang.
        """
>       with pytest.raises(FailedHookException) as excinfo:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>

tests/test_generate_hooks.py:81: Failed
________________ test_run_failing_hook_removes_output_directory ________________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_run_failing_hook_removes_output_directory():
        """Verify project directory not created or removed if hook failed."""
        repo_path = os.path.abspath('tests/test-hooks/')
        hooks_path = os.path.abspath('tests/test-hooks/hooks')
    
        hook_dir = os.path.join(repo_path, 'hooks')
        template = os.path.join(repo_path, 'input{{cookiecutter.hooks}}')
        os.mkdir(repo_path)
        os.mkdir(hook_dir)
        os.mkdir(template)
    
        hook_path = os.path.join(hooks_path, 'pre_gen_project.py')
    
        with Path(hook_path).open('w') as f:
            f.write("#!/usr/bin/env python\n")
            f.write("import sys; sys.exit(1)\n")
    
>       with pytest.raises(FailedHookException) as excinfo:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>

tests/test_generate_hooks.py:132: Failed
__________ test_run_failing_hook_preserves_existing_output_directory ___________

    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_run_failing_hook_preserves_existing_output_directory():
        """Verify project directory not removed if exist before hook failed."""
        repo_path = os.path.abspath('tests/test-hooks/')
        hooks_path = os.path.abspath('tests/test-hooks/hooks')
    
        hook_dir = os.path.join(repo_path, 'hooks')
        template = os.path.join(repo_path, 'input{{cookiecutter.hooks}}')
        os.mkdir(repo_path)
        os.mkdir(hook_dir)
        os.mkdir(template)
    
        hook_path = os.path.join(hooks_path, 'pre_gen_project.py')
    
        with Path(hook_path).open('w') as f:
            f.write("#!/usr/bin/env python\n")
            f.write("import sys; sys.exit(1)\n")
    
        os.mkdir('inputhooks')
>       with pytest.raises(FailedHookException) as excinfo:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>

tests/test_generate_hooks.py:162: Failed
_____________________________ test_run_shell_hooks _____________________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_run_shell_hooks0')

    @pytest.mark.skipif(sys.platform.startswith('win'), reason="Linux only test")
    @pytest.mark.usefixtures('clean_system', 'remove_additional_folders')
    def test_run_shell_hooks(tmp_path):
        """Verify pre and post generate project shell hooks executed.
    
        This test for .sh files.
        """
        generate.generate_files(
            context={'cookiecutter': {'shellhooks': 'shellhooks'}},
            repo_dir='tests/test-shellhooks/',
            output_dir=tmp_path.joinpath('test-shellhooks'),
        )
        shell_pre_file = tmp_path.joinpath(
            'test-shellhooks', 'inputshellhooks', 'shell_pre.txt'
        )
        shell_post_file = tmp_path.joinpath(
            'test-shellhooks', 'inputshellhooks', 'shell_post.txt'
        )
>       assert shell_pre_file.exists()
E       AssertionError: assert False
E        +  where False = exists()
E        +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_run_shell_hooks0/test-shellhooks/inputshellhooks/shell_pre.txt').exists

tests/test_generate_hooks.py:191: AssertionError
____________________ test_deprecate_run_hook_from_repo_dir _____________________

tmp_path = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_deprecate_run_hook_from_r0')

    @pytest.mark.usefixtures("clean_system", "remove_additional_folders")
    def test_deprecate_run_hook_from_repo_dir(tmp_path):
        """Test deprecation warning in generate._run_hook_from_repo_dir."""
        repo_dir = "tests/test-shellhooks/"
        project_dir = Path(tmp_path.joinpath('test-shellhooks'))
        project_dir.mkdir()
>       with pytest.deprecated_call():
E       Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted.
E        Emitted warnings: [].

tests/test_generate_hooks.py:240: Failed
_______________________________ test_get_config ________________________________

    def test_get_config():
        """Verify valid config opened and rendered correctly."""
        conf = config.get_config('tests/test-config/valid-config.yaml')
        expected_conf = {
            'cookiecutters_dir': '/home/example/some-path-to-templates',
            'replay_dir': '/home/example/some-path-to-replay-files',
            'default_context': {
                'full_name': 'Firstname Lastname',
                'email': 'firstname.lastname@gmail.com',
                'github_username': 'example',
                'project': {
                    'description': 'description',
                    'tags': [
                        'first',
                        'second',
                        'third',
                    ],
                },
            },
            'abbreviations': {
                'gh': 'https://github.com/{0}.git',
                'gl': 'https://gitlab.com/{0}.git',
                'bb': 'https://bitbucket.org/{0}',
                'helloworld': 'https://github.com/hackebrot/helloworld',
            },
        }
>       assert conf == expected_conf
E       AssertionError: assert {'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example', 'project': {'description': 'description', 'tags': ['first', 'second', 'third']}}, 'cookiecutters_dir': '/home/example/some-path-to-templates', 'replay_dir': '/home/example/some-path-to-replay-files', 'abbreviations': {'helloworld': 'https://github.com/hackebrot/helloworld'}} == {'cookiecutters_dir': '/home/example/some-path-to-templates', 'replay_dir': '/home/example/some-path-to-replay-files', 'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example', 'project': {'description': 'description', 'tags': ['first', 'second', 'third']}}, 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}', 'helloworld': 'https://github.com/hackebrot/helloworld'}}
E         
E         Common items:
E         {'cookiecutters_dir': '/home/example/some-path-to-templates',
E          'default_context': {'email': 'firstname.lastname@gmail.com',
E                              'full_name': 'Firstname Lastname',
E                              'github_username': 'example',
E                              'project': {'description': 'description',
E                                          'tags': ['first', 'second', 'third']}},
E          'replay_dir': '/home/example/some-path-to-replay-files'}
E         Differing items:
E         {'abbreviations': {'helloworld': 'https://github.com/hackebrot/helloworld'}} != {'abbreviations': {'bb': 'https://bitbucket.org/{0}', 'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'helloworld': 'https://github.com/hackebrot/helloworld'}}
E         
E         Full diff:
E           {
E               'abbreviations': {
E         -         'bb': 'https://bitbucket.org/{0}',
E         -         'gh': 'https://github.com/{0}.git',
E         -         'gl': 'https://gitlab.com/{0}.git',
E                   'helloworld': 'https://github.com/hackebrot/helloworld',
E               },
E               'cookiecutters_dir': '/home/example/some-path-to-templates',
E               'default_context': {
E                   'email': 'firstname.lastname@gmail.com',
E                   'full_name': 'Firstname Lastname',
E                   'github_username': 'example',
E                   'project': {
E                       'description': 'description',
E                       'tags': [
E                           'first',
E                           'second',
E                           'third',
E                       ],
E                   },
E               },
E               'replay_dir': '/home/example/some-path-to-replay-files',
E           }

tests/test_get_config.py:80: AssertionError
________________________ test_get_config_does_not_exist ________________________

    def test_get_config_does_not_exist():
        """Check that `exceptions.ConfigDoesNotExistException` is raised when \
        attempting to get a non-existent config file."""
        expected_error_msg = 'Config file tests/not-exist.yaml does not exist.'
>       with pytest.raises(ConfigDoesNotExistException) as exc_info:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.ConfigDoesNotExistException'>

tests/test_get_config.py:87: Failed
_____________________________ test_invalid_config ______________________________

    def test_invalid_config():
        """An invalid config file should raise an `InvalidConfiguration` \
        exception."""
        expected_error_msg = (
            'Unable to parse YAML file tests/test-config/invalid-config.yaml.'
        )
        with pytest.raises(InvalidConfiguration) as exc_info:
>           config.get_config('tests/test-config/invalid-config.yaml')

tests/test_get_config.py:99: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
cookiecutter/config.py:38: in get_config
    return yaml.safe_load(f) or {}
/home/openhands/.local/lib/python3.10/site-packages/yaml/__init__.py:125: in safe_load
    return load(stream, SafeLoader)
/home/openhands/.local/lib/python3.10/site-packages/yaml/__init__.py:81: in load
    return loader.get_single_data()
/home/openhands/.local/lib/python3.10/site-packages/yaml/constructor.py:49: in get_single_data
    node = self.get_single_node()
/home/openhands/.local/lib/python3.10/site-packages/yaml/composer.py:36: in get_single_node
    document = self.compose_document()
/home/openhands/.local/lib/python3.10/site-packages/yaml/composer.py:58: in compose_document
    self.get_event()
/home/openhands/.local/lib/python3.10/site-packages/yaml/parser.py:118: in get_event
    self.current_event = self.state()
/home/openhands/.local/lib/python3.10/site-packages/yaml/parser.py:193: in parse_document_end
    token = self.peek_token()
/home/openhands/.local/lib/python3.10/site-packages/yaml/scanner.py:129: in peek_token
    self.fetch_more_tokens()
/home/openhands/.local/lib/python3.10/site-packages/yaml/scanner.py:223: in fetch_more_tokens
    return self.fetch_value()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <yaml.loader.SafeLoader object at 0x71e89dbf9840>

    def fetch_value(self):
    
        # Do we determine a simple key?
        if self.flow_level in self.possible_simple_keys:
    
            # Add KEY.
            key = self.possible_simple_keys[self.flow_level]
            del self.possible_simple_keys[self.flow_level]
            self.tokens.insert(key.token_number-self.tokens_taken,
                    KeyToken(key.mark, key.mark))
    
            # If this key starts a new block mapping, we need to add
            # BLOCK-MAPPING-START.
            if not self.flow_level:
                if self.add_indent(key.column):
                    self.tokens.insert(key.token_number-self.tokens_taken,
                            BlockMappingStartToken(key.mark, key.mark))
    
            # There cannot be two simple keys one after another.
            self.allow_simple_key = False
    
        # It must be a part of a complex key.
        else:
    
            # Block context needs additional checks.
            # (Do we really need them? They will be caught by the parser
            # anyway.)
            if not self.flow_level:
    
                # We are allowed to start a complex value if and only if
                # we can start a simple key.
                if not self.allow_simple_key:
>                   raise ScannerError(None, None,
                            "mapping values are not allowed here",
                            self.get_mark())
E                   yaml.scanner.ScannerError: mapping values are not allowed here
E                     in "tests/test-config/invalid-config.yaml", line 2, column 14

/home/openhands/.local/lib/python3.10/site-packages/yaml/scanner.py:577: ScannerError
________________________ test_get_config_with_defaults _________________________

    def test_get_config_with_defaults():
        """A config file that overrides 1 of 3 defaults."""
        conf = config.get_config('tests/test-config/valid-partial-config.yaml')
        default_cookiecutters_dir = Path('~/.cookiecutters').expanduser()
        default_replay_dir = Path('~/.cookiecutter_replay').expanduser()
        expected_conf = {
            'cookiecutters_dir': str(default_cookiecutters_dir),
            'replay_dir': str(default_replay_dir),
            'default_context': {
                'full_name': 'Firstname Lastname',
                'email': 'firstname.lastname@gmail.com',
                'github_username': 'example',
            },
            'abbreviations': {
                'gh': 'https://github.com/{0}.git',
                'gl': 'https://gitlab.com/{0}.git',
                'bb': 'https://bitbucket.org/{0}',
            },
        }
>       assert conf == expected_conf
E       AssertionError: assert {'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example'}} == {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay', 'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example'}, 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}'}}
E         
E         Common items:
E         {'default_context': {'email': 'firstname.lastname@gmail.com',
E                              'full_name': 'Firstname Lastname',
E                              'github_username': 'example'}}
E         Right contains 3 more items:
E         {'abbreviations': {'bb': 'https://bitbucket.org/{0}',
E                            'gh': 'https://github.com/{0}.git',
E                            'gl': 'https://gitlab.com/{0}.git'},
E          'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters',
E          'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay'}
E         
E         Full diff:
E           {
E         -     'abbreviations': {
E         -         'bb': 'https://bitbucket.org/{0}',
E         -         'gh': 'https://github.com/{0}.git',
E         -         'gl': 'https://gitlab.com/{0}.git',
E         -     },
E         -     'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters',
E               'default_context': {
E                   'email': 'firstname.lastname@gmail.com',
E                   'full_name': 'Firstname Lastname',
E                   'github_username': 'example',
E               },
E         -     'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay',
E           }

tests/test_get_config.py:123: AssertionError
______________________ test_get_config_empty_config_file _______________________

    def test_get_config_empty_config_file():
        """An empty config file results in the default config."""
        conf = config.get_config('tests/test-config/empty-config.yaml')
>       assert conf == config.DEFAULT_CONFIG
E       AssertionError: assert {} == {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay', 'default_context': OrderedDict(), 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}'}}
E         
E         Right contains 4 more items:
E         {'abbreviations': {'bb': 'https://bitbucket.org/{0}',
E                            'gh': 'https://github.com/{0}.git',
E                            'gl': 'https://gitlab.com/{0}.git'},
E          'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters',
E          'default_context': OrderedDict(),
E          'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay'}
E         
E         Full diff:
E         + {}
E         - {
E         -     'abbreviations': {
E         -         'bb': 'https://bitbucket.org/{0}',
E         -         'gh': 'https://github.com/{0}.git',
E         -         'gl': 'https://gitlab.com/{0}.git',
E         -     },
E         -     'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters',
E         -     'default_context': OrderedDict(),
E         -     'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay',
E         - }

tests/test_get_config.py:129: AssertionError
_________ test_get_config_invalid_file_with_array_as_top_level_element _________

    def test_get_config_invalid_file_with_array_as_top_level_element():
        """An exception should be raised if top-level element is array."""
        expected_error_msg = (
            'Top-level element of YAML file '
            'tests/test-config/invalid-config-w-array.yaml should be an object.'
        )
>       with pytest.raises(InvalidConfiguration) as exc_info:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidConfiguration'>

tests/test_get_config.py:138: Failed
_______________ test_get_config_invalid_file_with_multiple_docs ________________

    def test_get_config_invalid_file_with_multiple_docs():
        """An exception should be raised if config file contains multiple docs."""
        expected_error_msg = (
            'Unable to parse YAML file '
            'tests/test-config/invalid-config-w-multiple-docs.yaml.'
        )
        with pytest.raises(InvalidConfiguration) as exc_info:
>           config.get_config('tests/test-config/invalid-config-w-multiple-docs.yaml')

tests/test_get_config.py:150: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
cookiecutter/config.py:38: in get_config
    return yaml.safe_load(f) or {}
/home/openhands/.local/lib/python3.10/site-packages/yaml/__init__.py:125: in safe_load
    return load(stream, SafeLoader)
/home/openhands/.local/lib/python3.10/site-packages/yaml/__init__.py:81: in load
    return loader.get_single_data()
/home/openhands/.local/lib/python3.10/site-packages/yaml/constructor.py:49: in get_single_data
    node = self.get_single_node()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <yaml.loader.SafeLoader object at 0x71e89e20a2c0>

    def get_single_node(self):
        # Drop the STREAM-START event.
        self.get_event()
    
        # Compose a document if the stream is not empty.
        document = None
        if not self.check_event(StreamEndEvent):
            document = self.compose_document()
    
        # Ensure that the stream contains no more documents.
        if not self.check_event(StreamEndEvent):
            event = self.get_event()
>           raise ComposerError("expected a single document in the stream",
                    document.start_mark, "but found another document",
                    event.start_mark)
E           yaml.composer.ComposerError: expected a single document in the stream
E             in "tests/test-config/invalid-config-w-multiple-docs.yaml", line 2, column 1
E           but found another document
E             in "tests/test-config/invalid-config-w-multiple-docs.yaml", line 12, column 1

/home/openhands/.local/lib/python3.10/site-packages/yaml/composer.py:41: ComposerError
_________________________ test_get_user_config_invalid _________________________

user_config_path = '/home/openhands/.cookiecutterrc'

    @pytest.mark.usefixtures('back_up_rc')
    def test_get_user_config_invalid(user_config_path):
        """Validate `InvalidConfiguration` raised when provided user config malformed."""
        shutil.copy('tests/test-config/invalid-config.yaml', user_config_path)
>       with pytest.raises(InvalidConfiguration):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidConfiguration'>

tests/test_get_user_config.py:83: Failed
__________________ test_expand_user_for_directories_in_config __________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e228040>

    def test_expand_user_for_directories_in_config(monkeypatch):
        """Validate user pointers expanded in user configs."""
    
        def _expanduser(path):
            return path.replace('~', 'Users/bob')
    
        monkeypatch.setattr('os.path.expanduser', _expanduser)
    
        config_file = 'tests/test-config/config-expand-user.yaml'
    
        user_config = config.get_user_config(config_file)
>       assert user_config['replay_dir'] == 'Users/bob/replay-files'
E       AssertionError: assert '~/replay-files' == 'Users/bob/replay-files'
E         
E         - Users/bob/replay-files
E         + ~/replay-files

tests/test_get_user_config.py:145: AssertionError
__________________ test_expand_vars_for_directories_in_config __________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e05e0e0>

    def test_expand_vars_for_directories_in_config(monkeypatch):
        """Validate environment variables expanded in user configs."""
        monkeypatch.setenv('COOKIES', 'Users/bob/cookies')
    
        config_file = 'tests/test-config/config-expand-vars.yaml'
    
        user_config = config.get_user_config(config_file)
>       assert user_config['replay_dir'] == 'Users/bob/cookies/replay-files'
E       AssertionError: assert '$COOKIES/replay-files' == 'Users/bob/cookies/replay-files'
E         
E         - Users/bob/cookies/replay-files
E         + $COOKIES/replay-files

tests/test_get_user_config.py:156: AssertionError
_________________________ TestFindHooks.test_find_hook _________________________

self = <tests.test_hooks.TestFindHooks object at 0x71e89e3d80d0>

    def test_find_hook(self):
        """Finds the specified hook."""
        with utils.work_in(self.repo_path):
            expected_pre = os.path.abspath('hooks/pre_gen_project.py')
            actual_hook_path = hooks.find_hook('pre_gen_project')
>           assert expected_pre == actual_hook_path[0]
E           TypeError: 'NoneType' object is not subscriptable

tests/test_hooks.py:93: TypeError
______________________ TestExternalHooks.test_run_script _______________________

self = <tests.test_hooks.TestExternalHooks object at 0x71e89e3d91b0>

    def test_run_script(self):
        """Execute a hook script, independently of project generation."""
        hooks.run_script(os.path.join(self.hooks_path, self.post_hook))
>       assert os.path.isfile('shell_post.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('shell_post.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_hooks.py:147: AssertionError
____________________ TestExternalHooks.test_run_script_cwd _____________________

self = <tests.test_hooks.TestExternalHooks object at 0x71e89e380fd0>

    def test_run_script_cwd(self):
        """Change directory before running hook."""
        hooks.run_script(os.path.join(self.hooks_path, self.post_hook), 'tests')
>       assert os.path.isfile('tests/shell_post.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/shell_post.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_hooks.py:177: AssertionError
________________ TestExternalHooks.test_run_script_with_context ________________

self = <tests.test_hooks.TestExternalHooks object at 0x71e89e3d9240>

    def test_run_script_with_context(self):
        """Execute a hook script, passing a context."""
        hook_path = os.path.join(self.hooks_path, 'post_gen_project.sh')
    
        if sys.platform.startswith('win'):
            post = 'post_gen_project.bat'
            with Path(self.hooks_path, post).open('w') as f:
                f.write("@echo off\n")
                f.write("\n")
                f.write("echo post generation hook\n")
                f.write("echo. >{{cookiecutter.file}}\n")
        else:
            with Path(hook_path).open('w') as fh:
                fh.write("#!/bin/bash\n")
                fh.write("\n")
                fh.write("echo 'post generation hook';\n")
                fh.write("touch 'shell_post.txt'\n")
                fh.write("touch '{{cookiecutter.file}}'\n")
                os.chmod(hook_path, os.stat(hook_path).st_mode | stat.S_IXUSR)
    
        hooks.run_script_with_context(
            os.path.join(self.hooks_path, self.post_hook),
            'tests',
            {'cookiecutter': {'file': 'context_post.txt'}},
        )
>       assert os.path.isfile('tests/context_post.txt')
E       AssertionError: assert False
E        +  where False = <function isfile at 0x71e8a08edf30>('tests/context_post.txt')
E        +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E        +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_hooks.py:205: AssertionError
_______________________ TestExternalHooks.test_run_hook ________________________

self = <tests.test_hooks.TestExternalHooks object at 0x71e89e3d8850>

    def test_run_hook(self):
        """Execute hook from specified template in specified output \
        directory."""
        tests_dir = os.path.join(self.repo_path, 'input{{hooks}}')
        with utils.work_in(self.repo_path):
            hooks.run_hook('pre_gen_project', tests_dir, {})
>           assert os.path.isfile(os.path.join(tests_dir, 'python_pre.txt'))
E           AssertionError: assert False
E            +  where False = <function isfile at 0x71e8a08edf30>('/workspace/cookiecutter/tests/test-hooks/input{{hooks}}/python_pre.txt')
E            +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
E            +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
E            +    and   '/workspace/cookiecutter/tests/test-hooks/input{{hooks}}/python_pre.txt' = <function join at 0x71e8a08ee710>('/workspace/cookiecutter/tests/test-hooks/input{{hooks}}', 'python_pre.txt')
E            +      where <function join at 0x71e8a08ee710> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.join
E            +        where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path

tests/test_hooks.py:214: AssertionError
___________________ TestExternalHooks.test_run_failing_hook ____________________

self = <tests.test_hooks.TestExternalHooks object at 0x71e89e3d8190>

    def test_run_failing_hook(self):
        """Test correct exception raise if hook exit code is not zero."""
        hook_path = os.path.join(self.hooks_path, 'pre_gen_project.py')
        tests_dir = os.path.join(self.repo_path, 'input{{hooks}}')
    
        with Path(hook_path).open('w') as f:
            f.write("#!/usr/bin/env python\n")
            f.write("import sys; sys.exit(1)\n")
    
        with utils.work_in(self.repo_path):
>           with pytest.raises(exceptions.FailedHookException) as excinfo:
E           Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>

tests/test_hooks.py:230: Failed
___________________________ test_info_stdout_logging ___________________________

caplog = <_pytest.logging.LogCaptureFixture object at 0x71e89d842e00>
info_logger = None
info_messages = ['INFO: Welcome to Cookiecutter', 'INFO: Loading user config from home dir', 'ERROR: Aw, snap! Something went wrong']

    def test_info_stdout_logging(caplog, info_logger, info_messages):
        """Test that stdout logs use info format and level."""
>       [stream_handler] = info_logger.handlers
E       AttributeError: 'NoneType' object has no attribute 'handlers'

tests/test_log.py:75: AttributeError
__________________________ test_debug_stdout_logging ___________________________

caplog = <_pytest.logging.LogCaptureFixture object at 0x71e89e1a6890>
debug_logger = None
debug_messages = ['INFO cookiecutter: Welcome to Cookiecutter', 'DEBUG cookiecutter: Generating project from pytest-plugin', 'INFO cookiecutter.foo: Loading user config from home dir', "DEBUG cookiecutter.foo.bar: I don't know.", 'DEBUG cookiecutter.foo.bar: I wanted to save the world.', 'ERROR cookiecutter.foo: Aw, snap! Something went wrong', ...]

    def test_debug_stdout_logging(caplog, debug_logger, debug_messages):
        """Test that stdout logs use debug format and level."""
>       [stream_handler] = debug_logger.handlers
E       AttributeError: 'NoneType' object has no attribute 'handlers'

tests/test_log.py:92: AttributeError
___________________________ test_debug_file_logging ____________________________

caplog = <_pytest.logging.LogCaptureFixture object at 0x71e89d840a00>
info_logger_with_file = None
debug_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_logging0/pytest-plugin.log')
debug_messages = ['INFO cookiecutter: Welcome to Cookiecutter', 'DEBUG cookiecutter: Generating project from pytest-plugin', 'INFO cookiecutter.foo: Loading user config from home dir', "DEBUG cookiecutter.foo.bar: I don't know.", 'DEBUG cookiecutter.foo.bar: I wanted to save the world.', 'ERROR cookiecutter.foo: Aw, snap! Something went wrong', ...]

    def test_debug_file_logging(caplog, info_logger_with_file, debug_file, debug_messages):
        """Test that logging to stdout uses a different format and level than \
        the the file handler."""
>       [file_handler, stream_handler] = info_logger_with_file.handlers
E       AttributeError: 'NoneType' object has no attribute 'handlers'

tests/test_log.py:110: AttributeError
______________________________ test_output_folder ______________________________

    @pytest.mark.usefixtures('clean_system', 'remove_output_folder')
    def test_output_folder():
        """Tests should correctly create content, as output_folder does not yet exist."""
        context = generate.generate_context(
            context_file='tests/test-output-folder/cookiecutter.json'
        )
        generate.generate_files(context=context, repo_dir='tests/test-output-folder')
    
        something = """Hi!
    My name is Audrey Greenfeld.
    It is 2014.
    """
>       something2 = Path('output_folder/something.txt').read_text()

tests/test_output_folder.py:36: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:1134: in read_text
    with self.open(mode='r', encoding=encoding, errors=errors) as f:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('output_folder/something.txt'), mode = 'r', buffering = -1
encoding = 'locale', errors = None, newline = None

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return self._accessor.open(self, mode, buffering, encoding, errors,
                                   newline)
E       FileNotFoundError: [Errno 2] No such file or directory: 'output_folder/something.txt'

/usr/lib/python3.10/pathlib.py:1119: FileNotFoundError
___________________ test_exception_when_output_folder_exists ___________________

    @pytest.mark.usefixtures('clean_system', 'remove_output_folder')
    def test_exception_when_output_folder_exists():
        """Tests should raise error as output folder created before `generate_files`."""
        context = generate.generate_context(
            context_file='tests/test-output-folder/cookiecutter.json'
        )
>       output_folder = context['cookiecutter']['test_name']
E       TypeError: 'NoneType' object is not subscriptable

tests/test_output_folder.py:53: TypeError
_______________________ test_run_pre_prompt_python_hook ________________________

remove_tmp_repo_dir = <function remove_tmp_repo_dir.<locals>._func at 0x71e89db09120>

    def test_run_pre_prompt_python_hook(remove_tmp_repo_dir):
        """Verify pre_prompt.py runs and creates a copy of cookiecutter.json."""
        new_repo_dir = hooks.run_pre_prompt_hook(repo_dir='tests/test-pyhooks/')
>       assert new_repo_dir.exists()
E       AttributeError: 'NoneType' object has no attribute 'exists'

tests/test_pre_prompt_hooks.py:28: AttributeError
_____________________ test_run_pre_prompt_python_hook_fail _____________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e11ceb0>

    def test_run_pre_prompt_python_hook_fail(monkeypatch):
        """Verify pre_prompt.py will fail when a given env var is present."""
        message = 'Pre-Prompt Hook script failed'
        with monkeypatch.context() as m:
            m.setenv('COOKIECUTTER_FAIL_PRE_PROMPT', '1')
>           with pytest.raises(FailedHookException) as excinfo:
E           Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>

tests/test_pre_prompt_hooks.py:39: Failed
________________________ test_run_pre_prompt_shell_hook ________________________

remove_tmp_repo_dir = <function remove_tmp_repo_dir.<locals>._func at 0x71e89db095a0>

    @pytest.mark.skipif(WINDOWS, reason='shell script will not run in Windows')
    def test_run_pre_prompt_shell_hook(remove_tmp_repo_dir):
        """Verify pre_prompt.sh runs and creates a copy of cookiecutter.json."""
        new_repo_dir = hooks.run_pre_prompt_hook(repo_dir='tests/test-pyshellhooks/')
>       assert new_repo_dir.exists()
E       AttributeError: 'NoneType' object has no attribute 'exists'

tests/test_pre_prompt_hooks.py:48: AttributeError
_ TestRenderVariable.test_convert_to_str_complex_variables[raw_var0-rendered_var0] _

self = <tests.test_prompt.TestRenderVariable object at 0x71e89e3f3190>
raw_var = {1: True, 'foo': False}, rendered_var = {'1': True, 'foo': False}

    @pytest.mark.parametrize(
        'raw_var, rendered_var',
        [
            ({1: True, 'foo': False}, {'1': True, 'foo': False}),
            (
                {'{{cookiecutter.project}}': ['foo', 1], 'bar': False},
                {'foobar': ['foo', '1'], 'bar': False},
            ),
            (['foo', '{{cookiecutter.project}}', None], ['foo', 'foobar', None]),
        ],
    )
    def test_convert_to_str_complex_variables(self, raw_var, rendered_var):
        """Verify tree items correctly rendered."""
        env = environment.StrictEnvironment()
        context = {'project': 'foobar'}
    
        result = prompt.render_variable(env, raw_var, context)
>       assert result == rendered_var
E       AssertionError: assert None == {'1': True, 'foo': False}

tests/test_prompt.py:71: AssertionError
_ TestRenderVariable.test_convert_to_str_complex_variables[raw_var1-rendered_var1] _

self = <tests.test_prompt.TestRenderVariable object at 0x71e89e3f3310>
raw_var = {'bar': False, '{{cookiecutter.project}}': ['foo', 1]}
rendered_var = {'bar': False, 'foobar': ['foo', '1']}

    @pytest.mark.parametrize(
        'raw_var, rendered_var',
        [
            ({1: True, 'foo': False}, {'1': True, 'foo': False}),
            (
                {'{{cookiecutter.project}}': ['foo', 1], 'bar': False},
                {'foobar': ['foo', '1'], 'bar': False},
            ),
            (['foo', '{{cookiecutter.project}}', None], ['foo', 'foobar', None]),
        ],
    )
    def test_convert_to_str_complex_variables(self, raw_var, rendered_var):
        """Verify tree items correctly rendered."""
        env = environment.StrictEnvironment()
        context = {'project': 'foobar'}
    
        result = prompt.render_variable(env, raw_var, context)
>       assert result == rendered_var
E       AssertionError: assert None == {'foobar': ['foo', '1'], 'bar': False}

tests/test_prompt.py:71: AssertionError
_ TestRenderVariable.test_convert_to_str_complex_variables[raw_var2-rendered_var2] _

self = <tests.test_prompt.TestRenderVariable object at 0x71e89e3f34f0>
raw_var = ['foo', '{{cookiecutter.project}}', None]
rendered_var = ['foo', 'foobar', None]

    @pytest.mark.parametrize(
        'raw_var, rendered_var',
        [
            ({1: True, 'foo': False}, {'1': True, 'foo': False}),
            (
                {'{{cookiecutter.project}}': ['foo', 1], 'bar': False},
                {'foobar': ['foo', '1'], 'bar': False},
            ),
            (['foo', '{{cookiecutter.project}}', None], ['foo', 'foobar', None]),
        ],
    )
    def test_convert_to_str_complex_variables(self, raw_var, rendered_var):
        """Verify tree items correctly rendered."""
        env = environment.StrictEnvironment()
        context = {'project': 'foobar'}
    
        result = prompt.render_variable(env, raw_var, context)
>       assert result == rendered_var
E       AssertionError: assert None == ['foo', 'foobar', None]

tests/test_prompt.py:71: AssertionError
________ TestPrompt.test_prompt_for_config[ASCII default prompt/input] _________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f3970>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89da696c0>
context = {'cookiecutter': {'full_name': 'Your Name'}}

    @pytest.mark.parametrize(
        'context',
        [
            {'cookiecutter': {'full_name': 'Your Name'}},
            {'cookiecutter': {'full_name': 'Řekni či napiš své jméno'}},
        ],
        ids=['ASCII default prompt/input', 'Unicode default prompt/input'],
    )
    def test_prompt_for_config(self, monkeypatch, context):
        """Verify `prompt_for_config` call `read_user_variable` on text request."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
    
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == context['cookiecutter']
E       AssertionError: assert None == {'full_name': 'Your Name'}

tests/test_prompt.py:93: AssertionError
_______ TestPrompt.test_prompt_for_config[Unicode default prompt/input] ________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f3a00>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e06d030>
context = {'cookiecutter': {'full_name': 'Řekni či napiš své jméno'}}

    @pytest.mark.parametrize(
        'context',
        [
            {'cookiecutter': {'full_name': 'Your Name'}},
            {'cookiecutter': {'full_name': 'Řekni či napiš své jméno'}},
        ],
        ids=['ASCII default prompt/input', 'Unicode default prompt/input'],
    )
    def test_prompt_for_config(self, monkeypatch, context):
        """Verify `prompt_for_config` call `read_user_variable` on text request."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
    
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == context['cookiecutter']
E       AssertionError: assert None == {'full_name': '\u0158ekni \u010di napi\u0161 sv\xe9 jm\xe9no'}

tests/test_prompt.py:93: AssertionError
_ TestPrompt.test_prompt_for_config_with_human_prompts[ASCII default prompt/input] _

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f3ee0>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89da6a590>
context = {'cookiecutter': {'__prompts__': {'check': 'Checking', 'full_name': 'Name please'}, 'check': ['yes', 'no'], 'full_name': 'Your Name', 'nothing': 'ok'}}

    @pytest.mark.parametrize(
        'context',
        [
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    'nothing': 'ok',
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': 'Checking',
                    },
                }
            },
        ],
        ids=['ASCII default prompt/input'],
    )
    def test_prompt_for_config_with_human_prompts(self, monkeypatch, context):
        """Verify call `read_user_variable` on request when human-readable prompts."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_yes_no',
            lambda var, default, prompts, prefix: default,
        )
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_choice',
            lambda var, default, prompts, prefix: default,
        )
    
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == context['cookiecutter']
E       AssertionError: assert None == {'full_name': 'Your Name', 'check': ['yes', 'no'], 'nothing': 'ok', '__prompts__': {'full_name': 'Name please', 'check': 'Checking'}}

tests/test_prompt.py:128: AssertionError
________ TestPrompt.test_prompt_for_config_with_human_choices[context0] ________

self = <tests.test_prompt.TestPrompt object at 0x71e89e424310>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e1e9f60>
context = {'cookiecutter': {'__prompts__': {'check': 'Checking'}, 'check': ['yes', 'no'], 'full_name': 'Your Name'}}

    @pytest.mark.parametrize(
        'context',
        [
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'check': 'Checking',
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'__prompt__': 'Checking', 'yes': 'Yes', 'no': 'No'},
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'no': 'No'},
                    },
                }
            },
        ],
    )
    def test_prompt_for_config_with_human_choices(self, monkeypatch, context):
        """Test prompts when human-readable labels for user choices."""
        runner = click.testing.CliRunner()
        with runner.isolation(input="\n\n\n"):
            cookiecutter_dict = prompt.prompt_for_config(context)
    
>       assert dict(cookiecutter_dict) == {'full_name': 'Your Name', 'check': 'yes'}
E       TypeError: 'NoneType' object is not iterable

tests/test_prompt.py:170: TypeError
________ TestPrompt.test_prompt_for_config_with_human_choices[context1] ________

self = <tests.test_prompt.TestPrompt object at 0x71e89e424400>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89da6b9a0>
context = {'cookiecutter': {'__prompts__': {'check': {'__prompt__': 'Checking', 'no': 'No', 'yes': 'Yes'}, 'full_name': 'Name please'}, 'check': ['yes', 'no'], 'full_name': 'Your Name'}}

    @pytest.mark.parametrize(
        'context',
        [
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'check': 'Checking',
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'__prompt__': 'Checking', 'yes': 'Yes', 'no': 'No'},
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'no': 'No'},
                    },
                }
            },
        ],
    )
    def test_prompt_for_config_with_human_choices(self, monkeypatch, context):
        """Test prompts when human-readable labels for user choices."""
        runner = click.testing.CliRunner()
        with runner.isolation(input="\n\n\n"):
            cookiecutter_dict = prompt.prompt_for_config(context)
    
>       assert dict(cookiecutter_dict) == {'full_name': 'Your Name', 'check': 'yes'}
E       TypeError: 'NoneType' object is not iterable

tests/test_prompt.py:170: TypeError
________ TestPrompt.test_prompt_for_config_with_human_choices[context2] ________

self = <tests.test_prompt.TestPrompt object at 0x71e89e4245e0>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89e1f2740>
context = {'cookiecutter': {'__prompts__': {'check': {'no': 'No'}, 'full_name': 'Name please'}, 'check': ['yes', 'no'], 'full_name': 'Your Name'}}

    @pytest.mark.parametrize(
        'context',
        [
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'check': 'Checking',
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'__prompt__': 'Checking', 'yes': 'Yes', 'no': 'No'},
                    },
                }
            },
            {
                'cookiecutter': {
                    'full_name': 'Your Name',
                    'check': ['yes', 'no'],
                    '__prompts__': {
                        'full_name': 'Name please',
                        'check': {'no': 'No'},
                    },
                }
            },
        ],
    )
    def test_prompt_for_config_with_human_choices(self, monkeypatch, context):
        """Test prompts when human-readable labels for user choices."""
        runner = click.testing.CliRunner()
        with runner.isolation(input="\n\n\n"):
            cookiecutter_dict = prompt.prompt_for_config(context)
    
>       assert dict(cookiecutter_dict) == {'full_name': 'Your Name', 'check': 'yes'}
E       TypeError: 'NoneType' object is not iterable

tests/test_prompt.py:170: TypeError
____________________ TestPrompt.test_prompt_for_config_dict ____________________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f3fa0>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89da6a410>

    def test_prompt_for_config_dict(self, monkeypatch):
        """Verify `prompt_for_config` call `read_user_variable` on dict request."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_dict',
            lambda var, default, prompts, prefix: {"key": "value", "integer": 37},
        )
        context = {'cookiecutter': {'details': {}}}
    
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == {'details': {'key': 'value', 'integer': 37}}
E       AssertionError: assert None == {'details': {'key': 'value', 'integer': 37}}

tests/test_prompt.py:181: AssertionError
______________________ TestPrompt.test_should_render_dict ______________________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f2fb0>

    def test_should_render_dict(self):
        """Verify template inside dictionary variable rendered."""
        context = {
            'cookiecutter': {
                'project_name': 'Slartibartfast',
                'details': {
                    '{{cookiecutter.project_name}}': '{{cookiecutter.project_name}}'
                },
            }
        }
    
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == {
            'project_name': 'Slartibartfast',
            'details': {'Slartibartfast': 'Slartibartfast'},
        }
E       AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'Slartibartfast': 'Slartibartfast'}}

tests/test_prompt.py:195: AssertionError
___________________ TestPrompt.test_should_render_deep_dict ____________________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3f2170>

    def test_should_render_deep_dict(self):
        """Verify nested structures like dict in dict, rendered correctly."""
        context = {
            'cookiecutter': {
                'project_name': "Slartibartfast",
                'details': {
                    "key": "value",
                    "integer_key": 37,
                    "other_name": '{{cookiecutter.project_name}}',
                    "dict_key": {
                        "deep_key": "deep_value",
                        "deep_integer": 42,
                        "deep_other_name": '{{cookiecutter.project_name}}',
                        "deep_list": [
                            "deep value 1",
                            "{{cookiecutter.project_name}}",
                            "deep value 3",
                        ],
                    },
                    "list_key": [
                        "value 1",
                        "{{cookiecutter.project_name}}",
                        "value 3",
                    ],
                },
            }
        }
    
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == {
            'project_name': "Slartibartfast",
            'details': {
                "key": "value",
                "integer_key": "37",
                "other_name": "Slartibartfast",
                "dict_key": {
                    "deep_key": "deep_value",
                    "deep_integer": "42",
                    "deep_other_name": "Slartibartfast",
                    "deep_list": ["deep value 1", "Slartibartfast", "deep value 3"],
                },
                "list_key": ["value 1", "Slartibartfast", "value 3"],
            },
        }
E       AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'key': 'value', 'integer_key': '37', 'other_name': 'Slartibartfast', 'dict_key': {'deep_key': 'deep_value', 'deep_integer': '42', 'deep_other_name': 'Slartibartfast', 'deep_list': ['deep value 1', 'Slartibartfast', 'deep value 3']}, 'list_key': ['value 1', 'Slartibartfast', 'value 3']}}

tests/test_prompt.py:229: AssertionError
__________ TestPrompt.test_should_render_deep_dict_with_human_prompts __________

self = <tests.test_prompt.TestPrompt object at 0x71e89e3d9300>

    def test_should_render_deep_dict_with_human_prompts(self):
        """Verify dict rendered correctly when human-readable prompts."""
        context = {
            'cookiecutter': {
                'project_name': "Slartibartfast",
                'details': {
                    "key": "value",
                    "integer_key": 37,
                    "other_name": '{{cookiecutter.project_name}}',
                    "dict_key": {
                        "deep_key": "deep_value",
                    },
                },
                '__prompts__': {'project_name': 'Project name'},
            }
        }
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == {
            'project_name': "Slartibartfast",
            'details': {
                "key": "value",
                "integer_key": "37",
                "other_name": "Slartibartfast",
                "dict_key": {
                    "deep_key": "deep_value",
                },
            },
        }
E       AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'key': 'value', 'integer_key': '37', 'other_name': 'Slartibartfast', 'dict_key': {'deep_key': 'deep_value'}}}

tests/test_prompt.py:262: AssertionError
________________ TestPrompt.test_internal_use_no_human_prompts _________________

self = <tests.test_prompt.TestPrompt object at 0x71e89e424100>

    def test_internal_use_no_human_prompts(self):
        """Verify dict rendered correctly when human-readable prompts empty."""
        context = {
            'cookiecutter': {
                'project_name': "Slartibartfast",
                '__prompts__': {},
            }
        }
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == {
            'project_name': "Slartibartfast",
        }
E       AssertionError: assert None == {'project_name': 'Slartibartfast'}

tests/test_prompt.py:283: AssertionError
_________________ TestPrompt.test_prompt_for_templated_config __________________

self = <tests.test_prompt.TestPrompt object at 0x71e89e424c10>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89da6a590>

    def test_prompt_for_templated_config(self, monkeypatch):
        """Verify Jinja2 templating works in unicode prompts."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default, prompts, prefix: default,
        )
        context = {
            'cookiecutter': OrderedDict(
                [
                    ('project_name', 'A New Project'),
                    (
                        'pkg_name',
                        '{{ cookiecutter.project_name|lower|replace(" ", "") }}',
                    ),
                ]
            )
        }
    
        exp_cookiecutter_dict = {
            'project_name': 'A New Project',
            'pkg_name': 'anewproject',
        }
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == exp_cookiecutter_dict
E       AssertionError: assert None == {'project_name': 'A New Project', 'pkg_name': 'anewproject'}

tests/test_prompt.py:310: AssertionError
_____________ TestPrompt.test_dont_prompt_for_private_context_var ______________

self = <tests.test_prompt.TestPrompt object at 0x71e89e425090>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x71e89d976a10>

    def test_dont_prompt_for_private_context_var(self, monkeypatch):
        """Verify `read_user_variable` not called for private context variables."""
        monkeypatch.setattr(
            'cookiecutter.prompt.read_user_variable',
            lambda var, default: pytest.fail(
                'Should not try to read a response for private context var'
            ),
        )
        context = {'cookiecutter': {'_copy_without_render': ['*.html']}}
        cookiecutter_dict = prompt.prompt_for_config(context)
>       assert cookiecutter_dict == {'_copy_without_render': ['*.html']}
E       AssertionError: assert None == {'_copy_without_render': ['*.html']}

tests/test_prompt.py:322: AssertionError
_____ TestPrompt.test_should_render_private_variables_with_two_underscores _____

self = <tests.test_prompt.TestPrompt object at 0x71e89e425450>

    def test_should_render_private_variables_with_two_underscores(self):
        """Test rendering of private variables with two underscores.
    
        There are three cases:
        1. Variables beginning with a single underscore are private and not rendered.
        2. Variables beginning with a double underscore are private and are rendered.
        3. Variables beginning with anything other than underscores are not private and
           are rendered.
        """
        context = {
            'cookiecutter': OrderedDict(
                [
                    ('foo', 'Hello world'),
                    ('bar', 123),
                    ('rendered_foo', '{{ cookiecutter.foo|lower }}'),
                    ('rendered_bar', 123),
                    ('_hidden_foo', '{{ cookiecutter.foo|lower }}'),
                    ('_hidden_bar', 123),
                    ('__rendered_hidden_foo', '{{ cookiecutter.foo|lower }}'),
                    ('__rendered_hidden_bar', 123),
                ]
            )
        }
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == OrderedDict(
            [
                ('foo', 'Hello world'),
                ('bar', '123'),
                ('rendered_foo', 'hello world'),
                ('rendered_bar', '123'),
                ('_hidden_foo', '{{ cookiecutter.foo|lower }}'),
                ('_hidden_bar', 123),
                ('__rendered_hidden_foo', 'hello world'),
                ('__rendered_hidden_bar', '123'),
            ]
        )
E       AssertionError: assert None == OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')])
E        +  where OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')]) = OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')])

tests/test_prompt.py:348: AssertionError
_____________ TestPrompt.test_should_not_render_private_variables ______________

self = <tests.test_prompt.TestPrompt object at 0x71e89e425810>

    def test_should_not_render_private_variables(self):
        """Verify private(underscored) variables not rendered by `prompt_for_config`.
    
        Private variables designed to be raw, same as context input.
        """
        context = {
            'cookiecutter': {
                'project_name': 'Skip render',
                '_skip_jinja_template': '{{cookiecutter.project_name}}',
                '_skip_float': 123.25,
                '_skip_integer': 123,
                '_skip_boolean': True,
                '_skip_nested': True,
            }
        }
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == context['cookiecutter']
E       AssertionError: assert None == {'project_name': 'Skip render', '_skip_jinja_template': '{{cookiecutter.project_name}}', '_skip_float': 123.25, '_skip_integer': 123, '_skip_boolean': True, '_skip_nested': True}

tests/test_prompt.py:377: AssertionError
______________ TestReadUserYesNo.test_boolean_parameter_no_input _______________

self = <tests.test_prompt.TestReadUserYesNo object at 0x71e89e4265c0>

    def test_boolean_parameter_no_input(self):
        """Verify boolean parameter sent to prompt for config with no input."""
        context = {
            'cookiecutter': {
                'run_as_docker': True,
            }
        }
        cookiecutter_dict = prompt.prompt_for_config(context, no_input=True)
>       assert cookiecutter_dict == context['cookiecutter']
E       AssertionError: assert None == {'run_as_docker': True}

tests/test_prompt.py:554: AssertionError
_______ test_undefined_variable[Undefined variable in cookiecutter dict] _______

context = {'cookiecutter': {'foo': '{{cookiecutter.nope}}'}}

    @pytest.mark.parametrize(
        'context',
        (
            {'cookiecutter': {'foo': '{{cookiecutter.nope}}'}},
            {'cookiecutter': {'foo': ['123', '{{cookiecutter.nope}}', '456']}},
            {'cookiecutter': {'foo': {'{{cookiecutter.nope}}': 'value'}}},
            {'cookiecutter': {'foo': {'key': '{{cookiecutter.nope}}'}}},
        ),
        ids=[
            'Undefined variable in cookiecutter dict',
            'Undefined variable in cookiecutter dict with choices',
            'Undefined variable in cookiecutter dict with dict_key',
            'Undefined variable in cookiecutter dict with key_value',
        ],
    )
    def test_undefined_variable(context):
        """Verify `prompt.prompt_for_config` raises correct error."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_prompt.py:574: Failed
_ test_undefined_variable[Undefined variable in cookiecutter dict with choices] _

context = {'cookiecutter': {'foo': ['123', '{{cookiecutter.nope}}', '456']}}

    @pytest.mark.parametrize(
        'context',
        (
            {'cookiecutter': {'foo': '{{cookiecutter.nope}}'}},
            {'cookiecutter': {'foo': ['123', '{{cookiecutter.nope}}', '456']}},
            {'cookiecutter': {'foo': {'{{cookiecutter.nope}}': 'value'}}},
            {'cookiecutter': {'foo': {'key': '{{cookiecutter.nope}}'}}},
        ),
        ids=[
            'Undefined variable in cookiecutter dict',
            'Undefined variable in cookiecutter dict with choices',
            'Undefined variable in cookiecutter dict with dict_key',
            'Undefined variable in cookiecutter dict with key_value',
        ],
    )
    def test_undefined_variable(context):
        """Verify `prompt.prompt_for_config` raises correct error."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_prompt.py:574: Failed
_ test_undefined_variable[Undefined variable in cookiecutter dict with dict_key] _

context = {'cookiecutter': {'foo': {'{{cookiecutter.nope}}': 'value'}}}

    @pytest.mark.parametrize(
        'context',
        (
            {'cookiecutter': {'foo': '{{cookiecutter.nope}}'}},
            {'cookiecutter': {'foo': ['123', '{{cookiecutter.nope}}', '456']}},
            {'cookiecutter': {'foo': {'{{cookiecutter.nope}}': 'value'}}},
            {'cookiecutter': {'foo': {'key': '{{cookiecutter.nope}}'}}},
        ),
        ids=[
            'Undefined variable in cookiecutter dict',
            'Undefined variable in cookiecutter dict with choices',
            'Undefined variable in cookiecutter dict with dict_key',
            'Undefined variable in cookiecutter dict with key_value',
        ],
    )
    def test_undefined_variable(context):
        """Verify `prompt.prompt_for_config` raises correct error."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_prompt.py:574: Failed
_ test_undefined_variable[Undefined variable in cookiecutter dict with key_value] _

context = {'cookiecutter': {'foo': {'key': '{{cookiecutter.nope}}'}}}

    @pytest.mark.parametrize(
        'context',
        (
            {'cookiecutter': {'foo': '{{cookiecutter.nope}}'}},
            {'cookiecutter': {'foo': ['123', '{{cookiecutter.nope}}', '456']}},
            {'cookiecutter': {'foo': {'{{cookiecutter.nope}}': 'value'}}},
            {'cookiecutter': {'foo': {'key': '{{cookiecutter.nope}}'}}},
        ),
        ids=[
            'Undefined variable in cookiecutter dict',
            'Undefined variable in cookiecutter dict with choices',
            'Undefined variable in cookiecutter dict with dict_key',
            'Undefined variable in cookiecutter dict with key_value',
        ],
    )
    def test_undefined_variable(context):
        """Verify `prompt.prompt_for_config` raises correct error."""
>       with pytest.raises(exceptions.UndefinedVariableInTemplate) as err:
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>

tests/test_prompt.py:574: Failed
____ test_cookiecutter_nested_templates[fake-nested-templates-fake-project] ____

template_dir = 'fake-nested-templates'
expected = PosixPath('/workspace/cookiecutter/tests/fake-nested-templates/fake-project')

    @pytest.mark.parametrize(
        "template_dir,expected",
        [
            ["fake-nested-templates", "fake-project"],
            ["fake-nested-templates-old-style", "fake-package"],
        ],
    )
    def test_cookiecutter_nested_templates(template_dir: str, expected: str):
        """Test nested_templates generation."""
        from cookiecutter import prompt
    
        main_dir = (Path("tests") / template_dir).resolve()
        cookiecuter_context = json.loads((main_dir / "cookiecutter.json").read_text())
        context = {"cookiecutter": cookiecuter_context}
        output_dir = prompt.choose_nested_template(context, main_dir, no_input=True)
        expected = (Path(main_dir) / expected).resolve()
>       assert output_dir == f"{expected}"
E       AssertionError: assert None == '/workspace/cookiecutter/tests/fake-nested-templates/fake-project'

tests/test_prompt.py:598: AssertionError
_ test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package] _

template_dir = 'fake-nested-templates-old-style'
expected = PosixPath('/workspace/cookiecutter/tests/fake-nested-templates-old-style/fake-package')

    @pytest.mark.parametrize(
        "template_dir,expected",
        [
            ["fake-nested-templates", "fake-project"],
            ["fake-nested-templates-old-style", "fake-package"],
        ],
    )
    def test_cookiecutter_nested_templates(template_dir: str, expected: str):
        """Test nested_templates generation."""
        from cookiecutter import prompt
    
        main_dir = (Path("tests") / template_dir).resolve()
        cookiecuter_context = json.loads((main_dir / "cookiecutter.json").read_text())
        context = {"cookiecutter": cookiecuter_context}
        output_dir = prompt.choose_nested_template(context, main_dir, no_input=True)
        expected = (Path(main_dir) / expected).resolve()
>       assert output_dir == f"{expected}"
E       AssertionError: assert None == '/workspace/cookiecutter/tests/fake-nested-templates-old-style/fake-package'

tests/test_prompt.py:598: AssertionError
______________ test_cookiecutter_nested_templates_invalid_paths[] ______________

path = ''

    @pytest.mark.skipif(sys.platform.startswith('win'), reason="Linux / macos test")
    @pytest.mark.parametrize(
        "path",
        [
            "",
            "/tmp",
            "/foo",
        ],
    )
    def test_cookiecutter_nested_templates_invalid_paths(path: str):
        """Test nested_templates generation."""
        from cookiecutter import prompt
    
        main_dir = (Path("tests") / "fake-nested-templates").resolve()
        cookiecuter_context = json.loads((main_dir / "cookiecutter.json").read_text())
        cookiecuter_context["templates"]["fake-project"]["path"] = path
        context = {"cookiecutter": cookiecuter_context}
>       with pytest.raises(ValueError) as exc:
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_prompt.py:618: Failed
____________ test_cookiecutter_nested_templates_invalid_paths[/tmp] ____________

path = '/tmp'

    @pytest.mark.skipif(sys.platform.startswith('win'), reason="Linux / macos test")
    @pytest.mark.parametrize(
        "path",
        [
            "",
            "/tmp",
            "/foo",
        ],
    )
    def test_cookiecutter_nested_templates_invalid_paths(path: str):
        """Test nested_templates generation."""
        from cookiecutter import prompt
    
        main_dir = (Path("tests") / "fake-nested-templates").resolve()
        cookiecuter_context = json.loads((main_dir / "cookiecutter.json").read_text())
        cookiecuter_context["templates"]["fake-project"]["path"] = path
        context = {"cookiecutter": cookiecuter_context}
>       with pytest.raises(ValueError) as exc:
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_prompt.py:618: Failed
____________ test_cookiecutter_nested_templates_invalid_paths[/foo] ____________

path = '/foo'

    @pytest.mark.skipif(sys.platform.startswith('win'), reason="Linux / macos test")
    @pytest.mark.parametrize(
        "path",
        [
            "",
            "/tmp",
            "/foo",
        ],
    )
    def test_cookiecutter_nested_templates_invalid_paths(path: str):
        """Test nested_templates generation."""
        from cookiecutter import prompt
    
        main_dir = (Path("tests") / "fake-nested-templates").resolve()
        cookiecuter_context = json.loads((main_dir / "cookiecutter.json").read_text())
        cookiecuter_context["templates"]["fake-project"]["path"] = path
        context = {"cookiecutter": cookiecuter_context}
>       with pytest.raises(ValueError) as exc:
E       Failed: DID NOT RAISE <class 'ValueError'>

tests/test_prompt.py:618: Failed
________________ test_raise_if_options_is_not_a_non_empty_list _________________

    def test_raise_if_options_is_not_a_non_empty_list():
        """Test function called by cookiecutter raise expected errors.
    
        Test for choice type invocation.
        """
>       with pytest.raises(TypeError):
E       Failed: DID NOT RAISE <class 'TypeError'>

tests/test_read_user_choice.py:37: Failed
________________________ test_process_json_invalid_json ________________________

    def test_process_json_invalid_json():
        """Test `process_json` for correct error on malformed input."""
>       with pytest.raises(InvalidResponse) as exc_info:
E       Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>

tests/test_read_user_dict.py:12: Failed
__________________________ test_process_json_non_dict __________________________

    def test_process_json_non_dict():
        """Test `process_json` for correct error on non-JSON input."""
>       with pytest.raises(InvalidResponse) as exc_info:
E       Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>

tests/test_read_user_dict.py:20: Failed
_________________________ test_process_json_valid_json _________________________

    def test_process_json_valid_json():
        """Test `process_json` for correct output on JSON input.
    
        Test for simple dict with list.
        """
        user_value = '{"name": "foobar", "bla": ["a", 1, "b", false]}'
    
>       assert process_json(user_value) == {
            'name': 'foobar',
            'bla': ['a', 1, 'b', False],
        }
E       assert None == {'name': 'foobar', 'bla': ['a', 1, 'b', False]}
E        +  where None = process_json('{"name": "foobar", "bla": ["a", 1, "b", false]}')

tests/test_read_user_dict.py:33: AssertionError
_________________________ test_process_json_deep_dict __________________________

    def test_process_json_deep_dict():
        """Test `process_json` for correct output on JSON input.
    
        Test for dict in dict case.
        """
        user_value = '''{
            "key": "value",
            "integer_key": 37,
            "dict_key": {
                "deep_key": "deep_value",
                "deep_integer": 42,
                "deep_list": [
                    "deep value 1",
                    "deep value 2",
                    "deep value 3"
                ]
            },
            "list_key": [
                "value 1",
                "value 2",
                "value 3"
            ]
        }'''
    
>       assert process_json(user_value) == {
            "key": "value",
            "integer_key": 37,
            "dict_key": {
                "deep_key": "deep_value",
                "deep_integer": 42,
                "deep_list": ["deep value 1", "deep value 2", "deep value 3"],
            },
            "list_key": ["value 1", "value 2", "value 3"],
        }
E       assert None == {'key': 'value', 'integer_key': 37, 'dict_key': {'deep_key': 'deep_value', 'deep_integer': 42, 'deep_list': ['deep value 1', 'deep value 2', 'deep value 3']}, 'list_key': ['value 1', 'value 2', 'value 3']}
E        +  where None = process_json('{\n        "key": "value",\n        "integer_key": 37,\n        "dict_key": {\n            "deep_key": "deep_value",\n            "deep_integer": 42,\n            "deep_list": [\n                "deep value 1",\n                "deep value 2",\n                "deep value 3"\n            ]\n        },\n        "list_key": [\n            "value 1",\n            "value 2",\n            "value 3"\n        ]\n    }')

tests/test_read_user_dict.py:63: AssertionError
______________________ test_json_prompt_process_response _______________________

    def test_json_prompt_process_response():
        """Test `JsonPrompt` process_response to convert str to json."""
        jp = JsonPrompt()
>       assert jp.process_response('{"project_slug": "something"}') == {
            'project_slug': 'something'
        }
E       assert None == {'project_slug': 'something'}
E        +  where None = process_response('{"project_slug": "something"}')
E        +    where process_response = <cookiecutter.prompt.JsonPrompt object at 0x71e89dbfa770>.process_response

tests/test_read_user_dict.py:128: AssertionError
______________________ test_yesno_prompt_process_response ______________________

    def test_yesno_prompt_process_response():
        """Test `YesNoPrompt` process_response to convert str to bool."""
        ynp = YesNoPrompt()
>       with pytest.raises(InvalidResponse):
E       Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>

tests/test_read_user_yes_no.py:28: Failed
________________ test_should_raise_error_if_repo_does_not_exist ________________

    def test_should_raise_error_if_repo_does_not_exist():
        """Cookiecutter invocation with non-exist repository should raise error."""
>       with pytest.raises(exceptions.RepositoryNotFound):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>

tests/test_repo_not_found.py:10: Failed
________________________ test_build_templates[include] _________________________

template = 'include'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_build_templates_include_0/templates'

    @pytest.mark.parametrize("template", ["include", "no-templates", "extends", "super"])
    def test_build_templates(template, output_dir):
        """
        Verify Templates Design keywords.
    
        no-templates is a compatibility tests for repo without `templates` directory
        """
        project_dir = main.cookiecutter(
            f'tests/test-templates/{template}',
            no_input=True,
            output_dir=output_dir,
        )
    
>       readme = Path(project_dir, 'requirements.txt').read_text()

tests/test_templates.py:34: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'requirements.txt')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
______________________ test_build_templates[no-templates] ______________________

template = 'no-templates'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_build_templates_no_templa0/templates'

    @pytest.mark.parametrize("template", ["include", "no-templates", "extends", "super"])
    def test_build_templates(template, output_dir):
        """
        Verify Templates Design keywords.
    
        no-templates is a compatibility tests for repo without `templates` directory
        """
        project_dir = main.cookiecutter(
            f'tests/test-templates/{template}',
            no_input=True,
            output_dir=output_dir,
        )
    
>       readme = Path(project_dir, 'requirements.txt').read_text()

tests/test_templates.py:34: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'requirements.txt')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
________________________ test_build_templates[extends] _________________________

template = 'extends'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_build_templates_extends_0/templates'

    @pytest.mark.parametrize("template", ["include", "no-templates", "extends", "super"])
    def test_build_templates(template, output_dir):
        """
        Verify Templates Design keywords.
    
        no-templates is a compatibility tests for repo without `templates` directory
        """
        project_dir = main.cookiecutter(
            f'tests/test-templates/{template}',
            no_input=True,
            output_dir=output_dir,
        )
    
>       readme = Path(project_dir, 'requirements.txt').read_text()

tests/test_templates.py:34: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'requirements.txt')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
_________________________ test_build_templates[super] __________________________

template = 'super'
output_dir = '/tmp/pytest-of-openhands/pytest-11/test_build_templates_super_0/templates'

    @pytest.mark.parametrize("template", ["include", "no-templates", "extends", "super"])
    def test_build_templates(template, output_dir):
        """
        Verify Templates Design keywords.
    
        no-templates is a compatibility tests for repo without `templates` directory
        """
        project_dir = main.cookiecutter(
            f'tests/test-templates/{template}',
            no_input=True,
            output_dir=output_dir,
        )
    
>       readme = Path(project_dir, 'requirements.txt').read_text()

tests/test_templates.py:34: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/pathlib.py:960: in __new__
    self = cls._from_parts(args)
/usr/lib/python3.10/pathlib.py:594: in _from_parts
    drv, root, parts = self._parse_args(args)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'pathlib.PosixPath'>, args = (None, 'requirements.txt')

    @classmethod
    def _parse_args(cls, args):
        # This is useful when you don't want to create an instance, just
        # canonicalize some constructor arguments.
        parts = []
        for a in args:
            if isinstance(a, PurePath):
                parts += a._parts
            else:
>               a = os.fspath(a)
E               TypeError: expected str, bytes or os.PathLike object, not NoneType

/usr/lib/python3.10/pathlib.py:578: TypeError
_______________________ test_accept_valid_timezones[utc] _______________________

environment = <jinja2.environment.Environment object at 0x71e89d96fa60>
valid_tz = 'utc'

    @pytest.mark.parametrize("valid_tz", ['utc', 'local', 'Europe/Berlin'])
    def test_accept_valid_timezones(environment, valid_tz):
        """Verify that valid timezones are accepted."""
        template = environment.from_string(f"{{% now '{valid_tz}', '%Y-%m' %}}")
    
>       assert template.render() == '2015-12'
E       AssertionError: assert '%Y-%m' == '2015-12'
E         
E         - 2015-12
E         + %Y-%m

tests/test_time_extension.py:41: AssertionError
______________________ test_accept_valid_timezones[local] ______________________

environment = <jinja2.environment.Environment object at 0x71e89d941e70>
valid_tz = 'local'

    @pytest.mark.parametrize("valid_tz", ['utc', 'local', 'Europe/Berlin'])
    def test_accept_valid_timezones(environment, valid_tz):
        """Verify that valid timezones are accepted."""
        template = environment.from_string(f"{{% now '{valid_tz}', '%Y-%m' %}}")
    
>       assert template.render() == '2015-12'
E       AssertionError: assert '%Y-%m' == '2015-12'
E         
E         - 2015-12
E         + %Y-%m

tests/test_time_extension.py:41: AssertionError
__________________ test_accept_valid_timezones[Europe/Berlin] __________________

environment = <jinja2.environment.Environment object at 0x71e89d96e9b0>
valid_tz = 'Europe/Berlin'

    @pytest.mark.parametrize("valid_tz", ['utc', 'local', 'Europe/Berlin'])
    def test_accept_valid_timezones(environment, valid_tz):
        """Verify that valid timezones are accepted."""
        template = environment.from_string(f"{{% now '{valid_tz}', '%Y-%m' %}}")
    
>       assert template.render() == '2015-12'
E       AssertionError: assert '%Y-%m' == '2015-12'
E         
E         - 2015-12
E         + %Y-%m

tests/test_time_extension.py:41: AssertionError
_______________________ test_environment_datetime_format _______________________

environment = <jinja2.environment.Environment object at 0x71e89d98b8b0>

    def test_environment_datetime_format(environment):
        """Verify datetime format can be parsed from environment."""
        environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
    
        template = environment.from_string("{% now 'utc' %}")
    
>       assert template.render() == "Wed, 09 Dec 2015 23:33:01"
E       AssertionError: assert '2015-12-09' == 'Wed, 09 Dec 2015 23:33:01'
E         
E         - Wed, 09 Dec 2015 23:33:01
E         + 2015-12-09

tests/test_time_extension.py:50: AssertionError
________________________________ test_add_time _________________________________

environment = <jinja2.environment.Environment object at 0x71e89d96e7a0>

    def test_add_time(environment):
        """Verify that added time offset can be parsed."""
        environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
    
        template = environment.from_string("{% now 'utc' + 'hours=2,seconds=30' %}")
    
>       assert template.render() == "Thu, 10 Dec 2015 01:33:31"
E       AssertionError: assert '2015-12-09' == 'Thu, 10 Dec 2015 01:33:31'
E         
E         - Thu, 10 Dec 2015 01:33:31
E         + 2015-12-09

tests/test_time_extension.py:59: AssertionError
_____________________________ test_substract_time ______________________________

environment = <jinja2.environment.Environment object at 0x71e89d98b3d0>

    def test_substract_time(environment):
        """Verify that substracted time offset can be parsed."""
        environment.datetime_format = '%a, %d %b %Y %H:%M:%S'
    
        template = environment.from_string("{% now 'utc' - 'minutes=11' %}")
    
>       assert template.render() == "Wed, 09 Dec 2015 23:22:01"

tests/test_time_extension.py:68: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/home/openhands/.local/lib/python3.10/site-packages/jinja2/environment.py:1295: in render
    self.environment.handle_exception()
/home/openhands/.local/lib/python3.10/site-packages/jinja2/environment.py:942: in handle_exception
    raise rewrite_traceback_stack(source=source)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   ???
E   TypeError: unsupported operand type(s) for -: 'str' and 'str'

<template>:1: TypeError
___________________________ test_offset_with_format ____________________________

environment = <jinja2.environment.Environment object at 0x71e89e126920>

    def test_offset_with_format(environment):
        """Verify that offset works together with datetime format."""
        environment.datetime_format = '%d %b %Y %H:%M:%S'
    
        template = environment.from_string(
            "{% now 'utc' - 'days=2,minutes=33,seconds=1', '%d %b %Y %H:%M:%S' %}"
        )
    
>       assert template.render() == "07 Dec 2015 23:00:00"

tests/test_time_extension.py:79: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/home/openhands/.local/lib/python3.10/site-packages/jinja2/environment.py:1295: in render
    self.environment.handle_exception()
/home/openhands/.local/lib/python3.10/site-packages/jinja2/environment.py:942: in handle_exception
    raise rewrite_traceback_stack(source=source)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   ???
E   TypeError: unsupported operand type(s) for -: 'str' and 'str'

<template>:1: TypeError
_ test_identify_known_repo[git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] _

repo_url = 'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git'
exp_repo_type = 'git'
exp_repo_url = 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('git', 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[hg+https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] _

repo_url = 'hg+https://bitbucket.org/foo/bar.hg', exp_repo_type = 'hg'
exp_repo_url = 'https://bitbucket.org/foo/bar.hg'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('hg', 'https://bitbucket.org/foo/bar.hg')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('hg+https://bitbucket.org/foo/bar.hg')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] _

repo_url = 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git'
exp_repo_type = 'git'
exp_repo_url = 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('git', 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] _

repo_url = 'https://bitbucket.org/foo/bar.hg', exp_repo_type = 'hg'
exp_repo_url = 'https://bitbucket.org/foo/bar.hg'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('hg', 'https://bitbucket.org/foo/bar.hg')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('https://bitbucket.org/foo/bar.hg')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage.git-git-https://github.com/audreyfeldroy/cookiecutter-pypackage.git] _

repo_url = 'https://github.com/audreyfeldroy/cookiecutter-pypackage.git'
exp_repo_type = 'git'
exp_repo_url = 'https://github.com/audreyfeldroy/cookiecutter-pypackage.git'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('git', 'https://github.com/audreyfeldroy/cookiecutter-pypackage.git')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/audreyfeldroy/cookiecutter-pypackage.git')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage-git-https://github.com/audreyfeldroy/cookiecutter-pypackage] _

repo_url = 'https://github.com/audreyfeldroy/cookiecutter-pypackage'
exp_repo_type = 'git'
exp_repo_url = 'https://github.com/audreyfeldroy/cookiecutter-pypackage'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('git', 'https://github.com/audreyfeldroy/cookiecutter-pypackage')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/audreyfeldroy/cookiecutter-pypackage')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git-git-git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git] _

repo_url = 'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git'
exp_repo_type = 'git'
exp_repo_url = 'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('git', 'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_ test_identify_known_repo[https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket-hg-https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket] _

repo_url = 'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket'
exp_repo_type = 'hg'
exp_repo_url = 'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket'

    @pytest.mark.parametrize(
        'repo_url, exp_repo_type, exp_repo_url',
        [
            (
                'git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            (
                'hg+https://bitbucket.org/foo/bar.hg',
                'hg',
                'https://bitbucket.org/foo/bar.hg',
            ),
            (
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
                'git',
                'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git',
            ),
            ('https://bitbucket.org/foo/bar.hg', 'hg', 'https://bitbucket.org/foo/bar.hg'),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage.git',
            ),
            (
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
                'git',
                'https://github.com/audreyfeldroy/cookiecutter-pypackage',
            ),
            (
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
                'git',
                'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git',
            ),
            (
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
                'hg',
                'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket',
            ),
        ],
    )
    def test_identify_known_repo(repo_url, exp_repo_type, exp_repo_url):
        """Verify different correct repositories url syntax is correctly transformed."""
>       assert vcs.identify_repo(repo_url) == (exp_repo_type, exp_repo_url)
E       AssertionError: assert None == ('hg', 'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket')
E        +  where None = <function identify_repo at 0x71e89e94caf0>('https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket')
E        +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo

tests/vcs/test_identify_repo.py:51: AssertionError
_________________ test_identify_raise_on_unknown_repo[foo+git] _________________

unknown_repo_type_url = 'foo+git'

    def test_identify_raise_on_unknown_repo(unknown_repo_type_url):
        """Verify different incorrect repositories url syntax trigger error raising."""
>       with pytest.raises(exceptions.UnknownRepoType):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>

tests/vcs/test_identify_repo.py:70: Failed
_________________ test_identify_raise_on_unknown_repo[foo+hg] __________________

unknown_repo_type_url = 'foo+hg'

    def test_identify_raise_on_unknown_repo(unknown_repo_type_url):
        """Verify different incorrect repositories url syntax trigger error raising."""
>       with pytest.raises(exceptions.UnknownRepoType):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>

tests/vcs/test_identify_repo.py:70: Failed
_________________ test_identify_raise_on_unknown_repo[foo+bar] _________________

unknown_repo_type_url = 'foo+bar'

    def test_identify_raise_on_unknown_repo(unknown_repo_type_url):
        """Verify different incorrect repositories url syntax trigger error raising."""
>       with pytest.raises(exceptions.UnknownRepoType):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>

tests/vcs/test_identify_repo.py:70: Failed
_________________ test_identify_raise_on_unknown_repo[foobar] __________________

unknown_repo_type_url = 'foobar'

    def test_identify_raise_on_unknown_repo(unknown_repo_type_url):
        """Verify different incorrect repositories url syntax trigger error raising."""
>       with pytest.raises(exceptions.UnknownRepoType):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>

tests/vcs/test_identify_repo.py:70: Failed
_____ test_identify_raise_on_unknown_repo[http://norepotypespecified.com] ______

unknown_repo_type_url = 'http://norepotypespecified.com'

    def test_identify_raise_on_unknown_repo(unknown_repo_type_url):
        """Verify different incorrect repositories url syntax trigger error raising."""
>       with pytest.raises(exceptions.UnknownRepoType):
E       Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>

tests/vcs/test_identify_repo.py:70: Failed
--------------------------------- JSON report ----------------------------------
report saved to: report.json
================================ tests coverage ================================
_______________ coverage: platform linux, python 3.10.12-final-0 _______________

Name                          Stmts   Miss  Cover   Missing
-----------------------------------------------------------
cookiecutter/__init__.py          6      0   100%
cookiecutter/__main__.py          1      0   100%
cookiecutter/cli.py              39      2    95%   23, 53
cookiecutter/config.py           40      2    95%   15, 61
cookiecutter/environment.py      17      2    88%   26-27
cookiecutter/exceptions.py       23      0   100%
cookiecutter/extensions.py       56      7    88%   19, 30-34, 46, 58
cookiecutter/find.py              8      0   100%
cookiecutter/generate.py         30      2    93%   29, 72
cookiecutter/hooks.py            28      2    93%   24, 77
cookiecutter/log.py               6      0   100%
cookiecutter/main.py             31      5    84%   81-82, 85-86, 89
cookiecutter/prompt.py           48      8    83%   19, 44, 51, 89, 112, 119, 126, 157
cookiecutter/replay.py            9      0   100%
cookiecutter/repository.py       16      0   100%
cookiecutter/utils.py            42      9    79%   20-21, 60-61, 66-70
cookiecutter/vcs.py              17      2    88%   30, 43
cookiecutter/zipfile.py          11      1    91%   26
-----------------------------------------------------------
TOTAL                           428     42    90%
=========================== short test summary info ============================
FAILED tests/replay/test_dump.py::test_type_error_if_no_template_name - Failed: DID NOT RAISE <class 'TypeError'>
FAILED tests/replay/test_dump.py::test_type_error_if_not_dict_context - Failed: DID NOT RAISE <class 'TypeError'>
FAILED tests/replay/test_dump.py::test_value_error_if_key_missing_in_context - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/replay/test_load.py::test_type_error_if_no_template_name - Failed: DID NOT RAISE <class 'TypeError'>
FAILED tests/replay/test_replay.py::test_get_replay_file_name[bar] - AssertionError: assert None == 'foo/bar.json'
FAILED tests/replay/test_replay.py::test_get_replay_file_name[bar.json] - AssertionError: assert None == 'foo/bar.json'
FAILED tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs0] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>
FAILED tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs1] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>
FAILED tests/replay/test_replay.py::test_raise_on_invalid_mode[invalid_kwargs2] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidModeException'>
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Simple expansion] - AssertionError: assert None == 'bar'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Skip expansion (expansion not an abbreviation)] - AssertionError: assert None == 'baz'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Expansion prefix] - AssertionError: assert None == '<a>'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[expansion_override_builtin] - AssertionError: assert None == '<a>'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[expansion_prefix_ignores_suffix] - AssertionError: assert None == '<>'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (github)] - AssertionError: assert None == 'https://github.com/pydanny/cookiecutter-django.git'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (gitlab)] - AssertionError: assert None == 'https://gitlab.com/pydanny/cookiecutter-django.git'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion[Correct expansion for builtin abbreviations (bitbucket)] - AssertionError: assert None == 'https://bitbucket.org/pydanny/cookiecutter-django'
FAILED tests/repository/test_abbreviation_expansion.py::test_abbreviation_expansion_prefix_not_0_in_braces - Failed: DID NOT RAISE <class 'IndexError'>
FAILED tests/repository/test_determine_repo_dir_finds_existing_cookiecutter.py::test_should_find_existing_cookiecutter - TypeError: cannot unpack non-iterable NoneType object
FAILED tests/repository/test_determine_repo_dir_finds_subdirectories.py::test_should_find_existing_cookiecutter - TypeError: cannot unpack non-iterable NoneType object
FAILED tests/repository/test_determine_repo_dir_finds_subdirectories.py::test_local_repo_typo - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>
FAILED tests/repository/test_determine_repository_should_use_local_repo.py::test_finds_local_repo - TypeError: cannot unpack non-iterable NoneType object
FAILED tests/repository/test_determine_repository_should_use_local_repo.py::test_local_repo_with_no_context_raises - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>
FAILED tests/repository/test_determine_repository_should_use_local_repo.py::test_local_repo_typo - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>
FAILED tests/repository/test_is_repo_url.py::test_is_zip_file[/path/to/zipfile.zip] - AssertionError: assert None is True
 +  where None = is_zip_file('/path/to/zipfile.zip')
FAILED tests/repository/test_is_repo_url.py::test_is_zip_file[https://example.com/path/to/zipfile.zip] - AssertionError: assert None is True
 +  where None = is_zip_file('https://example.com/path/to/zipfile.zip')
FAILED tests/repository/test_is_repo_url.py::test_is_zip_file[http://example.com/path/to/zipfile.zip] - AssertionError: assert None is True
 +  where None = is_zip_file('http://example.com/path/to/zipfile.zip')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[gitolite@server:team/repo] - AssertionError: assert None is True
 +  where None = is_repo_url('gitolite@server:team/repo')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[git@github.com:audreyfeldroy/cookiecutter.git] - AssertionError: assert None is True
 +  where None = is_repo_url('git@github.com:audreyfeldroy/cookiecutter.git')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[https://github.com/cookiecutter/cookiecutter.git] - AssertionError: assert None is True
 +  where None = is_repo_url('https://github.com/cookiecutter/cookiecutter.git')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[git+https://private.com/gitrepo] - AssertionError: assert None is True
 +  where None = is_repo_url('git+https://private.com/gitrepo')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[hg+https://private.com/mercurialrepo] - AssertionError: assert None is True
 +  where None = is_repo_url('hg+https://private.com/mercurialrepo')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[https://bitbucket.org/pokoli/cookiecutter.hg] - AssertionError: assert None is True
 +  where None = is_repo_url('https://bitbucket.org/pokoli/cookiecutter.hg')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_remote_urls[file://server/path/to/repo.git] - AssertionError: assert None is True
 +  where None = is_repo_url('file://server/path/to/repo.git')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[/audreyr/cookiecutter.git] - AssertionError: assert None is False
 +  where None = is_repo_url('/audreyr/cookiecutter.git')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[/home/audreyr/cookiecutter] - AssertionError: assert None is False
 +  where None = is_repo_url('/home/audreyr/cookiecutter')
FAILED tests/repository/test_is_repo_url.py::test_is_repo_url_for_local_urls[c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template] - AssertionError: assert None is False
 +  where None = is_repo_url('c:\\users\\foo\\appdata\\local\\temp\\1\\pytest-0\\test_default_output_dir0\\template')
FAILED tests/repository/test_is_repo_url.py::test_expand_abbreviations - AssertionError: assert None is False
 +  where None = is_repo_url('gh:audreyfeldroy/cookiecutter-pypackage')
FAILED tests/repository/test_repository_has_cookiecutter_json.py::test_valid_repository - AssertionError: assert None
 +  where None = repository_has_cookiecutter_json('tests/fake-repo')
FAILED tests/test_abort_generate_on_hook_error.py::test_hooks_raises_errors[pre_gen_hook_raises_error] - AssertionError: .value can only be used after the context manager exits
FAILED tests/test_abort_generate_on_hook_error.py::test_hooks_raises_errors[post_gen_hook_raises_error] - AssertionError: .value can only be used after the context manager exits
FAILED tests/test_cli.py::test_cli_version[-V] - AssertionError: assert False
 +  where False = <built-in method startswith of str object at 0x71e89e16a1f0>('Cookiecutter')
 +    where <built-in method startswith of str object at 0x71e89e16a1f0> = 'main, version 2.6.0\n'.startswith
 +      where 'main, version 2.6.0\n' = <Result okay>.output
FAILED tests/test_cli.py::test_cli_version[--version] - AssertionError: assert False
 +  where False = <built-in method startswith of str object at 0x71e89e1c8fd0>('Cookiecutter')
 +    where <built-in method startswith of str object at 0x71e89e1c8fd0> = 'main, version 2.6.0\n'.startswith
 +      where 'main, version 2.6.0\n' = <Result okay>.output
FAILED tests/test_cli.py::test_cli_error_on_existing_output_directory - assert 0 != 0
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cli.py::test_cli - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_verbose - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_does_not_exist[-f] - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_overwrite_if_exists_when_output_dir_does_not_exist[--overwrite-if-exists] - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_help[help] - AssertionError: assert False
 +  where False = <built-in method startswith of str object at 0x71e8a09e4030>('Usage')
 +    where <built-in method startswith of str object at 0x71e8a09e4030> = ''.startswith
 +      where '' = <Result okay>.output
FAILED tests/test_cli.py::test_echo_undefined_variable_error - assert 0 == 1
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cli.py::test_echo_unknown_extension_error - assert 0 == 1
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cli.py::test_local_extension - FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pytest-of-openhands/pytest-11/test_local_extension0/output/Foobar/HISTORY.rst'
FAILED tests/test_cli.py::test_local_extension_not_available - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownExtension'>
FAILED tests/test_cli.py::test_cli_extra_context - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_extra_context_invalid_format - assert 0 == 2
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cli.py::test_debug_file_non_verbose - AssertionError: assert False
 +  where False = exists()
 +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_non_verbose0/fake-repo.log').exists
FAILED tests/test_cli.py::test_debug_file_verbose - AssertionError: assert False
 +  where False = exists()
 +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_debug_file_verbose0/fake-repo.log').exists
FAILED tests/test_cli.py::test_debug_list_installed_templates - AssertionError: assert '1 installed templates:' in ''
 +  where '' = <Result okay>.output
FAILED tests/test_cli.py::test_debug_list_installed_templates_failure - AssertionError: assert 'Error: Cannot list installed templates.' in ''
 +  where '' = <Result okay>.output
FAILED tests/test_cli.py::test_directory_repo - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_with_json_decoding_error - assert 0 != 0
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cli.py::test_cli_with_pre_prompt_hook - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('inputfake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cli.py::test_cli_with_pre_prompt_hook_fail - assert 0 == 1
 +  where 0 = <Result okay>.exit_code
FAILED tests/test_cookiecutter_invocation.py::test_should_invoke_main - subprocess.CalledProcessError: Command '['/usr/bin/python', '-m', 'cookiecutter.cli', 'tests/fake-repo-tmpl', '--no-input']' returned non-zero exit status 1.
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre/] - TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_project_dir[tests/fake-repo-pre] - TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_extra_context - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-extra')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_templated_context - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-templated')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_no_input_return_rendered_file - AssertionError: assert None == '/workspace/cookiecutter/fake-project'
 +  where '/workspace/cookiecutter/fake-project' = <function abspath at 0x71e8a08eedd0>('fake-project')
 +    where <function abspath at 0x71e8a08eedd0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.abspath
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cookiecutter_local_no_input.py::test_cookiecutter_dict_values_in_context - AssertionError: assert None == '/workspace/cookiecutter/fake-project-dict'
 +  where '/workspace/cookiecutter/fake-project-dict' = <function abspath at 0x71e8a08eedd0>('fake-project-dict')
 +    where <function abspath at 0x71e8a08eedd0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.abspath
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cookiecutter_local_with_input.py::test_cookiecutter_local_with_input - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_cookiecutter_local_with_input.py::test_cookiecutter_input_extra_context - AssertionError: assert False
 +  where False = <function isdir at 0x71e8a08edfc0>('fake-project-input-extra')
 +    where <function isdir at 0x71e8a08edfc0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isdir
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_custom_extensions_in_hooks.py::test_hook_with_extension[pre_gen_hook] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_custom_extensions_in_hooks.py::test_hook_with_extension[post_gen_hook] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_default_extensions.py::test_jinja2_time_extension - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_default_extensions.py::test_jinja2_slugify_extension - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_default_extensions.py::test_jinja2_uuid_extension - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_environment.py::test_env_should_raise_for_unknown_extension - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownExtension'>
FAILED tests/test_find.py::test_find_template[template with default jinja strings] - AssertionError: assert None == PosixPath('tests/fake-repo-pre/{{cookiecutter.repo_name}}')
FAILED tests/test_find.py::test_find_template[template with custom jinja strings] - AssertionError: assert None == PosixPath('tests/fake-repo-pre2/{%{cookiecutter.repo_name}%}')
FAILED tests/test_find.py::test_find_template[template with custom jinja strings but folder with default jinja strings] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_find.py::test_find_template[template missing folder] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_generate_context.py::test_generate_context[input_params0-expected_context0] - AssertionError: assert None == {'test': {'1': 2, 'some_key': 'some_val'}}
 +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json'})
 +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context
FAILED tests/test_generate_context.py::test_generate_context[input_params1-expected_context1] - AssertionError: assert None == {'test': {'1': 3, 'some_key': 'some_val'}}
 +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}})
 +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context
FAILED tests/test_generate_context.py::test_generate_context[input_params2-expected_context2] - AssertionError: assert None == {'test': {'1': 4, 'some_key': 'some_val'}}
 +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'extra_context': {'1': 4}})
 +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context
FAILED tests/test_generate_context.py::test_generate_context[input_params3-expected_context3] - AssertionError: assert None == {'test': {'1': 5, 'some_key': 'some_val'}}
 +  where None = <function generate_context at 0x71e89ea8f250>(**{'context_file': 'tests/test-generate-context/test.json', 'default_context': {'1': 3}, 'extra_context': {'1': 5}})
 +    where <function generate_context at 0x71e89ea8f250> = generate.generate_context
FAILED tests/test_generate_context.py::test_generate_context_with_json_decoding_error - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.ContextDecodingException'>
FAILED tests/test_generate_context.py::test_default_context_replacement_in_generate_context - AssertionError: assert None == {'choices_template': OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project_name', 'Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['landscape', 'all', 'portrait'])])}
FAILED tests/test_generate_context.py::test_generate_context_decodes_non_ascii_chars - AssertionError: assert None == {'non_ascii': OrderedDict([('full_name', '\xe9\xe8\xe0')])}
FAILED tests/test_generate_context.py::test_apply_overwrites_sets_non_list_value - AssertionError: assert '{{cookiecutter.project_name|lower}}' == 'foobar'
  
  - foobar
  + {{cookiecutter.project_name|lower}}
FAILED tests/test_generate_context.py::test_apply_overwrites_does_not_modify_choices_for_invalid_overwrite - Failed: DID NOT WARN. No warnings of type (<class 'UserWarning'>,) were emitted.
 Emitted warnings: [].
FAILED tests/test_generate_context.py::test_apply_overwrites_invalid_overwrite - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_generate_context.py::test_apply_overwrites_sets_multichoice_values - AssertionError: assert ['eu', 'us', 'ap'] == ['eu']
  
  Left contains 2 more items, first extra item: 'us'
  
  Full diff:
    [
        'eu',
  +     'us',
  +     'ap',
    ]
FAILED tests/test_generate_context.py::test_apply_overwrites_invalid_multichoice_values - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_generate_context.py::test_apply_overwrites_error_additional_values - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_generate_context.py::test_apply_overwrites_in_dictionaries - AssertionError: assert ['eu', 'us', 'ap'] == ['eu']
  
  Left contains 2 more items, first extra item: 'us'
  
  Full diff:
    [
        'eu',
  +     'us',
  +     'ap',
    ]
FAILED tests/test_generate_context.py::test_apply_overwrites_sets_default_for_choice_variable - AssertionError: assert ['all', 'landscape', 'portrait'] == ['landscape', 'all', 'portrait']
  
  At index 0 diff: 'all' != 'landscape'
  
  Full diff:
    [
  +     'all',
        'landscape',
  -     'all',
        'portrait',
    ]
FAILED tests/test_generate_context.py::test_apply_overwrites_in_nested_dict - AssertionError: assert None == {'nested_dict': OrderedDict([('full_name', 'Raphael Pierzina'), ('github_username', 'hackebrot'), ('project', OrderedDict([('name', 'My Kivy Project'), ('description', 'My Kivy Project'), ('repo_name', '{{cookiecutter.project_name|lower}}'), ('orientation', ['all', 'landscape', 'portrait'])]))])}
FAILED tests/test_generate_context.py::test_apply_overwrite_context_as_in_nested_dict_with_additional_values - AssertionError: assert OrderedDict([('key1', 'value1')]) == OrderedDict([('key1', 'value1'), ('key2', 'value2')])
  
  Common items:
  {'key1': 'value1'}
  Right contains 1 more item:
  {'key2': 'value2'}
  
  Full diff:
    OrderedDict({
        'key1': 'value1',
  -     'key2': 'value2',
    })
FAILED tests/test_generate_context.py::test_apply_overwrites_in_nested_dict_additional_values - AssertionError: assert None == {'nested_dict_additional': OrderedDict([('mainkey1', 'mainvalue1'), ('mainkey2', OrderedDict([('subkey1', 'subvalue1'), ('subkey2', OrderedDict([('subsubkey1', 'subsubvalue1'), ('subsubkey2', 'subsubvalue2_default'), ('subsubkey3', 'subsubvalue3_extra')])), ('subkey4', 'subvalue4_default'), ('subkey5', 'subvalue5_extra')]))])}
FAILED tests/test_generate_copy_without_render.py::test_generate_copy_without_render_extensions - FileNotFoundError: [Errno 2] No such file or directory: 'test_copy_without_render'
FAILED tests/test_generate_copy_without_render_override.py::test_generate_copy_without_render_extensions - FileNotFoundError: [Errno 2] No such file or directory: 'test_copy_without_render'
FAILED tests/test_generate_file.py::test_generate_file - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_jsonify_filter - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_random_ascii_string[True-10] - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_random_ascii_string[True-40] - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_random_ascii_string[False-10] - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_random_ascii_string[False-40] - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_with_true_condition - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/files/cheese.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_file.py::test_generate_file_verbose_template_syntax_error - Failed: DID NOT RAISE <class 'jinja2.exceptions.TemplateSyntaxError'>
FAILED tests/test_generate_file.py::test_generate_file_does_not_translate_lf_newlines_to_crlf - FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_lf_newlines.txt'
FAILED tests/test_generate_file.py::test_generate_file_does_not_translate_crlf_newlines_to_lf - FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_crlf_newlines.txt'
FAILED tests/test_generate_file.py::test_generate_file_handles_mixed_line_endings - FileNotFoundError: [Errno 2] No such file or directory: 'tests/files/cheese_mixed_newlines.txt'
FAILED tests/test_generate_files.py::test_generate_files_nontemplated_exception - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.NonTemplatedInputDirException'>
FAILED tests/test_generate_files.py::test_generate_files - AssertionError: assert False
 +  where False = exists()
 +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files0/inputpizz\xe4/simple.txt').exists
FAILED tests/test_generate_files.py::test_generate_files_with_linux_newline - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_linux0/inputpizz\xe4/simple-with-newline.txt').is_file
FAILED tests/test_generate_files.py::test_generate_files_with_jinja2_environment - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_jinja0/inputpizz\xe4/simple-with-conditions.txt').is_file
FAILED tests/test_generate_files.py::test_generate_files_with_trailing_newline_forced_to_linux_by_context - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_trail0/inputpizz\xe4/simple-with-newline.txt').is_file
FAILED tests/test_generate_files.py::test_generate_files_with_windows_newline - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo0/inputpizz\xe4/simple-with-newline-crlf.txt').is_file
FAILED tests/test_generate_files.py::test_generate_files_with_windows_newline_forced_to_linux_by_context - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_windo1/inputpizz\xe4/simple-with-newline-crlf.txt').is_file
FAILED tests/test_generate_files.py::test_generate_files_binaries - AssertionError: assert False
 +  where False = is_binary('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png')
 +    where '/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png' = str(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png'))
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files/logo.png') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_binaries0/inputbinary_files'), 'logo.png')
FAILED tests/test_generate_files.py::test_generate_files_absolute_path - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0/inputpizz\xe4/simple.txt').is_file
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0/inputpizz\xe4/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_absolute_p0'), 'inputpizz\xe4/simple.txt')
FAILED tests/test_generate_files.py::test_generate_files_output_dir - AssertionError: assert False
 +  where False = exists()
 +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir/inputpizz\xe4/simple.txt').exists
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir/inputpizz\xe4/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_output_dir0/custom_output_dir'), 'inputpizz\xe4/simple.txt')
FAILED tests/test_generate_files.py::test_generate_files_permissions - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0/inputpermissions/simple.txt').is_file
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0/inputpermissions/simple.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_permission0'), 'inputpermissions/simple.txt')
FAILED tests/test_generate_files.py::test_generate_files_with_overwrite_if_exists_with_skip_if_file_exists - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt').is_file
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw0/inputpizz\xe4/simple-with-newline.txt'))
FAILED tests/test_generate_files.py::test_generate_files_with_skip_if_file_exists - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.OutputDirExistsException'>
FAILED tests/test_generate_files.py::test_generate_files_with_overwrite_if_exists - AssertionError: assert False
 +  where False = is_file()
 +    where is_file = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt').is_file
 +      where PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt') = Path(PosixPath('/tmp/pytest-of-openhands/pytest-11/test_generate_files_with_overw1/inputpizz\xe4/simple-with-newline.txt'))
FAILED tests/test_generate_files.py::test_raise_undefined_variable_file_name - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_raise_undefined_variable_file_name_existing_project - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_raise_undefined_variable_file_content - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_raise_undefined_variable_dir_name - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_keep_project_dir_on_failure - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_raise_undefined_variable_dir_name_existing_project - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_files.py::test_raise_undefined_variable_project_dir - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_generate_hooks.py::test_run_python_hooks - AssertionError: assert False
 +  where False = <function exists at 0x71e8a08edea0>('tests/test-pyhooks/inputpyhooks/python_pre.txt')
 +    where <function exists at 0x71e8a08edea0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.exists
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_hooks.py::test_run_python_hooks_cwd - AssertionError: assert False
 +  where False = <function exists at 0x71e8a08edea0>('inputpyhooks/python_pre.txt')
 +    where <function exists at 0x71e8a08edea0> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.exists
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_generate_hooks.py::test_empty_hooks - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>
FAILED tests/test_generate_hooks.py::test_run_failing_hook_removes_output_directory - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>
FAILED tests/test_generate_hooks.py::test_run_failing_hook_preserves_existing_output_directory - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>
FAILED tests/test_generate_hooks.py::test_run_shell_hooks - AssertionError: assert False
 +  where False = exists()
 +    where exists = PosixPath('/tmp/pytest-of-openhands/pytest-11/test_run_shell_hooks0/test-shellhooks/inputshellhooks/shell_pre.txt').exists
FAILED tests/test_generate_hooks.py::test_deprecate_run_hook_from_repo_dir - Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted.
 Emitted warnings: [].
FAILED tests/test_get_config.py::test_get_config - AssertionError: assert {'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example', 'project': {'description': 'description', 'tags': ['first', 'second', 'third']}}, 'cookiecutters_dir': '/home/example/some-path-to-templates', 'replay_dir': '/home/example/some-path-to-replay-files', 'abbreviations': {'helloworld': 'https://github.com/hackebrot/helloworld'}} == {'cookiecutters_dir': '/home/example/some-path-to-templates', 'replay_dir': '/home/example/some-path-to-replay-files', 'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example', 'project': {'description': 'description', 'tags': ['first', 'second', 'third']}}, 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}', 'helloworld': 'https://github.com/hackebrot/helloworld'}}
  
  Common items:
  {'cookiecutters_dir': '/home/example/some-path-to-templates',
   'default_context': {'email': 'firstname.lastname@gmail.com',
                       'full_name': 'Firstname Lastname',
                       'github_username': 'example',
                       'project': {'description': 'description',
                                   'tags': ['first', 'second', 'third']}},
   'replay_dir': '/home/example/some-path-to-replay-files'}
  Differing items:
  {'abbreviations': {'helloworld': 'https://github.com/hackebrot/helloworld'}} != {'abbreviations': {'bb': 'https://bitbucket.org/{0}', 'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'helloworld': 'https://github.com/hackebrot/helloworld'}}
  
  Full diff:
    {
        'abbreviations': {
  -         'bb': 'https://bitbucket.org/{0}',
  -         'gh': 'https://github.com/{0}.git',
  -         'gl': 'https://gitlab.com/{0}.git',
            'helloworld': 'https://github.com/hackebrot/helloworld',
        },
        'cookiecutters_dir': '/home/example/some-path-to-templates',
        'default_context': {
            'email': 'firstname.lastname@gmail.com',
            'full_name': 'Firstname Lastname',
            'github_username': 'example',
            'project': {
                'description': 'description',
                'tags': [
                    'first',
                    'second',
                    'third',
                ],
            },
        },
        'replay_dir': '/home/example/some-path-to-replay-files',
    }
FAILED tests/test_get_config.py::test_get_config_does_not_exist - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.ConfigDoesNotExistException'>
FAILED tests/test_get_config.py::test_invalid_config - yaml.scanner.ScannerError: mapping values are not allowed here
  in "tests/test-config/invalid-config.yaml", line 2, column 14
FAILED tests/test_get_config.py::test_get_config_with_defaults - AssertionError: assert {'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example'}} == {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay', 'default_context': {'full_name': 'Firstname Lastname', 'email': 'firstname.lastname@gmail.com', 'github_username': 'example'}, 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}'}}
  
  Common items:
  {'default_context': {'email': 'firstname.lastname@gmail.com',
                       'full_name': 'Firstname Lastname',
                       'github_username': 'example'}}
  Right contains 3 more items:
  {'abbreviations': {'bb': 'https://bitbucket.org/{0}',
                     'gh': 'https://github.com/{0}.git',
                     'gl': 'https://gitlab.com/{0}.git'},
   'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters',
   'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay'}
  
  Full diff:
    {
  -     'abbreviations': {
  -         'bb': 'https://bitbucket.org/{0}',
  -         'gh': 'https://github.com/{0}.git',
  -         'gl': 'https://gitlab.com/{0}.git',
  -     },
  -     'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutters',
        'default_context': {
            'email': 'firstname.lastname@gmail.com',
            'full_name': 'Firstname Lastname',
            'github_username': 'example',
        },
  -     'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_with_defaults0/home/.cookiecutter_replay',
    }
FAILED tests/test_get_config.py::test_get_config_empty_config_file - AssertionError: assert {} == {'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters', 'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay', 'default_context': OrderedDict(), 'abbreviations': {'gh': 'https://github.com/{0}.git', 'gl': 'https://gitlab.com/{0}.git', 'bb': 'https://bitbucket.org/{0}'}}
  
  Right contains 4 more items:
  {'abbreviations': {'bb': 'https://bitbucket.org/{0}',
                     'gh': 'https://github.com/{0}.git',
                     'gl': 'https://gitlab.com/{0}.git'},
   'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters',
   'default_context': OrderedDict(),
   'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay'}
  
  Full diff:
  + {}
  - {
  -     'abbreviations': {
  -         'bb': 'https://bitbucket.org/{0}',
  -         'gh': 'https://github.com/{0}.git',
  -         'gl': 'https://gitlab.com/{0}.git',
  -     },
  -     'cookiecutters_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutters',
  -     'default_context': OrderedDict(),
  -     'replay_dir': '/tmp/pytest-of-openhands/pytest-11/test_get_config_empty_config_f0/home/.cookiecutter_replay',
  - }
FAILED tests/test_get_config.py::test_get_config_invalid_file_with_array_as_top_level_element - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidConfiguration'>
FAILED tests/test_get_config.py::test_get_config_invalid_file_with_multiple_docs - yaml.composer.ComposerError: expected a single document in the stream
  in "tests/test-config/invalid-config-w-multiple-docs.yaml", line 2, column 1
but found another document
  in "tests/test-config/invalid-config-w-multiple-docs.yaml", line 12, column 1
FAILED tests/test_get_user_config.py::test_get_user_config_invalid - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.InvalidConfiguration'>
FAILED tests/test_get_user_config.py::test_expand_user_for_directories_in_config - AssertionError: assert '~/replay-files' == 'Users/bob/replay-files'
  
  - Users/bob/replay-files
  + ~/replay-files
FAILED tests/test_get_user_config.py::test_expand_vars_for_directories_in_config - AssertionError: assert '$COOKIES/replay-files' == 'Users/bob/cookies/replay-files'
  
  - Users/bob/cookies/replay-files
  + $COOKIES/replay-files
FAILED tests/test_hooks.py::TestFindHooks::test_find_hook - TypeError: 'NoneType' object is not subscriptable
FAILED tests/test_hooks.py::TestExternalHooks::test_run_script - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('shell_post.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_hooks.py::TestExternalHooks::test_run_script_cwd - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/shell_post.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_hooks.py::TestExternalHooks::test_run_script_with_context - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('tests/context_post.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_hooks.py::TestExternalHooks::test_run_hook - AssertionError: assert False
 +  where False = <function isfile at 0x71e8a08edf30>('/workspace/cookiecutter/tests/test-hooks/input{{hooks}}/python_pre.txt')
 +    where <function isfile at 0x71e8a08edf30> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.isfile
 +      where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
 +    and   '/workspace/cookiecutter/tests/test-hooks/input{{hooks}}/python_pre.txt' = <function join at 0x71e8a08ee710>('/workspace/cookiecutter/tests/test-hooks/input{{hooks}}', 'python_pre.txt')
 +      where <function join at 0x71e8a08ee710> = <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'>.join
 +        where <module 'posixpath' from '/usr/lib/python3.10/posixpath.py'> = os.path
FAILED tests/test_hooks.py::TestExternalHooks::test_run_failing_hook - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>
FAILED tests/test_log.py::test_info_stdout_logging - AttributeError: 'NoneType' object has no attribute 'handlers'
FAILED tests/test_log.py::test_debug_stdout_logging - AttributeError: 'NoneType' object has no attribute 'handlers'
FAILED tests/test_log.py::test_debug_file_logging - AttributeError: 'NoneType' object has no attribute 'handlers'
FAILED tests/test_output_folder.py::test_output_folder - FileNotFoundError: [Errno 2] No such file or directory: 'output_folder/something.txt'
FAILED tests/test_output_folder.py::test_exception_when_output_folder_exists - TypeError: 'NoneType' object is not subscriptable
FAILED tests/test_pre_prompt_hooks.py::test_run_pre_prompt_python_hook - AttributeError: 'NoneType' object has no attribute 'exists'
FAILED tests/test_pre_prompt_hooks.py::test_run_pre_prompt_python_hook_fail - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.FailedHookException'>
FAILED tests/test_pre_prompt_hooks.py::test_run_pre_prompt_shell_hook - AttributeError: 'NoneType' object has no attribute 'exists'
FAILED tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var0-rendered_var0] - AssertionError: assert None == {'1': True, 'foo': False}
FAILED tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var1-rendered_var1] - AssertionError: assert None == {'foobar': ['foo', '1'], 'bar': False}
FAILED tests/test_prompt.py::TestRenderVariable::test_convert_to_str_complex_variables[raw_var2-rendered_var2] - AssertionError: assert None == ['foo', 'foobar', None]
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config[ASCII default prompt/input] - AssertionError: assert None == {'full_name': 'Your Name'}
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config[Unicode default prompt/input] - AssertionError: assert None == {'full_name': '\u0158ekni \u010di napi\u0161 sv\xe9 jm\xe9no'}
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_prompts[ASCII default prompt/input] - AssertionError: assert None == {'full_name': 'Your Name', 'check': ['yes', 'no'], 'nothing': 'ok', '__prompts__': {'full_name': 'Name please', 'check': 'Checking'}}
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context0] - TypeError: 'NoneType' object is not iterable
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context1] - TypeError: 'NoneType' object is not iterable
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config_with_human_choices[context2] - TypeError: 'NoneType' object is not iterable
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_config_dict - AssertionError: assert None == {'details': {'key': 'value', 'integer': 37}}
FAILED tests/test_prompt.py::TestPrompt::test_should_render_dict - AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'Slartibartfast': 'Slartibartfast'}}
FAILED tests/test_prompt.py::TestPrompt::test_should_render_deep_dict - AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'key': 'value', 'integer_key': '37', 'other_name': 'Slartibartfast', 'dict_key': {'deep_key': 'deep_value', 'deep_integer': '42', 'deep_other_name': 'Slartibartfast', 'deep_list': ['deep value 1', 'Slartibartfast', 'deep value 3']}, 'list_key': ['value 1', 'Slartibartfast', 'value 3']}}
FAILED tests/test_prompt.py::TestPrompt::test_should_render_deep_dict_with_human_prompts - AssertionError: assert None == {'project_name': 'Slartibartfast', 'details': {'key': 'value', 'integer_key': '37', 'other_name': 'Slartibartfast', 'dict_key': {'deep_key': 'deep_value'}}}
FAILED tests/test_prompt.py::TestPrompt::test_internal_use_no_human_prompts - AssertionError: assert None == {'project_name': 'Slartibartfast'}
FAILED tests/test_prompt.py::TestPrompt::test_prompt_for_templated_config - AssertionError: assert None == {'project_name': 'A New Project', 'pkg_name': 'anewproject'}
FAILED tests/test_prompt.py::TestPrompt::test_dont_prompt_for_private_context_var - AssertionError: assert None == {'_copy_without_render': ['*.html']}
FAILED tests/test_prompt.py::TestPrompt::test_should_render_private_variables_with_two_underscores - AssertionError: assert None == OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')])
 +  where OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')]) = OrderedDict([('foo', 'Hello world'), ('bar', '123'), ('rendered_foo', 'hello world'), ('rendered_bar', '123'), ('_hidden_foo', '{{ cookiecutter.foo|lower }}'), ('_hidden_bar', 123), ('__rendered_hidden_foo', 'hello world'), ('__rendered_hidden_bar', '123')])
FAILED tests/test_prompt.py::TestPrompt::test_should_not_render_private_variables - AssertionError: assert None == {'project_name': 'Skip render', '_skip_jinja_template': '{{cookiecutter.project_name}}', '_skip_float': 123.25, '_skip_integer': 123, '_skip_boolean': True, '_skip_nested': True}
FAILED tests/test_prompt.py::TestReadUserYesNo::test_boolean_parameter_no_input - AssertionError: assert None == {'run_as_docker': True}
FAILED tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with choices] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with dict_key] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_prompt.py::test_undefined_variable[Undefined variable in cookiecutter dict with key_value] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UndefinedVariableInTemplate'>
FAILED tests/test_prompt.py::test_cookiecutter_nested_templates[fake-nested-templates-fake-project] - AssertionError: assert None == '/workspace/cookiecutter/tests/fake-nested-templates/fake-project'
FAILED tests/test_prompt.py::test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package] - AssertionError: assert None == '/workspace/cookiecutter/tests/fake-nested-templates-old-style/fake-package'
FAILED tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[] - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[/tmp] - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_prompt.py::test_cookiecutter_nested_templates_invalid_paths[/foo] - Failed: DID NOT RAISE <class 'ValueError'>
FAILED tests/test_read_user_choice.py::test_raise_if_options_is_not_a_non_empty_list - Failed: DID NOT RAISE <class 'TypeError'>
FAILED tests/test_read_user_dict.py::test_process_json_invalid_json - Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>
FAILED tests/test_read_user_dict.py::test_process_json_non_dict - Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>
FAILED tests/test_read_user_dict.py::test_process_json_valid_json - assert None == {'name': 'foobar', 'bla': ['a', 1, 'b', False]}
 +  where None = process_json('{"name": "foobar", "bla": ["a", 1, "b", false]}')
FAILED tests/test_read_user_dict.py::test_process_json_deep_dict - assert None == {'key': 'value', 'integer_key': 37, 'dict_key': {'deep_key': 'deep_value', 'deep_integer': 42, 'deep_list': ['deep value 1', 'deep value 2', 'deep value 3']}, 'list_key': ['value 1', 'value 2', 'value 3']}
 +  where None = process_json('{\n        "key": "value",\n        "integer_key": 37,\n        "dict_key": {\n            "deep_key": "deep_value",\n            "deep_integer": 42,\n            "deep_list": [\n                "deep value 1",\n                "deep value 2",\n                "deep value 3"\n            ]\n        },\n        "list_key": [\n            "value 1",\n            "value 2",\n            "value 3"\n        ]\n    }')
FAILED tests/test_read_user_dict.py::test_json_prompt_process_response - assert None == {'project_slug': 'something'}
 +  where None = process_response('{"project_slug": "something"}')
 +    where process_response = <cookiecutter.prompt.JsonPrompt object at 0x71e89dbfa770>.process_response
FAILED tests/test_read_user_yes_no.py::test_yesno_prompt_process_response - Failed: DID NOT RAISE <class 'rich.prompt.InvalidResponse'>
FAILED tests/test_repo_not_found.py::test_should_raise_error_if_repo_does_not_exist - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.RepositoryNotFound'>
FAILED tests/test_templates.py::test_build_templates[include] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_templates.py::test_build_templates[no-templates] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_templates.py::test_build_templates[extends] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_templates.py::test_build_templates[super] - TypeError: expected str, bytes or os.PathLike object, not NoneType
FAILED tests/test_time_extension.py::test_accept_valid_timezones[utc] - AssertionError: assert '%Y-%m' == '2015-12'
  
  - 2015-12
  + %Y-%m
FAILED tests/test_time_extension.py::test_accept_valid_timezones[local] - AssertionError: assert '%Y-%m' == '2015-12'
  
  - 2015-12
  + %Y-%m
FAILED tests/test_time_extension.py::test_accept_valid_timezones[Europe/Berlin] - AssertionError: assert '%Y-%m' == '2015-12'
  
  - 2015-12
  + %Y-%m
FAILED tests/test_time_extension.py::test_environment_datetime_format - AssertionError: assert '2015-12-09' == 'Wed, 09 Dec 2015 23:33:01'
  
  - Wed, 09 Dec 2015 23:33:01
  + 2015-12-09
FAILED tests/test_time_extension.py::test_add_time - AssertionError: assert '2015-12-09' == 'Thu, 10 Dec 2015 01:33:31'
  
  - Thu, 10 Dec 2015 01:33:31
  + 2015-12-09
FAILED tests/test_time_extension.py::test_substract_time - TypeError: unsupported operand type(s) for -: 'str' and 'str'
FAILED tests/test_time_extension.py::test_offset_with_format - TypeError: unsupported operand type(s) for -: 'str' and 'str'
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] - AssertionError: assert None == ('git', 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
 +  where None = <function identify_repo at 0x71e89e94caf0>('git+https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[hg+https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] - AssertionError: assert None == ('hg', 'https://bitbucket.org/foo/bar.hg')
 +  where None = <function identify_repo at 0x71e89e94caf0>('hg+https://bitbucket.org/foo/bar.hg')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/pytest-dev/cookiecutter-pytest-plugin.git-git-https://github.com/pytest-dev/cookiecutter-pytest-plugin.git] - AssertionError: assert None == ('git', 'https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
 +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/pytest-dev/cookiecutter-pytest-plugin.git')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[https://bitbucket.org/foo/bar.hg-hg-https://bitbucket.org/foo/bar.hg] - AssertionError: assert None == ('hg', 'https://bitbucket.org/foo/bar.hg')
 +  where None = <function identify_repo at 0x71e89e94caf0>('https://bitbucket.org/foo/bar.hg')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage.git-git-https://github.com/audreyfeldroy/cookiecutter-pypackage.git] - AssertionError: assert None == ('git', 'https://github.com/audreyfeldroy/cookiecutter-pypackage.git')
 +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/audreyfeldroy/cookiecutter-pypackage.git')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[https://github.com/audreyfeldroy/cookiecutter-pypackage-git-https://github.com/audreyfeldroy/cookiecutter-pypackage] - AssertionError: assert None == ('git', 'https://github.com/audreyfeldroy/cookiecutter-pypackage')
 +  where None = <function identify_repo at 0x71e89e94caf0>('https://github.com/audreyfeldroy/cookiecutter-pypackage')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git-git-git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git] - AssertionError: assert None == ('git', 'git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git')
 +  where None = <function identify_repo at 0x71e89e94caf0>('git@gitorious.org:cookiecutter-gitorious/cookiecutter-gitorious.git')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_known_repo[https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket-hg-https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket] - AssertionError: assert None == ('hg', 'https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket')
 +  where None = <function identify_repo at 0x71e89e94caf0>('https://audreyr@bitbucket.org/audreyr/cookiecutter-bitbucket')
 +    where <function identify_repo at 0x71e89e94caf0> = vcs.identify_repo
FAILED tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+git] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>
FAILED tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+hg] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>
FAILED tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foo+bar] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>
FAILED tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[foobar] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>
FAILED tests/vcs/test_identify_repo.py::test_identify_raise_on_unknown_repo[http://norepotypespecified.com] - Failed: DID NOT RAISE <class 'cookiecutter.exceptions.UnknownRepoType'>
ERROR tests/replay/test_dump.py::test_ioerror_if_replay_dir_creation_fails
ERROR tests/replay/test_dump.py::test_run_json_dump
ERROR tests/replay/test_load.py::test_value_error_if_key_missing_in_context
ERROR tests/replay/test_load.py::test_io_error_if_no_replay_file
ERROR tests/replay/test_load.py::test_run_json_load
ERROR tests/replay/test_replay.py::test_main_does_not_invoke_dump_but_load
ERROR tests/replay/test_replay.py::test_main_does_not_invoke_load_but_dump
ERROR tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[/path/to/zipfile.zip-False]
ERROR tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[https://example.com/path/to/zipfile.zip-True]
ERROR tests/repository/test_determine_repo_dir_clones_repo.py::test_zipfile_unzip[http://example.com/path/to/zipfile.zip-True]
ERROR tests/repository/test_determine_repo_dir_clones_repo.py::test_repository_url_should_clone
ERROR tests/repository/test_determine_repo_dir_clones_repo.py::test_repository_url_with_no_context_file
ERROR tests/test_cli.py::test_cli_replay
ERROR tests/test_cli.py::test_cli_replay_file
ERROR tests/test_cli.py::test_cli_replay_generated
ERROR tests/test_cli.py::test_cli_exit_on_noinput_and_replay
ERROR tests/test_cli.py::test_run_cookiecutter_on_overwrite_if_exists_and_replay[-f]
ERROR tests/test_cli.py::test_run_cookiecutter_on_overwrite_if_exists_and_replay[--overwrite-if-exists]
ERROR tests/test_cli.py::test_cli_output_dir[-o]
ERROR tests/test_cli.py::test_cli_output_dir[--output-dir]
ERROR tests/test_cli.py::test_user_config
ERROR tests/test_cli.py::test_default_user_config_overwrite
ERROR tests/test_cli.py::test_default_user_config
ERROR tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=yes-None-True]
ERROR tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=no-None-False]
ERROR tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=ask-yes-True]
ERROR tests/test_cli.py::test_cli_accept_hooks[-o---accept-hooks=ask-no-False]
ERROR tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=yes-None-True]
ERROR tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=no-None-False]
ERROR tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=ask-yes-True]
ERROR tests/test_cli.py::test_cli_accept_hooks[--output-dir---accept-hooks=ask-no-False]
ERROR tests/test_cookiecutter_local_no_input.py::test_cookiecutter_template_cleanup
ERROR tests/test_cookiecutter_nested_templates.py::test_cookiecutter_nested_templates[fake-nested-templates-fake-project]
ERROR tests/test_cookiecutter_nested_templates.py::test_cookiecutter_nested_templates[fake-nested-templates-old-style-fake-package]
ERROR tests/test_generate_hooks.py::test_oserror_hooks
ERROR tests/test_get_user_config.py::test_specify_config_path
ERROR tests/test_get_user_config.py::test_force_default_config
ERROR tests/test_hooks.py::TestExternalHooks::test_run_failing_script
ERROR tests/test_hooks.py::TestExternalHooks::test_run_failing_script_enoexec
ERROR tests/test_main.py::test_original_cookiecutter_options_preserved_in__cookiecutter
ERROR tests/test_main.py::test_replay_dump_template_name
ERROR tests/test_main.py::test_replay_load_template_name
ERROR tests/test_main.py::test_custom_replay_file
ERROR tests/test_prompt.py::TestRenderVariable::test_convert_to_str[1-1]
ERROR tests/test_prompt.py::TestRenderVariable::test_convert_to_str[True-True]
ERROR tests/test_prompt.py::TestRenderVariable::test_convert_to_str[foo-foo]
ERROR tests/test_prompt.py::TestRenderVariable::test_convert_to_str[{{cookiecutter.project}}-foobar]
ERROR tests/test_prompt.py::TestRenderVariable::test_convert_to_str[None-None]
ERROR tests/test_prompt.py::TestReadUserChoice::test_should_invoke_read_user_choice
ERROR tests/test_prompt.py::TestReadUserChoice::test_should_invoke_read_user_variable
ERROR tests/test_prompt.py::TestReadUserChoice::test_should_render_choices
ERROR tests/test_prompt.py::TestPromptChoiceForConfig::test_should_return_first_option_if_no_input
ERROR tests/test_prompt.py::TestPromptChoiceForConfig::test_should_read_user_choice
ERROR tests/test_prompt.py::TestReadUserYesNo::test_should_invoke_read_user_yes_no[True]
ERROR tests/test_prompt.py::TestReadUserYesNo::test_should_invoke_read_user_yes_no[False]
ERROR tests/test_prompt.py::test_prompt_should_ask_and_rm_repo_dir
ERROR tests/test_prompt.py::test_prompt_should_ask_and_exit_on_user_no_answer
ERROR tests/test_prompt.py::test_prompt_should_ask_and_rm_repo_file
ERROR tests/test_prompt.py::test_prompt_should_ask_and_keep_repo_on_no_reuse
ERROR tests/test_prompt.py::test_prompt_should_ask_and_keep_repo_on_reuse
ERROR tests/test_prompt.py::test_prompt_should_not_ask_if_no_input_and_rm_repo_dir
ERROR tests/test_prompt.py::test_prompt_should_not_ask_if_no_input_and_rm_repo_file
ERROR tests/test_read_repo_password.py::test_click_invocation
ERROR tests/test_read_user_choice.py::test_click_invocation[1-hello]
ERROR tests/test_read_user_choice.py::test_click_invocation[2-world]
ERROR tests/test_read_user_choice.py::test_click_invocation[3-foo]
ERROR tests/test_read_user_choice.py::test_click_invocation[4-bar]
ERROR tests/test_read_user_dict.py::test_should_raise_type_error
ERROR tests/test_read_user_dict.py::test_should_call_prompt_with_process_json
ERROR tests/test_read_user_dict.py::test_should_not_load_json_from_sentinel
ERROR tests/test_read_user_dict.py::test_read_user_dict_default_value[\n]
ERROR tests/test_read_user_dict.py::test_read_user_dict_default_value[\ndefault\n]
ERROR tests/test_read_user_variable.py::test_click_invocation
ERROR tests/test_read_user_variable.py::test_input_loop_with_null_default_value
ERROR tests/test_read_user_yes_no.py::test_click_invocation
ERROR tests/test_specify_output_dir.py::test_api_invocation
ERROR tests/test_specify_output_dir.py::test_default_output_dir
ERROR tests/test_utils.py::test_force_delete
ERROR tests/test_utils.py::test_make_sure_path_exists_correctly_handle_os_error
ERROR tests/vcs/test_clone.py::test_clone_should_raise_if_vcs_not_installed
ERROR tests/vcs/test_clone.py::test_clone_should_rstrip_trailing_slash_in_repo_url
ERROR tests/vcs/test_clone.py::test_clone_should_abort_if_user_does_not_want_to_reclone
ERROR tests/vcs/test_clone.py::test_clone_should_silent_exit_if_ok_to_reuse
ERROR tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-https://github.com/hello/world.git-world]
ERROR tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[hg-https://bitbucket.org/foo/bar-bar]
ERROR tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@host:gitoliterepo-gitoliterepo]
ERROR tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@gitlab.com:cookiecutter/cookiecutter.git-cookiecutter]
ERROR tests/vcs/test_clone.py::test_clone_should_invoke_vcs_command[git-git@github.com:cookiecutter/cookiecutter.git-cookiecutter]
ERROR tests/vcs/test_clone.py::test_clone_handles_repo_typo[fatal: repository 'https://github.com/hackebro/cookiedozer' not found]
ERROR tests/vcs/test_clone.py::test_clone_handles_repo_typo[hg: abort: HTTP Error 404: Not Found]
ERROR tests/vcs/test_clone.py::test_clone_handles_branch_typo[error: pathspec 'unknown_branch' did not match any file(s) known to git]
ERROR tests/vcs/test_clone.py::test_clone_handles_branch_typo[hg: abort: unknown revision 'unknown_branch'!]
ERROR tests/vcs/test_clone.py::test_clone_unknown_subprocess_error
ERROR tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[-False]
ERROR tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[None-False]
ERROR tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[False-False]
ERROR tests/vcs/test_is_vcs_installed.py::test_is_vcs_installed[/usr/local/bin/git-True]
ERROR tests/zipfile/test_unzip.py::test_unzip_local_file
ERROR tests/zipfile/test_unzip.py::test_unzip_protected_local_file_environment_password
ERROR tests/zipfile/test_unzip.py::test_unzip_protected_local_file_bad_environment_password
ERROR tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_password_with_noinput
ERROR tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_password
ERROR tests/zipfile/test_unzip.py::test_unzip_protected_local_file_user_bad_password
ERROR tests/zipfile/test_unzip.py::test_empty_zip_file
ERROR tests/zipfile/test_unzip.py::test_non_repo_zip_file
ERROR tests/zipfile/test_unzip.py::test_bad_zip_file
ERROR tests/zipfile/test_unzip.py::test_unzip_url
ERROR tests/zipfile/test_unzip.py::test_unzip_url_with_empty_chunks
ERROR tests/zipfile/test_unzip.py::test_unzip_url_existing_cache
ERROR tests/zipfile/test_unzip.py::test_unzip_url_existing_cache_no_input
ERROR tests/zipfile/test_unzip.py::test_unzip_should_abort_if_no_redownload
ERROR tests/zipfile/test_unzip.py::test_unzip_is_ok_to_reuse
============ 225 failed, 30 passed, 4 skipped, 112 errors in 3.57s =============