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