START: ptest-runner
2025-04-30T16:33
============================= test session starts ==============================
platform linux -- Python 3.12.9, pytest-8.0.2, pluggy-1.4.0
rootdir: /usr/lib/python3-click/ptest
configfile: setup.cfg
testpaths: tests
collected 611 items

PASS: tests/test_arguments.py::test_nargs_star 
PASS: tests/test_arguments.py::test_argument_unbounded_nargs_cant_have_default 
PASS: tests/test_arguments.py::test_nargs_tup 
PASS: tests/test_arguments.py::test_nargs_tup_composite[opts0] 
PASS: tests/test_arguments.py::test_nargs_tup_composite[opts1] 
PASS: tests/test_arguments.py::test_nargs_tup_composite[opts2] 
PASS: tests/test_arguments.py::test_nargs_tup_composite[opts3] 
PASS: tests/test_arguments.py::test_nargs_err 
PASS: tests/test_arguments.py::test_bytes_args 
PASS: tests/test_arguments.py::test_file_args 
PASS: tests/test_arguments.py::test_path_allow_dash 
PASS: tests/test_arguments.py::test_file_atomics 
PASS: tests/test_arguments.py::test_stdout_default 
PASS: tests/test_arguments.py::test_nargs_envvar[2--None] 
PASS: tests/test_arguments.py::test_nargs_envvar[2-a-Takes 2 values but 1 was given.] 
PASS: tests/test_arguments.py::test_nargs_envvar[2-a b-expect2] 
PASS: tests/test_arguments.py::test_nargs_envvar[2-a b c-Takes 2 values but 3 were given.] 
PASS: tests/test_arguments.py::test_nargs_envvar[-1-a b c-expect4] 
PASS: tests/test_arguments.py::test_nargs_envvar[-1--expect5] 
PASS: tests/test_arguments.py::test_nargs_envvar_only_if_values_empty 
PASS: tests/test_arguments.py::test_empty_nargs 
PASS: tests/test_arguments.py::test_missing_arg 
PASS: tests/test_arguments.py::test_missing_argument_string_cast 
PASS: tests/test_arguments.py::test_implicit_non_required 
PASS: tests/test_arguments.py::test_eat_options 
PASS: tests/test_arguments.py::test_nargs_star_ordering 
PASS: tests/test_arguments.py::test_nargs_specified_plus_star_ordering 
PASS: tests/test_arguments.py::test_defaults_for_nargs 
PASS: tests/test_arguments.py::test_multiple_param_decls_not_allowed 
PASS: tests/test_arguments.py::test_multiple_not_allowed 
PASS: tests/test_arguments.py::test_nargs_bad_default[value0] 
PASS: tests/test_arguments.py::test_nargs_bad_default[value1] 
PASS: tests/test_arguments.py::test_nargs_bad_default[value2] 
PASS: tests/test_arguments.py::test_subcommand_help 
PASS: tests/test_arguments.py::test_nested_subcommand_help 
PASS: tests/test_arguments.py::test_when_argument_decorator_is_used_multiple_times_cls_is_preserved 
PASS: tests/test_basic.py::test_basic_functionality 
PASS: tests/test_basic.py::test_repr 
PASS: tests/test_basic.py::test_return_values 
PASS: tests/test_basic.py::test_basic_group 
PASS: tests/test_basic.py::test_group_commands_dict 
PASS: tests/test_basic.py::test_group_from_list 
PASS: tests/test_basic.py::test_string_option[args0-S:[no value]] 
PASS: tests/test_basic.py::test_string_option[args1-S:[42]] 
PASS: tests/test_basic.py::test_string_option[args2-Error: Option '--s' requires an argument.] 
PASS: tests/test_basic.py::test_string_option[args3-S:[]] 
PASS: tests/test_basic.py::test_string_option[args4-S:[\u2603]] 
PASS: tests/test_basic.py::test_int_option[args0-I:[84]] 
PASS: tests/test_basic.py::test_int_option[args1-I:[46]] 
PASS: tests/test_basic.py::test_int_option[args2-Error: Invalid value for '--i': 'x' is not a valid integer.] 
PASS: tests/test_basic.py::test_uuid_option[args0-U:[ba122011-349f-423b-873b-9d6a79c688ab]] 
PASS: tests/test_basic.py::test_uuid_option[args1-U:[821592c1-c50e-4971-9cd6-e89dc6832f86]] 
PASS: tests/test_basic.py::test_uuid_option[args2-Error: Invalid value for '--u': 'x' is not a valid UUID.] 
PASS: tests/test_basic.py::test_float_option[args0-F:[42.0]] 
PASS: tests/test_basic.py::test_float_option[--f=23.5-F:[23.5]] 
PASS: tests/test_basic.py::test_float_option[--f=x-Error: Invalid value for '--f': 'x' is not a valid float.] 
PASS: tests/test_basic.py::test_boolean_switch[args0-True-True] 
PASS: tests/test_basic.py::test_boolean_switch[args0-True-False] 
PASS: tests/test_basic.py::test_boolean_switch[args1-False-True] 
PASS: tests/test_basic.py::test_boolean_switch[args1-False-False] 
PASS: tests/test_basic.py::test_boolean_switch[args2-None-True] 
PASS: tests/test_basic.py::test_boolean_switch[args2-None-False] 
PASS: tests/test_basic.py::test_boolean_flag[args0-True-True] 
PASS: tests/test_basic.py::test_boolean_flag[args0-True-False] 
PASS: tests/test_basic.py::test_boolean_flag[args1-False-True] 
PASS: tests/test_basic.py::test_boolean_flag[args1-False-False] 
PASS: tests/test_basic.py::test_boolean_conversion[1-True] 
PASS: tests/test_basic.py::test_boolean_conversion[true-True] 
PASS: tests/test_basic.py::test_boolean_conversion[t-True] 
PASS: tests/test_basic.py::test_boolean_conversion[yes-True] 
PASS: tests/test_basic.py::test_boolean_conversion[y-True] 
PASS: tests/test_basic.py::test_boolean_conversion[on-True] 
PASS: tests/test_basic.py::test_boolean_conversion[0-False] 
PASS: tests/test_basic.py::test_boolean_conversion[false-False] 
PASS: tests/test_basic.py::test_boolean_conversion[f-False] 
PASS: tests/test_basic.py::test_boolean_conversion[no-False] 
PASS: tests/test_basic.py::test_boolean_conversion[n-False] 
PASS: tests/test_basic.py::test_boolean_conversion[off-False] 
PASS: tests/test_basic.py::test_file_option 
PASS: tests/test_basic.py::test_file_lazy_mode 
PASS: tests/test_basic.py::test_path_option 
PASS: tests/test_basic.py::test_choice_option 
PASS: tests/test_basic.py::test_choice_argument 
PASS: tests/test_basic.py::test_datetime_option_default 
PASS: tests/test_basic.py::test_datetime_option_custom 
PASS: tests/test_basic.py::test_required_option 
PASS: tests/test_basic.py::test_evaluation_order 
PASS: tests/test_basic.py::test_hidden_option 
PASS: tests/test_basic.py::test_hidden_command 
PASS: tests/test_basic.py::test_hidden_group 
PASS: tests/test_basic.py::test_summary_line 
PASS: tests/test_basic.py::test_help_invalid_default 
PASS: tests/test_chain.py::test_basic_chaining 
PASS: tests/test_chain.py::test_chaining_help[args0-COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...] 
PASS: tests/test_chain.py::test_chaining_help[args1-ROOT HELP] 
PASS: tests/test_chain.py::test_chaining_help[args2-SDIST HELP] 
PASS: tests/test_chain.py::test_chaining_help[args3-BDIST HELP] 
PASS: tests/test_chain.py::test_chaining_help[args4-SDIST HELP] 
PASS: tests/test_chain.py::test_chaining_with_options 
PASS: tests/test_chain.py::test_no_command_result_callback[False-1] 
PASS: tests/test_chain.py::test_no_command_result_callback[True-[]] 
PASS: tests/test_chain.py::test_chaining_with_arguments 
PASS: tests/test_chain.py::test_pipeline[args0-foo\nbar-expect0] 
PASS: tests/test_chain.py::test_pipeline[args1-foo \n bar-expect1] 
PASS: tests/test_chain.py::test_pipeline[args2-foo \n bar-expect2] 
PASS: tests/test_chain.py::test_args_and_chain 
PASS: tests/test_chain.py::test_multicommand_arg_behavior 
XFAIL: tests/test_chain.py::test_multicommand_chaining 
PASS: tests/test_command_decorators.py::test_command_no_parens 
PASS: tests/test_command_decorators.py::test_custom_command_no_parens 
PASS: tests/test_command_decorators.py::test_group_no_parens 
PASS: tests/test_command_decorators.py::test_params_argument 
PASS: tests/test_commands.py::test_other_command_invoke 
PASS: tests/test_commands.py::test_other_command_forward 
PASS: tests/test_commands.py::test_forwarded_params_consistency 
PASS: tests/test_commands.py::test_auto_shorthelp 
PASS: tests/test_commands.py::test_no_args_is_help 
PASS: tests/test_commands.py::test_default_maps 
PASS: tests/test_commands.py::test_group_with_args[args0-2-Error: Missing command.] 
PASS: tests/test_commands.py::test_group_with_args[args1-0-Show this message and exit.] 
PASS: tests/test_commands.py::test_group_with_args[args2-0-obj=obj1\nmove\n] 
PASS: tests/test_commands.py::test_group_with_args[args3-0-Show this message and exit.] 
PASS: tests/test_commands.py::test_base_command 
PASS: tests/test_commands.py::test_object_propagation 
PASS: tests/test_commands.py::test_other_command_invoke_with_defaults 
PASS: tests/test_commands.py::test_invoked_subcommand 
PASS: tests/test_commands.py::test_aliased_command_canonical_name 
PASS: tests/test_commands.py::test_group_add_command_name 
PASS: tests/test_commands.py::test_unprocessed_options 
PASS: tests/test_commands.py::test_deprecated_in_help_messages[CLI HELP] 
PASS: tests/test_commands.py::test_deprecated_in_help_messages[None] 
PASS: tests/test_commands.py::test_deprecated_in_invocation 
PASS: tests/test_commands.py::test_command_parse_args_collects_option_prefixes 
PASS: tests/test_commands.py::test_group_parse_args_collects_base_option_prefixes 
PASS: tests/test_commands.py::test_group_invoke_collects_used_option_prefixes 
PASS: tests/test_commands.py::test_abort_exceptions_with_disabled_standalone_mode[EOFError] 
PASS: tests/test_commands.py::test_abort_exceptions_with_disabled_standalone_mode[KeyboardInterrupt] 
PASS: tests/test_compat.py::test_is_jupyter_kernel_output 
PASS: tests/test_context.py::test_ensure_context_objects 
PASS: tests/test_context.py::test_get_context_objects 
PASS: tests/test_context.py::test_get_context_objects_no_ensuring 
PASS: tests/test_context.py::test_get_context_objects_missing 
PASS: tests/test_context.py::test_multi_enter 
PASS: tests/test_context.py::test_global_context_object 
PASS: tests/test_context.py::test_context_meta 
PASS: tests/test_context.py::test_make_pass_meta_decorator 
PASS: tests/test_context.py::test_make_pass_meta_decorator_doc 
PASS: tests/test_context.py::test_context_pushing 
PASS: tests/test_context.py::test_pass_obj 
PASS: tests/test_context.py::test_close_before_pop 
PASS: tests/test_context.py::test_with_resource 
PASS: tests/test_context.py::test_make_pass_decorator_args 
PASS: tests/test_context.py::test_propagate_show_default_setting 
PASS: tests/test_context.py::test_exit_not_standalone 
PASS: tests/test_context.py::test_parameter_source[default] 
PASS: tests/test_context.py::test_parameter_source[default_map] 
PASS: tests/test_context.py::test_parameter_source[commandline short] 
PASS: tests/test_context.py::test_parameter_source[commandline long] 
PASS: tests/test_context.py::test_parameter_source[environment auto] 
PASS: tests/test_context.py::test_parameter_source[environment manual] 
PASS: tests/test_context.py::test_propagate_opt_prefixes 
PASS: tests/test_custom_classes.py::test_command_context_class 
PASS: tests/test_custom_classes.py::test_context_invoke_type 
PASS: tests/test_custom_classes.py::test_context_formatter_class 
PASS: tests/test_custom_classes.py::test_group_command_class 
PASS: tests/test_custom_classes.py::test_group_group_class 
PASS: tests/test_custom_classes.py::test_group_group_class_self 
PASS: tests/test_defaults.py::test_basic_defaults 
PASS: tests/test_defaults.py::test_multiple_defaults 
PASS: tests/test_defaults.py::test_nargs_plus_multiple 
PASS: tests/test_defaults.py::test_multiple_flag_default 
PASS: tests/test_formatting.py::test_basic_functionality 
PASS: tests/test_formatting.py::test_wrapping_long_options_strings 
PASS: tests/test_formatting.py::test_wrapping_long_command_name 
PASS: tests/test_formatting.py::test_formatting_empty_help_lines 
PASS: tests/test_formatting.py::test_formatting_usage_error 
PASS: tests/test_formatting.py::test_formatting_usage_error_metavar_missing_arg 
PASS: tests/test_formatting.py::test_formatting_usage_error_metavar_bad_arg 
PASS: tests/test_formatting.py::test_formatting_usage_error_nested 
PASS: tests/test_formatting.py::test_formatting_usage_error_no_help 
PASS: tests/test_formatting.py::test_formatting_usage_custom_help 
PASS: tests/test_formatting.py::test_formatting_custom_type_metavar 
PASS: tests/test_formatting.py::test_truncating_docstring 
PASS: tests/test_formatting.py::test_truncating_docstring_no_help 
PASS: tests/test_formatting.py::test_removing_multiline_marker 
PASS: tests/test_formatting.py::test_global_show_default 
PASS: tests/test_formatting.py::test_formatting_with_options_metavar_empty 
PASS: tests/test_formatting.py::test_help_formatter_write_text 
PASS: tests/test_imports.py::test_light_imports 
PASS: tests/test_info_dict.py::test_parameter[Func ParamType] 
PASS: tests/test_info_dict.py::test_parameter[UNPROCESSED ParamType] 
PASS: tests/test_info_dict.py::test_parameter[STRING ParamType] 
PASS: tests/test_info_dict.py::test_parameter[Choice ParamType] 
PASS: tests/test_info_dict.py::test_parameter[DateTime ParamType] 
PASS: tests/test_info_dict.py::test_parameter[INT ParamType] 
PASS: tests/test_info_dict.py::test_parameter[IntRange ParamType] 
PASS: tests/test_info_dict.py::test_parameter[FLOAT ParamType] 
PASS: tests/test_info_dict.py::test_parameter[FloatRange ParamType] 
PASS: tests/test_info_dict.py::test_parameter[Bool ParamType] 
PASS: tests/test_info_dict.py::test_parameter[UUID ParamType] 
PASS: tests/test_info_dict.py::test_parameter[File ParamType] 
PASS: tests/test_info_dict.py::test_parameter[Path ParamType] 
PASS: tests/test_info_dict.py::test_parameter[Tuple ParamType] 
PASS: tests/test_info_dict.py::test_parameter[Option] 
PASS: tests/test_info_dict.py::test_parameter[Flag Option] 
PASS: tests/test_info_dict.py::test_parameter[Argument] 
PASS: tests/test_info_dict.py::test_command[Command] 
PASS: tests/test_info_dict.py::test_command[Group] 
PASS: tests/test_info_dict.py::test_command[Nested Group] 
PASS: tests/test_info_dict.py::test_context 
PASS: tests/test_info_dict.py::test_paramtype_no_name 
PASS: tests/test_normalization.py::test_option_normalization 
PASS: tests/test_normalization.py::test_choice_normalization 
PASS: tests/test_normalization.py::test_command_normalization 
PASS: tests/test_options.py::test_prefixes 
PASS: tests/test_options.py::test_invalid_option 
PASS: tests/test_options.py::test_invalid_nargs 
PASS: tests/test_options.py::test_nargs_tup_composite_mult 
PASS: tests/test_options.py::test_counting 
PASS: tests/test_options.py::test_unknown_options[--foo] 
PASS: tests/test_options.py::test_unknown_options[-f] 
PASS: tests/test_options.py::test_suggest_possible_options[--cat-Did you mean --count?] 
PASS: tests/test_options.py::test_suggest_possible_options[--bounds-(Possible options: --bound, --count)] 
PASS: tests/test_options.py::test_suggest_possible_options[--bount-(Possible options: --bound, --count)] 
PASS: tests/test_options.py::test_multiple_required 
PASS: tests/test_options.py::test_init_good_default_list[True-1-default0] 
PASS: tests/test_options.py::test_init_good_default_list[True-1-default1] 
PASS: tests/test_options.py::test_init_good_default_list[False-2-default2] 
PASS: tests/test_options.py::test_init_good_default_list[True-2-default3] 
PASS: tests/test_options.py::test_init_good_default_list[True-2-default4] 
PASS: tests/test_options.py::test_init_bad_default_list[True-1-1] 
PASS: tests/test_options.py::test_init_bad_default_list[False-2-default1] 
PASS: tests/test_options.py::test_init_bad_default_list[True-2-default2] 
PASS: tests/test_options.py::test_empty_envvar[MYPATH] 
PASS: tests/test_options.py::test_empty_envvar[AUTO_MYPATH] 
PASS: tests/test_options.py::test_multiple_envvar 
PASS: tests/test_options.py::test_trailing_blanks_boolean_envvar 
PASS: tests/test_options.py::test_multiple_default_help 
PASS: tests/test_options.py::test_show_default_default_map 
PASS: tests/test_options.py::test_multiple_default_type 
PASS: tests/test_options.py::test_multiple_default_composite_type 
PASS: tests/test_options.py::test_parse_multiple_default_composite_type 
PASS: tests/test_options.py::test_dynamic_default_help_unset 
PASS: tests/test_options.py::test_dynamic_default_help_text 
PASS: tests/test_options.py::test_dynamic_default_help_special_method 
PASS: tests/test_options.py::test_intrange_default_help_text[type0-1<=x<=32] 
PASS: tests/test_options.py::test_intrange_default_help_text[type1-1<x<32] 
PASS: tests/test_options.py::test_intrange_default_help_text[type2-x>=1] 
PASS: tests/test_options.py::test_intrange_default_help_text[type3-x<=32] 
PASS: tests/test_options.py::test_count_default_type_help 
PASS: tests/test_options.py::test_file_type_help_default 
PASS: tests/test_options.py::test_toupper_envvar_prefix 
PASS: tests/test_options.py::test_nargs_envvar 
PASS: tests/test_options.py::test_show_envvar 
PASS: tests/test_options.py::test_show_envvar_auto_prefix 
PASS: tests/test_options.py::test_show_envvar_auto_prefix_dash_in_command 
PASS: tests/test_options.py::test_custom_validation 
PASS: tests/test_options.py::test_callback_validates_prompt 
PASS: tests/test_options.py::test_winstyle_options 
PASS: tests/test_options.py::test_legacy_options 
PASS: tests/test_options.py::test_missing_option_string_cast 
PASS: tests/test_options.py::test_missing_required_flag 
PASS: tests/test_options.py::test_missing_choice 
PASS: tests/test_options.py::test_case_insensitive_choice 
PASS: tests/test_options.py::test_case_insensitive_choice_returned_exactly 
PASS: tests/test_options.py::test_option_help_preserve_paragraphs 
PASS: tests/test_options.py::test_argument_custom_class 
PASS: tests/test_options.py::test_option_custom_class 
PASS: tests/test_options.py::test_option_custom_class_reusable 
PASS: tests/test_options.py::test_bool_flag_with_type 
PASS: tests/test_options.py::test_aliases_for_flags 
PASS: tests/test_options.py::test_option_names[option_args0-aggressive] 
PASS: tests/test_options.py::test_option_names[option_args1-first] 
PASS: tests/test_options.py::test_option_names[option_args2-apple] 
PASS: tests/test_options.py::test_option_names[option_args3-cantaloupe] 
PASS: tests/test_options.py::test_option_names[option_args4-a] 
PASS: tests/test_options.py::test_option_names[option_args5-c] 
PASS: tests/test_options.py::test_option_names[option_args6-apple] 
PASS: tests/test_options.py::test_option_names[option_args7-cantaloupe] 
PASS: tests/test_options.py::test_option_names[option_args8-_from] 
PASS: tests/test_options.py::test_option_names[option_args9-_ret] 
PASS: tests/test_options.py::test_flag_duplicate_names 
PASS: tests/test_options.py::test_show_default_boolean_flag_name[False-no-cache] 
PASS: tests/test_options.py::test_show_default_boolean_flag_name[True-cache] 
PASS: tests/test_options.py::test_show_true_default_boolean_flag_value 
PASS: tests/test_options.py::test_hide_false_default_boolean_flag_value[False] 
PASS: tests/test_options.py::test_hide_false_default_boolean_flag_value[None] 
PASS: tests/test_options.py::test_show_default_string 
PASS: tests/test_options.py::test_do_not_show_no_default 
PASS: tests/test_options.py::test_do_not_show_default_empty_multiple 
PASS: tests/test_options.py::test_show_default_precedence[None-None-False] 
PASS: tests/test_options.py::test_show_default_precedence[None-False-False] 
PASS: tests/test_options.py::test_show_default_precedence[None-True-True] 
PASS: tests/test_options.py::test_show_default_precedence[False-None-False] 
PASS: tests/test_options.py::test_show_default_precedence[False-False-False] 
PASS: tests/test_options.py::test_show_default_precedence[False-True-True] 
PASS: tests/test_options.py::test_show_default_precedence[True-None-True] 
PASS: tests/test_options.py::test_show_default_precedence[True-False-False] 
PASS: tests/test_options.py::test_show_default_precedence[True-True-True] 
PASS: tests/test_options.py::test_show_default_precedence[False-one-True] 
PASS: tests/test_options.py::test_option_with_optional_value[None-expect0] 
PASS: tests/test_options.py::test_option_with_optional_value[args1-expect1] 
PASS: tests/test_options.py::test_option_with_optional_value[args2-expect2] 
PASS: tests/test_options.py::test_option_with_optional_value[args3-expect3] 
PASS: tests/test_options.py::test_option_with_optional_value[args4-expect4] 
PASS: tests/test_options.py::test_option_with_optional_value[args5-expect5] 
PASS: tests/test_options.py::test_option_with_optional_value[args6-expect6] 
PASS: tests/test_options.py::test_option_with_optional_value[args7-expect7] 
PASS: tests/test_options.py::test_option_with_optional_value[args8-expect8] 
PASS: tests/test_options.py::test_option_with_optional_value[args9-expect9] 
PASS: tests/test_options.py::test_option_with_optional_value[args10-expect10] 
PASS: tests/test_options.py::test_option_with_optional_value[args11-expect11] 
PASS: tests/test_options.py::test_option_with_optional_value[args12-expect12] 
PASS: tests/test_options.py::test_option_with_optional_value[args13-expect13] 
PASS: tests/test_options.py::test_multiple_option_with_optional_value 
PASS: tests/test_options.py::test_type_from_flag_value 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[int option] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[bool non-flag [None]] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[bool non-flag [True]] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[bool non-flag [False]] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[non-bool flag_value] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[is_flag=True] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[secondary option [implicit flag]] 
PASS: tests/test_options.py::test_is_bool_flag_is_correctly_set[bool flag_value] 
PASS: tests/test_options.py::test_invalid_flag_combinations[kwargs0-'count' is not valid with 'multiple'.] 
PASS: tests/test_options.py::test_invalid_flag_combinations[kwargs1-'count' is not valid with 'is_flag'.] 
PASS: tests/test_parser.py::test_split_arg_string[cli a b c-expect0] 
PASS: tests/test_parser.py::test_split_arg_string[cli 'my file-expect1] 
PASS: tests/test_parser.py::test_split_arg_string[cli 'my file'-expect2] 
PASS: tests/test_parser.py::test_split_arg_string[cli my\\-expect3] 
PASS: tests/test_parser.py::test_split_arg_string[cli my\\ file-expect4] 
PASS: tests/test_parser.py::test_parser_default_prefixes 
PASS: tests/test_parser.py::test_parser_collects_prefixes 
PASS: tests/test_shell_completion.py::test_command 
PASS: tests/test_shell_completion.py::test_group 
PASS: tests/test_shell_completion.py::test_group_command_same_option 
PASS: tests/test_shell_completion.py::test_chained 
PASS: tests/test_shell_completion.py::test_help_option 
PASS: tests/test_shell_completion.py::test_argument_order 
PASS: tests/test_shell_completion.py::test_argument_default 
PASS: tests/test_shell_completion.py::test_type_choice 
PASS: tests/test_shell_completion.py::test_choice_special_characters 
PASS: tests/test_shell_completion.py::test_choice_conflicting_prefix 
PASS: tests/test_shell_completion.py::test_option_count 
PASS: tests/test_shell_completion.py::test_option_optional 
PASS: tests/test_shell_completion.py::test_path_types[type0-file] 
PASS: tests/test_shell_completion.py::test_path_types[type1-file] 
PASS: tests/test_shell_completion.py::test_path_types[type2-dir] 
PASS: tests/test_shell_completion.py::test_absolute_path 
PASS: tests/test_shell_completion.py::test_option_flag 
PASS: tests/test_shell_completion.py::test_option_custom 
PASS: tests/test_shell_completion.py::test_option_multiple 
PASS: tests/test_shell_completion.py::test_option_nargs 
PASS: tests/test_shell_completion.py::test_argument_nargs 
PASS: tests/test_shell_completion.py::test_double_dash 
PASS: tests/test_shell_completion.py::test_hidden 
PASS: tests/test_shell_completion.py::test_add_different_name 
PASS: tests/test_shell_completion.py::test_completion_item_data 
PASS: tests/test_shell_completion.py::test_full_source[bash] 
PASS: tests/test_shell_completion.py::test_full_source[zsh] 
PASS: tests/test_shell_completion.py::test_full_source[fish] 
PASS: tests/test_shell_completion.py::test_full_complete[bash-env0-plain,a\nplain,b\n] 
PASS: tests/test_shell_completion.py::test_full_complete[bash-env1-plain,b\n] 
PASS: tests/test_shell_completion.py::test_full_complete[zsh-env2-plain\na\n_\nplain\nb\nbee\n] 
PASS: tests/test_shell_completion.py::test_full_complete[zsh-env3-plain\nb\nbee\n] 
PASS: tests/test_shell_completion.py::test_full_complete[fish-env4-plain,a\nplain,b\tbee\n] 
PASS: tests/test_shell_completion.py::test_full_complete[fish-env5-plain,b\tbee\n] 
PASS: tests/test_shell_completion.py::test_context_settings 
PASS: tests/test_shell_completion.py::test_choice_case_sensitive[False-expect0] 
PASS: tests/test_shell_completion.py::test_choice_case_sensitive[True-expect1] 
PASS: tests/test_shell_completion.py::test_add_completion_class 
PASS: tests/test_shell_completion.py::test_add_completion_class_with_name 
PASS: tests/test_shell_completion.py::test_add_completion_class_decorator 
PASS: tests/test_termui.py::test_progressbar_strip_regression 
PASS: tests/test_termui.py::test_progressbar_length_hint 
PASS: tests/test_termui.py::test_progressbar_hidden 
PASS: tests/test_termui.py::test_progressbar_time_per_iteration[avg0-0.0] 
PASS: tests/test_termui.py::test_progressbar_time_per_iteration[avg1-2.5] 
PASS: tests/test_termui.py::test_progressbar_eta[False-5] 
PASS: tests/test_termui.py::test_progressbar_eta[True-0] 
PASS: tests/test_termui.py::test_progressbar_format_eta[0-00:00:00] 
PASS: tests/test_termui.py::test_progressbar_format_eta[30-00:00:30] 
PASS: tests/test_termui.py::test_progressbar_format_eta[90-00:01:30] 
PASS: tests/test_termui.py::test_progressbar_format_eta[900-00:15:00] 
PASS: tests/test_termui.py::test_progressbar_format_eta[9000-02:30:00] 
PASS: tests/test_termui.py::test_progressbar_format_eta[99999999999-1157407d 09:46:39] 
PASS: tests/test_termui.py::test_progressbar_format_eta[None-] 
PASS: tests/test_termui.py::test_progressbar_format_pos[0-5] 
PASS: tests/test_termui.py::test_progressbar_format_pos[-1-1] 
PASS: tests/test_termui.py::test_progressbar_format_pos[5-5] 
PASS: tests/test_termui.py::test_progressbar_format_pos[6-5] 
PASS: tests/test_termui.py::test_progressbar_format_pos[4-0] 
PASS: tests/test_termui.py::test_progressbar_format_bar[8-False-7-0-#######-] 
PASS: tests/test_termui.py::test_progressbar_format_bar[0-True-8-0-########] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line[0-True-True-0- [--------] 0/0 0%] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line[0-False-True-0- [--------] 0/0] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line[0-False-False-0- [--------]0] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line[0-False-False-0- [--------]1] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line[8-True-True-8- [########] 8/8 100%] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line_with_show_func[test] 
PASS: tests/test_termui.py::test_progressbar_format_progress_line_with_show_func[None] 
PASS: tests/test_termui.py::test_progressbar_init_exceptions 
PASS: tests/test_termui.py::test_progressbar_iter_outside_with_exceptions 
PASS: tests/test_termui.py::test_progressbar_is_iterator 
PASS: tests/test_termui.py::test_choices_list_in_prompt 
PASS: tests/test_termui.py::test_file_prompt_default_format[file_kwargs0] 
PASS: tests/test_termui.py::test_file_prompt_default_format[file_kwargs1] 
PASS: tests/test_termui.py::test_file_prompt_default_format[file_kwargs2] 
PASS: tests/test_termui.py::test_secho 
PASS: tests/test_termui.py::test_secho_non_text[123-\x1b[45m123\x1b[0m] 
PASS: tests/test_termui.py::test_secho_non_text[test-test] 
PASS: tests/test_termui.py::test_progressbar_yields_all_items 
PASS: tests/test_termui.py::test_progressbar_update 
PASS: tests/test_termui.py::test_progressbar_item_show_func 
PASS: tests/test_termui.py::test_progressbar_update_with_item_show_func 
PASS: tests/test_termui.py::test_progress_bar_update_min_steps 
tests/test_termui.py::test_getchar_windows[True-h] SKIP (Tests us...) 
tests/test_termui.py::test_getchar_windows[True-H] SKIP (Tests us...) 
tests/test_termui.py::test_getchar_windows[True-\xe9] SKIP (Tests...) 
tests/test_termui.py::test_getchar_windows[True-\xc0] SKIP (Tests...) 
tests/test_termui.py::test_getchar_windows[True- ] SKIP (Tests us...) 
tests/test_termui.py::test_getchar_windows[True-\u5b57] SKIP (Tes...) 
tests/test_termui.py::test_getchar_windows[True-\xe0H] SKIP (Test...) 
tests/test_termui.py::test_getchar_windows[True-\xe0R] SKIP (Test...) 
tests/test_termui.py::test_getchar_windows[False-h] SKIP (Tests u...) 
tests/test_termui.py::test_getchar_windows[False-H] SKIP (Tests u...) 
tests/test_termui.py::test_getchar_windows[False-\xe9] SKIP (Test...) 
tests/test_termui.py::test_getchar_windows[False-\xc0] SKIP (Test...) 
tests/test_termui.py::test_getchar_windows[False- ] SKIP (Tests u...) 
tests/test_termui.py::test_getchar_windows[False-\u5b57] SKIP (Te...) 
tests/test_termui.py::test_getchar_windows[False-\xe0H] SKIP (Tes...) 
tests/test_termui.py::test_getchar_windows[False-\xe0R] SKIP (Tes...) 
SKIP: tests/test_termui.py::test_getchar_special_key_windows[\x00-a] 
SKIP: tests/test_termui.py::test_getchar_special_key_windows[\x00-b] 
SKIP: tests/test_termui.py::test_getchar_special_key_windows[\xe0-c] 
SKIP: tests/test_termui.py::test_getchar_windows_exceptions[\x03-KeyboardInterrupt] 
SKIP: tests/test_termui.py::test_getchar_windows_exceptions[\x1a-EOFError] 
PASS: tests/test_termui.py::test_fast_edit 
PASS: tests/test_termui.py::test_prompt_required_with_required[True-False-None-prompt] 
PASS: tests/test_termui.py::test_prompt_required_with_required[True-False-args1-Option '-v' requires an argument.] 
PASS: tests/test_termui.py::test_prompt_required_with_required[False-True-None-prompt] 
PASS: tests/test_termui.py::test_prompt_required_with_required[False-True-args3-prompt] 
PASS: tests/test_termui.py::test_prompt_required_false[no flag] 
PASS: tests/test_termui.py::test_prompt_required_false[short sep value] 
PASS: tests/test_termui.py::test_prompt_required_false[long sep value] 
PASS: tests/test_termui.py::test_prompt_required_false[short join value] 
PASS: tests/test_termui.py::test_prompt_required_false[long join value] 
PASS: tests/test_termui.py::test_prompt_required_false[short no value] 
PASS: tests/test_termui.py::test_prompt_required_false[long no value] 
PASS: tests/test_termui.py::test_prompt_required_false[no value opt] 
PASS: tests/test_termui.py::test_confirmation_prompt[True-password\npassword-None-password] 
PASS: tests/test_termui.py::test_confirmation_prompt[Confirm Password-password\npassword\n-None-password] 
PASS: tests/test_termui.py::test_confirmation_prompt[True---] 
PASS: tests/test_termui.py::test_confirmation_prompt[False-None-None-None] 
PASS: tests/test_testing.py::test_runner 
PASS: tests/test_testing.py::test_echo_stdin_stream 
PASS: tests/test_testing.py::test_echo_stdin_prompts 
PASS: tests/test_testing.py::test_runner_with_stream 
PASS: tests/test_testing.py::test_prompts 
PASS: tests/test_testing.py::test_getchar 
PASS: tests/test_testing.py::test_catch_exceptions 
PASS: tests/test_testing.py::test_with_color 
PASS: tests/test_testing.py::test_with_color_but_pause_not_blocking 
PASS: tests/test_testing.py::test_exit_code_and_output_from_sys_exit 
PASS: tests/test_testing.py::test_env 
PASS: tests/test_testing.py::test_stderr 
PASS: tests/test_testing.py::test_args[None-bar\n] 
PASS: tests/test_testing.py::test_args[args1-bar\n] 
PASS: tests/test_testing.py::test_args[-bar\n] 
PASS: tests/test_testing.py::test_args[args3-one two\n] 
PASS: tests/test_testing.py::test_args[--foo "one two"-one two\n] 
PASS: tests/test_testing.py::test_setting_prog_name_in_extra 
PASS: tests/test_testing.py::test_command_standalone_mode_returns_value 
PASS: tests/test_testing.py::test_file_stdin_attrs 
PASS: tests/test_testing.py::test_isolated_runner 
PASS: tests/test_testing.py::test_isolated_runner_custom_tempdir 
PASS: tests/test_testing.py::test_isolation_stderr_errors 
PASS: tests/test_types.py::test_range[type0-3-3] 
PASS: tests/test_types.py::test_range[type1-5-5] 
PASS: tests/test_types.py::test_range[type2-100-100] 
PASS: tests/test_types.py::test_range[type3-5-5] 
PASS: tests/test_types.py::test_range[type4--100--100] 
PASS: tests/test_types.py::test_range[type5--1-0] 
PASS: tests/test_types.py::test_range[type6-6-5] 
PASS: tests/test_types.py::test_range[type7-0-1] 
PASS: tests/test_types.py::test_range[type8-5-4] 
PASS: tests/test_types.py::test_range[type9-1.2-1.2] 
PASS: tests/test_types.py::test_range[type10-0.51-0.51] 
PASS: tests/test_types.py::test_range[type11-1.49-1.49] 
PASS: tests/test_types.py::test_range[type12--0.0-0.5] 
PASS: tests/test_types.py::test_range[type13-inf-1.5] 
PASS: tests/test_types.py::test_range_fail[type0-6-6 is not in the range 0<=x<=5.] 
PASS: tests/test_types.py::test_range_fail[type1-4-4 is not in the range x>=5.] 
PASS: tests/test_types.py::test_range_fail[type2-6-6 is not in the range x<=5.] 
PASS: tests/test_types.py::test_range_fail[type3-0-0<x<=5] 
PASS: tests/test_types.py::test_range_fail[type4-5-0<=x<5] 
PASS: tests/test_types.py::test_range_fail[type5-0.5-x>0.5] 
PASS: tests/test_types.py::test_range_fail[type6-1.5-x<1.5] 
PASS: tests/test_types.py::test_float_range_no_clamp_open 
PASS: tests/test_types.py::test_cast_multi_default[2-False-None-None] 
PASS: tests/test_types.py::test_cast_multi_default[2-False-default1-expect1] 
PASS: tests/test_types.py::test_cast_multi_default[None-True-None-expect2] 
PASS: tests/test_types.py::test_cast_multi_default[None-True-default3-expect3] 
PASS: tests/test_types.py::test_cast_multi_default[2-True-None-expect4] 
PASS: tests/test_types.py::test_cast_multi_default[2-True-default5-expect5] 
PASS: tests/test_types.py::test_cast_multi_default[-1-None-None-expect6] 
PASS: tests/test_types.py::test_path_type[None-a/b/c.txt] 
PASS: tests/test_types.py::test_path_type[str-a/b/c.txt] 
PASS: tests/test_types.py::test_path_type[bytes-a/b/c.txt] 
PASS: tests/test_types.py::test_path_type[Path-expect3] 
PASS: tests/test_types.py::test_path_resolve_symlink 
PASS: tests/test_types.py::test_path_surrogates 
PASS: tests/test_types.py::test_file_surrogates[type0] 
PASS: tests/test_types.py::test_file_surrogates[type1] 
PASS: tests/test_types.py::test_file_error_surrogates 
PASS: tests/test_utils.py::test_echo 
PASS: tests/test_utils.py::test_echo_custom_file 
PASS: tests/test_utils.py::test_echo_no_streams 
PASS: tests/test_utils.py::test_styling[styles0-\x1b[30mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles1-\x1b[31mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles2-\x1b[32mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles3-\x1b[33mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles4-\x1b[34mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles5-\x1b[35mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles6-\x1b[36mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles7-\x1b[37mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles8-\x1b[40mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles9-\x1b[41mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles10-\x1b[42mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles11-\x1b[43mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles12-\x1b[44mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles13-\x1b[45mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles14-\x1b[46mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles15-\x1b[47mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles16-\x1b[48;5;91mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles17-\x1b[48;2;135;0;175mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles18-\x1b[1mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles19-\x1b[2mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles20-\x1b[4mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles21-\x1b[53mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles22-\x1b[3mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles23-\x1b[5mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles24-\x1b[7mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles25-\x1b[9mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles26-\x1b[22mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles27-\x1b[22mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles28-\x1b[24mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles29-\x1b[55mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles30-\x1b[23mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles31-\x1b[25mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles32-\x1b[27mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles33-\x1b[29mx y\x1b[0m] 
PASS: tests/test_utils.py::test_styling[styles34-\x1b[30mx y] 
PASS: tests/test_utils.py::test_unstyle_other_ansi[\x1b[?25lx y\x1b[?25h-x y] 
PASS: tests/test_utils.py::test_filename_formatting 
PASS: tests/test_utils.py::test_prompts 
PASS: tests/test_utils.py::test_confirm_repeat 
PASS: tests/test_utils.py::test_prompts_abort 
PASS: tests/test_utils.py::test_echo_via_pager[test0-cat] 
PASS: tests/test_utils.py::test_echo_via_pager[test0-cat 0] 
PASS: tests/test_utils.py::test_echo_via_pager[test0-cat 1] 
PASS: tests/test_utils.py::test_echo_via_pager[test1-cat] 
PASS: tests/test_utils.py::test_echo_via_pager[test1-cat 0] 
PASS: tests/test_utils.py::test_echo_via_pager[test1-cat 1] 
PASS: tests/test_utils.py::test_echo_via_pager[test2-cat] 
PASS: tests/test_utils.py::test_echo_via_pager[test2-cat 0] 
PASS: tests/test_utils.py::test_echo_via_pager[test2-cat 1] 
PASS: tests/test_utils.py::test_echo_via_pager[test3-cat] 
PASS: tests/test_utils.py::test_echo_via_pager[test3-cat 0] 
PASS: tests/test_utils.py::test_echo_via_pager[test3-cat 1] 
PASS: tests/test_utils.py::test_echo_via_pager[test4-cat] 
PASS: tests/test_utils.py::test_echo_via_pager[test4-cat 0] 
PASS: tests/test_utils.py::test_echo_via_pager[test4-cat 1] 
PASS: tests/test_utils.py::test_echo_color_flag 
PASS: tests/test_utils.py::test_prompt_cast_default 
PASS: tests/test_utils.py::test_echo_writing_to_standard_error 
PASS: tests/test_utils.py::test_echo_with_capsys 
PASS: tests/test_utils.py::test_open_file 
PASS: tests/test_utils.py::test_open_file_pathlib_dash 
PASS: tests/test_utils.py::test_open_file_ignore_errors_stdin 
PASS: tests/test_utils.py::test_open_file_respects_ignore 
PASS: tests/test_utils.py::test_open_file_ignore_invalid_utf8 
PASS: tests/test_utils.py::test_open_file_ignore_no_encoding 
PASS: tests/test_utils.py::test_open_file_atomic_permissions_existing_file[256] 
PASS: tests/test_utils.py::test_open_file_atomic_permissions_existing_file[292] 
PASS: tests/test_utils.py::test_open_file_atomic_permissions_existing_file[384] 
PASS: tests/test_utils.py::test_open_file_atomic_permissions_existing_file[420] 
PASS: tests/test_utils.py::test_open_file_atomic_permissions_new_file 
PASS: tests/test_utils.py::test_iter_keepopenfile 
PASS: tests/test_utils.py::test_iter_lazyfile 
PASS: tests/test_utils.py::test_detect_program_name[example.py-None-example.py] 
PASS: tests/test_utils.py::test_detect_program_name[/foo/bar/example.py-None-example.py] 
PASS: tests/test_utils.py::test_detect_program_name[example-None-example] 
PASS: tests/test_utils.py::test_detect_program_name[example/__main__.py-example-python -m example] 
PASS: tests/test_utils.py::test_detect_program_name[example/cli.py-example-python -m example.cli] 
PASS: tests/test_utils.py::test_detect_program_name[example--example] 
PASS: tests/test_utils.py::test_expand_args 
PASS: tests/test_utils.py::test_make_default_short_help[-empty] 
PASS: tests/test_utils.py::test_make_default_short_help[-equal length, no dot] 
PASS: tests/test_utils.py::test_make_default_short_help[-sentence < max] 
PASS: tests/test_utils.py::test_make_default_short_help[-paragraph < max] 
PASS: tests/test_utils.py::test_make_default_short_help[-truncate] 
PASS: tests/test_utils.py::test_make_default_short_help[-length includes suffix] 
PASS: tests/test_utils.py::test_make_default_short_help[-ignore dot in word] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-empty] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-equal length, no dot] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-sentence < max] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-paragraph < max] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-truncate] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-length includes suffix] 
PASS: tests/test_utils.py::test_make_default_short_help[no-wrap mark-ignore dot in word] 

================== 589 passed, 21 skipped, 1 xfailed in 1.59s ==================
DURATION: 3
