============================= test session starts ==============================
platform sunos5 -- Python $(PYTHON_VERSION).X -- $(PYTHON)
cachedir: .pytest_cache
rootdir: $(@D)
configfile: pyproject.toml
testpaths: tests
collecting ... collected 998 items

tests/test_ansi.py::test_strip_style PASSED
tests/test_ansi.py::test_style_aware_wcswidth PASSED
tests/test_ansi.py::test_widest_line PASSED
tests/test_ansi.py::test_style_none PASSED
tests/test_ansi.py::test_style_fg[] PASSED
tests/test_ansi.py::test_style_fg[] PASSED
tests/test_ansi.py::test_style_fg[fg_color2] PASSED
tests/test_ansi.py::test_style_bg[] PASSED
tests/test_ansi.py::test_style_bg[] PASSED
tests/test_ansi.py::test_style_bg[bg_color2] PASSED
tests/test_ansi.py::test_style_invalid_types PASSED
tests/test_ansi.py::test_style_bold PASSED
tests/test_ansi.py::test_style_dim PASSED
tests/test_ansi.py::test_style_italic PASSED
tests/test_ansi.py::test_style_overline PASSED
tests/test_ansi.py::test_style_strikethrough PASSED
tests/test_ansi.py::test_style_underline PASSED
tests/test_ansi.py::test_style_multi PASSED
tests/test_ansi.py::test_set_title PASSED
tests/test_ansi.py::test_async_alert_str[127-(Cmd) -help his-12-\x1b[35mHello World!\x1b[39m-\x1b[2K\r\x1b[35mHello World!\x1b[39m] PASSED
tests/test_ansi.py::test_async_alert_str[127-\n(Cmd) -help -5-foo-\x1b[2K\x1b[1A\x1b[2K\rfoo] PASSED
tests/test_ansi.py::test_async_alert_str[10-(Cmd) -help history of the american republic-4-boo-\x1b[3B\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\rboo] PASSED
tests/test_ansi.py::test_clear_screen PASSED
tests/test_ansi.py::test_clear_line PASSED
tests/test_ansi.py::test_cursor PASSED
tests/test_ansi.py::test_sequence_str_building[] PASSED
tests/test_ansi.py::test_sequence_str_building[] PASSED
tests/test_ansi.py::test_sequence_str_building[] PASSED
tests/test_ansi.py::test_sequence_str_building[] PASSED
tests/test_ansi.py::test_sequence_str_building[ansi_sequence4] PASSED
tests/test_ansi.py::test_sequence_str_building[ansi_sequence5] PASSED
tests/test_ansi.py::test_sequence_str_building[] PASSED
tests/test_ansi.py::test_rgb_bounds[0-0-0-True] PASSED
tests/test_ansi.py::test_rgb_bounds[255-255-255-True] PASSED
tests/test_ansi.py::test_rgb_bounds[-1-0-0-False] PASSED
tests/test_ansi.py::test_rgb_bounds[256-255-255-False] PASSED
tests/test_ansi.py::test_rgb_bounds[0--1-0-False] PASSED
tests/test_ansi.py::test_rgb_bounds[255-256-255-False] PASSED
tests/test_ansi.py::test_rgb_bounds[0-0--1-False] PASSED
tests/test_ansi.py::test_rgb_bounds[255-255-256-False] PASSED
tests/test_ansi.py::test_std_color_re PASSED
tests/test_ansi.py::test_eight_bit_color_re PASSED
tests/test_ansi.py::test_rgb_color_re PASSED
tests/test_argparse.py::test_invalid_syntax PASSED
tests/test_argparse.py::test_argparse_basic_command PASSED
tests/test_argparse.py::test_argparse_remove_quotes PASSED
tests/test_argparse.py::test_argparse_with_no_args PASSED
tests/test_argparse.py::test_argparser_kwargs PASSED
tests/test_argparse.py::test_argparse_preserve_quotes PASSED
tests/test_argparse.py::test_argparse_custom_namespace PASSED
tests/test_argparse.py::test_argparse_with_list PASSED
tests/test_argparse.py::test_argparse_with_list_remove_quotes PASSED
tests/test_argparse.py::test_argparse_with_list_preserve_quotes PASSED
tests/test_argparse.py::test_argparse_with_list_custom_namespace PASSED
tests/test_argparse.py::test_argparse_with_list_and_empty_doc PASSED
tests/test_argparse.py::test_argparser_correct_args_with_quotes_and_midline_options PASSED
tests/test_argparse.py::test_argparser_and_unknown_args_kwargs PASSED
tests/test_argparse.py::test_argparse_quoted_arguments_multiple PASSED
tests/test_argparse.py::test_argparse_help_docstring PASSED
tests/test_argparse.py::test_argparse_help_description PASSED
tests/test_argparse.py::test_argparse_prog PASSED
tests/test_argparse.py::test_arglist PASSED
tests/test_argparse.py::test_arglist_kwargs PASSED
tests/test_argparse.py::test_preservelist PASSED
tests/test_argparse.py::test_invalid_parser_builder PASSED
tests/test_argparse.py::test_subcommand_foo PASSED
tests/test_argparse.py::test_subcommand_bar PASSED
tests/test_argparse.py::test_subcommand_invalid PASSED
tests/test_argparse.py::test_subcommand_base_help PASSED
tests/test_argparse.py::test_subcommand_help PASSED
tests/test_argparse.py::test_subcommand_invalid_help PASSED
tests/test_argparse.py::test_add_another_subcommand PASSED
tests/test_argparse.py::test_subcmd_decorator PASSED
tests/test_argparse.py::test_unittest_mock PASSED
tests/test_argparse.py::test_pytest_mock_invalid PASSED
tests/test_argparse.py::test_pytest_mock_valid[spec_param0] PASSED
tests/test_argparse.py::test_pytest_mock_valid[spec_param1] PASSED
tests/test_argparse.py::test_pytest_mock_valid[spec_param2] PASSED
tests/test_argparse_completer.py::test_help[music] PASSED
tests/test_argparse_completer.py::test_help[music create] PASSED
tests/test_argparse_completer.py::test_help[music create rock] PASSED
tests/test_argparse_completer.py::test_help[music create jazz] PASSED
tests/test_argparse_completer.py::test_bad_subcommand_help PASSED
tests/test_argparse_completer.py::test_complete_help[-mus-completions0] PASSED
tests/test_argparse_completer.py::test_complete_help[music-cre-completions1] PASSED
tests/test_argparse_completer.py::test_complete_help[music-creab-completions2] PASSED
tests/test_argparse_completer.py::test_complete_help[music create--completions3] PASSED
tests/test_argparse_completer.py::test_complete_help[music crea-jazz-completions4] PASSED
tests/test_argparse_completer.py::test_complete_help[music create-foo-completions5] PASSED
tests/test_argparse_completer.py::test_complete_help[fake create--completions6] PASSED
tests/test_argparse_completer.py::test_complete_help[music fake--completions7] PASSED
tests/test_argparse_completer.py::test_subcommand_completions[create--completions0] PASSED
tests/test_argparse_completer.py::test_subcommand_completions[create-ja-completions1] PASSED
tests/test_argparse_completer.py::test_subcommand_completions[create-foo-completions2] PASSED
tests/test_argparse_completer.py::test_subcommand_completions[creab-ja-completions3] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---completion_matches0-display_matches0] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag----completion_matches1-display_matches1] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--n-completion_matches2-display_matches2] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---n-completion_matches3-display_matches3] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_flag---completion_matches4-display_matches4] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--r-completion_matches5-display_matches5] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---rem-completion_matches6-display_matches6] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -r value---completion_matches7-display_matches7] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --remainder_flag value----completion_matches8-display_matches8] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--s-completion_matches9-display_matches9] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---s-completion_matches10-display_matches10] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -n----completion_matches11-display_matches11] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_const_flag -c --append_flag value----completion_matches12-display_matches12] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-+-completion_matches13-display_matches13] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-++-completion_matches14-display_matches14] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag ------completion_matches15-display_matches15] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --help ------completion_matches16-display_matches16] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ---++-completion_matches17-display_matches17] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ++help ---++-completion_matches18-display_matches18] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[pos_and_flag--completion_matches19-display_matches19] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[pos_and_flag choice --completion_matches20-display_matches20] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[pos_and_flag choice -f --completion_matches21-display_matches21] PASSED
tests/test_argparse_completer.py::test_autcomp_flag_completion[pos_and_flag choice -f -h --completion_matches22-display_matches22] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-l--completions0] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--list-s-completions1] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-p--completions2] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--provider-pr-completions3] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-n--completions4] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--num-1-completions5] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--num---completions6] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--num--1-completions7] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--num_completion_items--completions8] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1--completions0] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1-s-completions1] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2--completions2] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2-pr-completions3] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3--completions4] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3-2-completions5] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[4--completions6] PASSED
tests/test_argparse_completer.py::test_flag_sorting PASSED
tests/test_argparse_completer.py::test_autocomp_flag_completers[-c--completions0] PASSED
tests/test_argparse_completer.py::test_autocomp_flag_completers[--completer-f-completions1] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_completers[1--completions0] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_completers[1-p-completions1] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_completers[2--completions2] PASSED
tests/test_argparse_completer.py::test_autocomp_positional_completers[2-m-completions3] PASSED
tests/test_argparse_completer.py::test_autocomp_blank_token PASSED
tests/test_argparse_completer.py::test_completion_items PASSED
tests/test_argparse_completer.py::test_max_completion_items[1-False] PASSED
tests/test_argparse_completer.py::test_max_completion_items[5-True] PASSED
tests/test_argparse_completer.py::test_max_completion_items[100-False] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--set_value-completions0] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set-completions1] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value-completions2] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value --set_value-completions3] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more-completions4] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more one-completions5] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--optional-completions6] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--optional optional-completions7] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--range-completions8] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--range some-completions9] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--range some range-completions10] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--remainder-completions11] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder -completions12] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--remainder choices --set_value-completions13] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--range choice ---completions14] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder ---completions15] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[-- --one_or_more -completions16] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[-completions17] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[positional-completions18] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value-completions19] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set-completions20] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set value-completions21] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[positional --range choice ---completions22] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[the positional-completions23] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder-completions24] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder choices-completions25] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[the positional --set_value-completions26] PASSED
tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder --set_value-completions27] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo ----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo --help--False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one ----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or --set_value--False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or more----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value ----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value --one_or_more--False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set value----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices ----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices range --set_value--False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range range----False] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag ----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag --help--True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more ----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more --set_value--True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set ----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set --one_or_more--True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range ----True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range --set_value--True] PASSED
tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range----True] PASSED
tests/test_argparse_completer.py::test_completion_items_arg_header PASSED
tests/test_argparse_completer.py::test_completion_items_descriptive_header PASSED
tests/test_argparse_completer.py::test_autocomp_hint[hint--True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[hint --flag--True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_help--False] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_hint--False] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more---True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices-bad_completion-True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices---False] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs --remainder---True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[hint---False] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices---True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices remainder---True] PASSED
tests/test_argparse_completer.py::test_autocomp_hint_no_help_text PASSED
tests/test_argparse_completer.py::test_completion_error[--choice -choice] PASSED
tests/test_argparse_completer.py::test_completion_error[-completer] PASSED
tests/test_argparse_completer.py::test_arg_tokens[arg_tokens choice subcmd-completions0] PASSED
tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd fake-completions1] PASSED
tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd --parent_arg override fake-completions2] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex--the optional positional-None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex---fl----flag ] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag--the flag arg-None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val---fl--None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val --flag--f/--flag: not allowed with argument optional_pos-None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val--the last arg-None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val---oth--None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --other---o/--other_flag: not allowed with argument -f/--flag-None] PASSED
tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --flag--the flag arg-None] PASSED
tests/test_argparse_completer.py::test_single_prefix_char PASSED
tests/test_argparse_completer.py::test_looks_like_flag PASSED
tests/test_argparse_completer.py::test_complete_command_no_tokens PASSED
tests/test_argparse_completer.py::test_complete_command_help_no_tokens PASSED
tests/test_argparse_completer.py::test_complete_standalone[--provider-completions0] PASSED
tests/test_argparse_completer.py::test_complete_standalone[--completer-completions1] PASSED
tests/test_argparse_completer.py::test_default_custom_completer_type PASSED
tests/test_argparse_completer.py::test_custom_completer_type PASSED
tests/test_argparse_completer.py::test_decorated_subcmd_custom_completer PASSED
tests/test_argparse_completer.py::test_add_parser_custom_completer PASSED
tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs0-True] PASSED
tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs1-True] PASSED
tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs2-False] PASSED
tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs0] PASSED
tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs1] PASSED
tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs0] PASSED
tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs1] PASSED
tests/test_argparse_custom.py::test_apcustom_usage PASSED
tests/test_argparse_custom.py::test_apcustom_nargs_help_format PASSED
tests/test_argparse_custom.py::test_apcustom_nargs_range_validation PASSED
tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple0] PASSED
tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple1] PASSED
tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple2] PASSED
tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple3] PASSED
tests/test_argparse_custom.py::test_apcustom_narg_tuple_order PASSED
tests/test_argparse_custom.py::test_apcustom_narg_tuple_negative PASSED
tests/test_argparse_custom.py::test_apcustom_narg_tuple_zero_base PASSED
tests/test_argparse_custom.py::test_apcustom_narg_tuple_one_base PASSED
tests/test_argparse_custom.py::test_apcustom_narg_tuple_other_ranges PASSED
tests/test_argparse_custom.py::test_apcustom_print_message PASSED
tests/test_argparse_custom.py::test_generate_range_error PASSED
tests/test_argparse_custom.py::test_apcustom_required_options PASSED
tests/test_argparse_custom.py::test_override_parser PASSED
tests/test_argparse_custom.py::test_apcustom_metavar_tuple PASSED
tests/test_argparse_custom.py::test_cmd2_attribute_wrapper PASSED
tests/test_argparse_custom.py::test_completion_items_as_choices PASSED
tests/test_cmd2.py::test_version PASSED
tests/test_cmd2.py::test_not_in_main_thread PASSED
tests/test_cmd2.py::test_empty_statement PASSED
tests/test_cmd2.py::test_base_help PASSED
tests/test_cmd2.py::test_base_help_verbose PASSED
tests/test_cmd2.py::test_base_argparse_help PASSED
tests/test_cmd2.py::test_base_invalid_option PASSED
tests/test_cmd2.py::test_base_shortcuts PASSED
tests/test_cmd2.py::test_command_starts_with_shortcut PASSED
tests/test_cmd2.py::test_base_set PASSED
tests/test_cmd2.py::test_set PASSED
tests/test_cmd2.py::test_set_val_empty PASSED
tests/test_cmd2.py::test_set_val_is_flag PASSED
tests/test_cmd2.py::test_set_not_supported PASSED
tests/test_cmd2.py::test_set_no_settables PASSED
tests/test_cmd2.py::test_set_allow_style[Never-True-Never] PASSED
tests/test_cmd2.py::test_set_allow_style[neVeR-True-Never] PASSED
tests/test_cmd2.py::test_set_allow_style[Terminal-True-Terminal] PASSED
tests/test_cmd2.py::test_set_allow_style[TeRMInal-True-Terminal] PASSED
tests/test_cmd2.py::test_set_allow_style[Always-True-Always] PASSED
tests/test_cmd2.py::test_set_allow_style[AlWaYs-True-Always] PASSED
tests/test_cmd2.py::test_set_allow_style[invalid-False-Terminal] PASSED
tests/test_cmd2.py::test_set_with_choices PASSED
tests/test_cmd2.py::test_set_onchange_hook PASSED
tests/test_cmd2.py::test_base_shell PASSED
tests/test_cmd2.py::test_shell_last_result PASSED
tests/test_cmd2.py::test_shell_manual_call PASSED
tests/test_cmd2.py::test_base_error PASSED
tests/test_cmd2.py::test_base_error_suggest_command PASSED
tests/test_cmd2.py::test_run_script PASSED
tests/test_cmd2.py::test_run_script_with_empty_args PASSED
tests/test_cmd2.py::test_run_script_with_invalid_file PASSED
tests/test_cmd2.py::test_run_script_with_empty_file PASSED
tests/test_cmd2.py::test_run_script_with_binary_file PASSED
tests/test_cmd2.py::test_run_script_with_python_file PASSED
tests/test_cmd2.py::test_run_script_with_utf8_file PASSED
tests/test_cmd2.py::test_scripts_add_to_history PASSED
tests/test_cmd2.py::test_run_script_nested_run_scripts PASSED
tests/test_cmd2.py::test_runcmds_plus_hooks PASSED
tests/test_cmd2.py::test_runcmds_plus_hooks_ctrl_c PASSED
tests/test_cmd2.py::test_relative_run_script PASSED
tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[nothingweird] PASSED
tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[has   spaces] PASSED
tests/test_cmd2.py::test_relative_run_script_with_odd_file_names["is_double_quoted"] PASSED
tests/test_cmd2.py::test_relative_run_script_with_odd_file_names['is_single_quoted'] PASSED
tests/test_cmd2.py::test_relative_run_script_requires_an_argument PASSED
tests/test_cmd2.py::test_in_script PASSED
tests/test_cmd2.py::test_system_exit_in_command PASSED
tests/test_cmd2.py::test_passthrough_exception_in_command PASSED
tests/test_cmd2.py::test_output_redirection PASSED
tests/test_cmd2.py::test_output_redirection_to_nonexistent_directory PASSED
tests/test_cmd2.py::test_output_redirection_to_too_long_filename PASSED
tests/test_cmd2.py::test_feedback_to_output_true PASSED
tests/test_cmd2.py::test_feedback_to_output_false PASSED
tests/test_cmd2.py::test_disallow_redirection PASSED
tests/test_cmd2.py::test_pipe_to_shell PASSED
tests/test_cmd2.py::test_pipe_to_shell_and_redirect PASSED
tests/test_cmd2.py::test_pipe_to_shell_error PASSED
tests/test_cmd2.py::test_send_to_paste_buffer SKIPPED (Pyperclip cou...)
tests/test_cmd2.py::test_get_paste_buffer_exception PASSED
tests/test_cmd2.py::test_allow_clipboard_initializer PASSED
tests/test_cmd2.py::test_allow_clipboard PASSED
tests/test_cmd2.py::test_base_timing PASSED
tests/test_cmd2.py::test_base_debug PASSED
tests/test_cmd2.py::test_debug_not_settable PASSED
tests/test_cmd2.py::test_remove_settable_keyerror PASSED
tests/test_cmd2.py::test_edit_file PASSED
tests/test_cmd2.py::test_edit_file_with_odd_file_names[nothingweird] PASSED
tests/test_cmd2.py::test_edit_file_with_odd_file_names[has   spaces] PASSED
tests/test_cmd2.py::test_edit_file_with_odd_file_names["is_double_quoted"] PASSED
tests/test_cmd2.py::test_edit_file_with_odd_file_names['is_single_quoted'] PASSED
tests/test_cmd2.py::test_edit_file_with_spaces PASSED
tests/test_cmd2.py::test_edit_blank PASSED
tests/test_cmd2.py::test_base_py_interactive PASSED
tests/test_cmd2.py::test_base_cmdloop_with_startup_commands PASSED
tests/test_cmd2.py::test_base_cmdloop_without_startup_commands PASSED
tests/test_cmd2.py::test_cmdloop_without_rawinput PASSED
tests/test_cmd2.py::test_stty_sane PASSED
tests/test_cmd2.py::test_sigint_handler PASSED
tests/test_cmd2.py::test_raise_keyboard_interrupt PASSED
tests/test_cmd2.py::test_termination_signal_handler PASSED
tests/test_cmd2.py::test_precmd_hook_success PASSED
tests/test_cmd2.py::test_precmd_hook_failure PASSED
tests/test_cmd2.py::test_ctrl_c_at_prompt PASSED
tests/test_cmd2.py::test_default_to_shell PASSED
tests/test_cmd2.py::test_escaping_prompt PASSED
tests/test_cmd2.py::test_custom_command_help PASSED
tests/test_cmd2.py::test_custom_help_menu PASSED
tests/test_cmd2.py::test_help_undocumented PASSED
tests/test_cmd2.py::test_help_overridden_method PASSED
tests/test_cmd2.py::test_help_multiline_docstring PASSED
tests/test_cmd2.py::test_help_verbose_uses_parser_description PASSED
tests/test_cmd2.py::test_help_cat_base PASSED
tests/test_cmd2.py::test_help_cat_verbose PASSED
tests/test_cmd2.py::test_select_options PASSED
tests/test_cmd2.py::test_select_invalid_option_too_big PASSED
tests/test_cmd2.py::test_select_invalid_option_too_small PASSED
tests/test_cmd2.py::test_select_list_of_strings PASSED
tests/test_cmd2.py::test_select_list_of_tuples PASSED
tests/test_cmd2.py::test_select_uneven_list_of_tuples PASSED
tests/test_cmd2.py::test_select_return_type[1-<class 'int'>] PASSED
tests/test_cmd2.py::test_select_return_type[2-<class 'str'>] PASSED
tests/test_cmd2.py::test_select_return_type[3-<class 'method'>] PASSED
tests/test_cmd2.py::test_select_eof PASSED
tests/test_cmd2.py::test_select_ctrl_c PASSED
tests/test_cmd2.py::test_help_with_no_docstring PASSED
tests/test_cmd2.py::test_multiline_complete_empty_statement_raises_exception PASSED
tests/test_cmd2.py::test_multiline_complete_statement_without_terminator PASSED
tests/test_cmd2.py::test_multiline_complete_statement_with_unclosed_quotes PASSED
tests/test_cmd2.py::test_multiline_input_line_to_statement PASSED
tests/test_cmd2.py::test_multiline_history_no_prior_history PASSED
tests/test_cmd2.py::test_multiline_history_first_line_matches_prev_entry PASSED
tests/test_cmd2.py::test_multiline_history_matches_prev_entry PASSED
tests/test_cmd2.py::test_multiline_history_does_not_match_prev_entry PASSED
tests/test_cmd2.py::test_multiline_history_with_quotes PASSED
tests/test_cmd2.py::test_commandresult_truthy PASSED
tests/test_cmd2.py::test_commandresult_falsy PASSED
tests/test_cmd2.py::test_is_text_file_bad_input PASSED
tests/test_cmd2.py::test_eof PASSED
tests/test_cmd2.py::test_quit PASSED
tests/test_cmd2.py::test_echo PASSED
tests/test_cmd2.py::test_read_input_rawinput_true PASSED
tests/test_cmd2.py::test_read_input_rawinput_false PASSED
tests/test_cmd2.py::test_read_command_line_eof PASSED
tests/test_cmd2.py::test_poutput_string PASSED
tests/test_cmd2.py::test_poutput_zero PASSED
tests/test_cmd2.py::test_poutput_empty_string PASSED
tests/test_cmd2.py::test_poutput_none PASSED
tests/test_cmd2.py::test_ppretty_dict PASSED
tests/test_cmd2.py::test_poutput_ansi_always PASSED
tests/test_cmd2.py::test_poutput_ansi_never PASSED
tests/test_cmd2.py::test_get_alias_completion_items PASSED
tests/test_cmd2.py::test_get_macro_completion_items PASSED
tests/test_cmd2.py::test_get_settable_completion_items PASSED
tests/test_cmd2.py::test_alias_no_subcommand PASSED
tests/test_cmd2.py::test_alias_create PASSED
tests/test_cmd2.py::test_alias_create_with_quoted_tokens PASSED
tests/test_cmd2.py::test_alias_create_invalid_name[""] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name[#] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name[!no_shortcut] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name[">"] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name["no>pe"] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name["no spaces"] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name["nopipe|"] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name["noterm;"] PASSED
tests/test_cmd2.py::test_alias_create_invalid_name[noembedded"quotes] PASSED
tests/test_cmd2.py::test_alias_create_with_command_name PASSED
tests/test_cmd2.py::test_alias_create_with_macro_name PASSED
tests/test_cmd2.py::test_alias_that_resolves_into_comment PASSED
tests/test_cmd2.py::test_alias_list_invalid_alias PASSED
tests/test_cmd2.py::test_alias_delete PASSED
tests/test_cmd2.py::test_alias_delete_all PASSED
tests/test_cmd2.py::test_alias_delete_non_existing PASSED
tests/test_cmd2.py::test_alias_delete_no_name PASSED
tests/test_cmd2.py::test_multiple_aliases PASSED
tests/test_cmd2.py::test_macro_no_subcommand PASSED
tests/test_cmd2.py::test_macro_create PASSED
tests/test_cmd2.py::test_macro_create_with_quoted_tokens PASSED
tests/test_cmd2.py::test_macro_create_invalid_name[""] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name[#] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name[!no_shortcut] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name[">"] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name["no>pe"] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name["no spaces"] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name["nopipe|"] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name["noterm;"] PASSED
tests/test_cmd2.py::test_macro_create_invalid_name[noembedded"quotes] PASSED
tests/test_cmd2.py::test_macro_create_with_command_name PASSED
tests/test_cmd2.py::test_macro_create_with_alias_name PASSED
tests/test_cmd2.py::test_macro_create_with_args PASSED
tests/test_cmd2.py::test_macro_create_with_escaped_args PASSED
tests/test_cmd2.py::test_macro_usage_with_missing_args PASSED
tests/test_cmd2.py::test_macro_usage_with_exta_args PASSED
tests/test_cmd2.py::test_macro_create_with_missing_arg_nums PASSED
tests/test_cmd2.py::test_macro_create_with_invalid_arg_num PASSED
tests/test_cmd2.py::test_macro_create_with_unicode_numbered_arg PASSED
tests/test_cmd2.py::test_macro_create_with_missing_unicode_arg_nums PASSED
tests/test_cmd2.py::test_macro_that_resolves_into_comment PASSED
tests/test_cmd2.py::test_macro_list_invalid_macro PASSED
tests/test_cmd2.py::test_macro_delete PASSED
tests/test_cmd2.py::test_macro_delete_all PASSED
tests/test_cmd2.py::test_macro_delete_non_existing PASSED
tests/test_cmd2.py::test_macro_delete_no_name PASSED
tests/test_cmd2.py::test_multiple_macros PASSED
tests/test_cmd2.py::test_nonexistent_macro PASSED
tests/test_cmd2.py::test_perror_style PASSED
tests/test_cmd2.py::test_perror_no_style PASSED
tests/test_cmd2.py::test_pexcept_style PASSED
tests/test_cmd2.py::test_pexcept_no_style PASSED
tests/test_cmd2.py::test_pexcept_not_exception PASSED
tests/test_cmd2.py::test_ppaged PASSED
tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting PASSED
tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting_if_always PASSED
tests/test_cmd2.py::test_parseline_empty PASSED
tests/test_cmd2.py::test_parseline_quoted PASSED
tests/test_cmd2.py::test_onecmd_raw_str_continue PASSED
tests/test_cmd2.py::test_onecmd_raw_str_quit PASSED
tests/test_cmd2.py::test_onecmd_add_to_history PASSED
tests/test_cmd2.py::test_get_all_commands PASSED
tests/test_cmd2.py::test_get_help_topics PASSED
tests/test_cmd2.py::test_get_help_topics_hidden PASSED
tests/test_cmd2.py::test_exit_code_default PASSED
tests/test_cmd2.py::test_exit_code_nonzero PASSED
tests/test_cmd2.py::test_ansi_pouterr_always_tty PASSED
tests/test_cmd2.py::test_ansi_pouterr_always_notty PASSED
tests/test_cmd2.py::test_ansi_terminal_tty PASSED
tests/test_cmd2.py::test_ansi_terminal_notty PASSED
tests/test_cmd2.py::test_ansi_never_tty PASSED
tests/test_cmd2.py::test_ansi_never_notty PASSED
tests/test_cmd2.py::test_disable_and_enable_category PASSED
tests/test_cmd2.py::test_enable_enabled_command PASSED
tests/test_cmd2.py::test_disable_fake_command PASSED
tests/test_cmd2.py::test_disable_command_twice PASSED
tests/test_cmd2.py::test_disabled_command_not_in_history PASSED
tests/test_cmd2.py::test_disabled_message_command_name PASSED
tests/test_cmd2.py::test_startup_script[True] PASSED
tests/test_cmd2.py::test_startup_script[False] PASSED
tests/test_cmd2.py::test_startup_script_with_odd_file_names[nothingweird] PASSED
tests/test_cmd2.py::test_startup_script_with_odd_file_names[has   spaces] PASSED
tests/test_cmd2.py::test_startup_script_with_odd_file_names["is_double_quoted"] PASSED
tests/test_cmd2.py::test_startup_script_with_odd_file_names['is_single_quoted'] PASSED
tests/test_cmd2.py::test_transcripts_at_init PASSED
tests/test_cmd2.py::test_columnize_too_wide PASSED
tests/test_cmd2.py::test_command_parser_retrieval PASSED
tests/test_cmd2.py::test_command_synonym_parser PASSED
tests/test_completion.py::test_cmd2_command_completion_single PASSED
tests/test_completion.py::test_complete_command_single PASSED
tests/test_completion.py::test_complete_empty_arg PASSED
tests/test_completion.py::test_complete_bogus_command PASSED
tests/test_completion.py::test_complete_exception PASSED
tests/test_completion.py::test_complete_macro PASSED
tests/test_completion.py::test_default_sort_key PASSED
tests/test_completion.py::test_cmd2_command_completion_multiple PASSED
tests/test_completion.py::test_cmd2_command_completion_nomatch PASSED
tests/test_completion.py::test_cmd2_help_completion_single PASSED
tests/test_completion.py::test_cmd2_help_completion_multiple PASSED
tests/test_completion.py::test_cmd2_help_completion_nomatch PASSED
tests/test_completion.py::test_set_allow_style_completion PASSED
tests/test_completion.py::test_set_bool_completion PASSED
tests/test_completion.py::test_shell_command_completion_shortcut PASSED
tests/test_completion.py::test_shell_command_completion_doesnt_match_wildcards PASSED
tests/test_completion.py::test_shell_command_completion_multiple PASSED
tests/test_completion.py::test_shell_command_completion_nomatch PASSED
tests/test_completion.py::test_shell_command_completion_doesnt_complete_when_just_shell PASSED
tests/test_completion.py::test_shell_command_completion_does_path_completion_when_after_command PASSED
tests/test_completion.py::test_shell_command_complete_in_path PASSED
tests/test_completion.py::test_path_completion_single_end PASSED
tests/test_completion.py::test_path_completion_multiple PASSED
tests/test_completion.py::test_path_completion_nomatch PASSED
tests/test_completion.py::test_default_to_shell_completion PASSED
tests/test_completion.py::test_path_completion_no_text PASSED
tests/test_completion.py::test_path_completion_no_path PASSED
tests/test_completion.py::test_path_completion_cwd_is_root_dir PASSED
tests/test_completion.py::test_path_completion_doesnt_match_wildcards PASSED
tests/test_completion.py::test_path_completion_complete_user PASSED
tests/test_completion.py::test_path_completion_user_path_expansion PASSED
tests/test_completion.py::test_path_completion_directories_only PASSED
tests/test_completion.py::test_basic_completion_single PASSED
tests/test_completion.py::test_basic_completion_multiple PASSED
tests/test_completion.py::test_basic_completion_nomatch PASSED
tests/test_completion.py::test_delimiter_completion PASSED
tests/test_completion.py::test_flag_based_completion_single PASSED
tests/test_completion.py::test_flag_based_completion_multiple PASSED
tests/test_completion.py::test_flag_based_completion_nomatch PASSED
tests/test_completion.py::test_flag_based_default_completer PASSED
tests/test_completion.py::test_flag_based_callable_completer PASSED
tests/test_completion.py::test_index_based_completion_single PASSED
tests/test_completion.py::test_index_based_completion_multiple PASSED
tests/test_completion.py::test_index_based_completion_nomatch PASSED
tests/test_completion.py::test_index_based_default_completer PASSED
tests/test_completion.py::test_index_based_callable_completer PASSED
tests/test_completion.py::test_tokens_for_completion_quoted PASSED
tests/test_completion.py::test_tokens_for_completion_unclosed_quote PASSED
tests/test_completion.py::test_tokens_for_completion_punctuation PASSED
tests/test_completion.py::test_tokens_for_completion_quoted_punctuation PASSED
tests/test_completion.py::test_add_opening_quote_basic_no_text PASSED
tests/test_completion.py::test_add_opening_quote_basic_nothing_added PASSED
tests/test_completion.py::test_add_opening_quote_basic_quote_added PASSED
tests/test_completion.py::test_add_opening_quote_basic_single_quote_added PASSED
tests/test_completion.py::test_add_opening_quote_basic_text_is_common_prefix PASSED
tests/test_completion.py::test_add_opening_quote_delimited_no_text PASSED
tests/test_completion.py::test_add_opening_quote_delimited_nothing_added PASSED
tests/test_completion.py::test_add_opening_quote_delimited_quote_added PASSED
tests/test_completion.py::test_add_opening_quote_delimited_text_is_common_prefix PASSED
tests/test_completion.py::test_add_opening_quote_delimited_space_in_prefix PASSED
tests/test_completion.py::test_no_completer PASSED
tests/test_completion.py::test_wordbreak_in_command PASSED
tests/test_completion.py::test_complete_multiline_on_single_line PASSED
tests/test_completion.py::test_complete_multiline_on_multiple_lines PASSED
tests/test_completion.py::test_redirect_complete[fake-RedirCompType.DEFAULT] PASSED
tests/test_completion.py::test_redirect_complete[fake arg-RedirCompType.DEFAULT] PASSED
tests/test_completion.py::test_redirect_complete[fake |-RedirCompType.SHELL_CMD] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep arg-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep >-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep > >-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep > file-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep > file >-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep > file |-RedirCompType.SHELL_CMD] PASSED
tests/test_completion.py::test_redirect_complete[fake | grep > file | grep-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake | |-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake | >-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake >-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake >>-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake > >-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake > |-RedirCompType.SHELL_CMD] PASSED
tests/test_completion.py::test_redirect_complete[fake >> file |-RedirCompType.SHELL_CMD] PASSED
tests/test_completion.py::test_redirect_complete[fake >> file | grep-RedirCompType.PATH] PASSED
tests/test_completion.py::test_redirect_complete[fake > file-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake > file >-RedirCompType.NONE] PASSED
tests/test_completion.py::test_redirect_complete[fake > file >>-RedirCompType.NONE] PASSED
tests/test_completion.py::test_complete_set_value PASSED
tests/test_completion.py::test_complete_set_value_invalid_settable PASSED
tests/test_completion.py::test_cmd2_subcommand_completion_single_end PASSED
tests/test_completion.py::test_cmd2_subcommand_completion_multiple PASSED
tests/test_completion.py::test_cmd2_subcommand_completion_nomatch PASSED
tests/test_completion.py::test_help_subcommand_completion_single PASSED
tests/test_completion.py::test_help_subcommand_completion_multiple PASSED
tests/test_completion.py::test_help_subcommand_completion_nomatch PASSED
tests/test_completion.py::test_subcommand_tab_completion PASSED
tests/test_completion.py::test_subcommand_tab_completion_with_no_completer PASSED
tests/test_completion.py::test_subcommand_tab_completion_space_in_text PASSED
tests/test_completion.py::test_subcmd_with_unknown_completion_single_end PASSED
tests/test_completion.py::test_subcmd_with_unknown_completion_multiple PASSED
tests/test_completion.py::test_subcmd_with_unknown_completion_nomatch PASSED
tests/test_completion.py::test_help_subcommand_completion_single_scu PASSED
tests/test_completion.py::test_help_subcommand_completion_multiple_scu PASSED
tests/test_completion.py::test_help_subcommand_completion_with_flags_before_command PASSED
tests/test_completion.py::test_complete_help_subcommands_with_blank_command PASSED
tests/test_completion.py::test_help_subcommand_completion_nomatch_scu PASSED
tests/test_completion.py::test_subcommand_tab_completion_scu PASSED
tests/test_completion.py::test_subcommand_tab_completion_with_no_completer_scu PASSED
tests/test_completion.py::test_subcommand_tab_completion_space_in_text_scu PASSED
tests/test_future_annotations.py::test_hooks_work_with_future_annotations PASSED
tests/test_history.py::test_readline_remove_history_item PASSED
tests/test_history.py::test_history_class_span PASSED
tests/test_history.py::test_persisted_history_span PASSED
tests/test_history.py::test_history_class_get PASSED
tests/test_history.py::test_history_str_search PASSED
tests/test_history.py::test_history_regex_search PASSED
tests/test_history.py::test_history_max_length_zero PASSED
tests/test_history.py::test_history_max_length_negative PASSED
tests/test_history.py::test_history_max_length PASSED
tests/test_history.py::test_history_to_json PASSED
tests/test_history.py::test_history_from_json PASSED
tests/test_history.py::test_multiline_histitem PASSED
tests/test_history.py::test_multiline_with_quotes_histitem PASSED
tests/test_history.py::test_multiline_histitem_verbose PASSED
tests/test_history.py::test_single_line_format_blank PASSED
tests/test_history.py::test_history_item_instantiate PASSED
tests/test_history.py::test_history_item_properties PASSED
tests/test_history.py::test_base_history PASSED
tests/test_history.py::test_history_script_format PASSED
tests/test_history.py::test_history_with_string_argument PASSED
tests/test_history.py::test_history_expanded_with_string_argument PASSED
tests/test_history.py::test_history_expanded_with_regex_argument PASSED
tests/test_history.py::test_history_with_integer_argument PASSED
tests/test_history.py::test_history_with_integer_span PASSED
tests/test_history.py::test_history_with_span_start PASSED
tests/test_history.py::test_history_with_span_end PASSED
tests/test_history.py::test_history_with_span_index_error PASSED
tests/test_history.py::test_history_output_file PASSED
tests/test_history.py::test_history_bad_output_file PASSED
tests/test_history.py::test_history_edit PASSED
tests/test_history.py::test_history_run_all_commands PASSED
tests/test_history.py::test_history_run_one_command PASSED
tests/test_history.py::test_history_clear PASSED
tests/test_history.py::test_history_verbose_with_other_options PASSED
tests/test_history.py::test_history_verbose PASSED
tests/test_history.py::test_history_script_with_invalid_options PASSED
tests/test_history.py::test_history_script PASSED
tests/test_history.py::test_history_expanded_with_invalid_options PASSED
tests/test_history.py::test_history_expanded PASSED
tests/test_history.py::test_history_script_expanded PASSED
tests/test_history.py::test_base_help_history PASSED
tests/test_history.py::test_exclude_from_history PASSED
tests/test_history.py::test_history_file_is_directory PASSED
tests/test_history.py::test_history_can_create_directory PASSED
tests/test_history.py::test_history_cannot_create_directory PASSED
tests/test_history.py::test_history_file_permission_error PASSED
tests/test_history.py::test_history_file_bad_compression PASSED
tests/test_history.py::test_history_file_bad_json PASSED
tests/test_history.py::test_history_populates_readline PASSED
tests/test_history.py::test_persist_history_ensure_no_error_if_no_histfile PASSED
tests/test_history.py::test_persist_history_permission_error PASSED
tests/test_parsing.py::test_parse_empty_string PASSED
tests/test_parsing.py::test_parse_empty_string_default PASSED
tests/test_parsing.py::test_tokenize_default[command-tokens0] PASSED
tests/test_parsing.py::test_tokenize_default[#comment-tokens1] PASSED
tests/test_parsing.py::test_tokenize_default[not # a comment-tokens2] PASSED
tests/test_parsing.py::test_tokenize_default[termbare ; > /tmp/output-tokens3] PASSED
tests/test_parsing.py::test_tokenize_default[termbare; > /tmp/output-tokens4] PASSED
tests/test_parsing.py::test_tokenize_default[termbare & > /tmp/output-tokens5] PASSED
tests/test_parsing.py::test_tokenize_default[termbare& > /tmp/output-tokens6] PASSED
tests/test_parsing.py::test_tokenize_default[help|less-tokens7] PASSED
tests/test_parsing.py::test_tokenize[command-tokens0] PASSED
tests/test_parsing.py::test_tokenize[# comment-tokens1] PASSED
tests/test_parsing.py::test_tokenize[not # a comment-tokens2] PASSED
tests/test_parsing.py::test_tokenize[42 arg1 arg2-tokens3] PASSED
tests/test_parsing.py::test_tokenize[l-tokens4] PASSED
tests/test_parsing.py::test_tokenize[termbare ; > /tmp/output-tokens5] PASSED
tests/test_parsing.py::test_tokenize[termbare; > /tmp/output-tokens6] PASSED
tests/test_parsing.py::test_tokenize[termbare & > /tmp/output-tokens7] PASSED
tests/test_parsing.py::test_tokenize[termbare& > /tmp/output-tokens8] PASSED
tests/test_parsing.py::test_tokenize[help|less-tokens9] PASSED
tests/test_parsing.py::test_tokenize[l|less-tokens10] PASSED
tests/test_parsing.py::test_tokenize_unclosed_quotes PASSED
tests/test_parsing.py::test_command_and_args[tokens0--] PASSED
tests/test_parsing.py::test_command_and_args[tokens1-command-] PASSED
tests/test_parsing.py::test_command_and_args[tokens2-command-arg1 arg2] PASSED
tests/test_parsing.py::test_parse_single_word[plainword] PASSED
tests/test_parsing.py::test_parse_single_word["one word"] PASSED
tests/test_parsing.py::test_parse_single_word['one word'] PASSED
tests/test_parsing.py::test_parse_word_plus_terminator[termbare;-;] PASSED
tests/test_parsing.py::test_parse_word_plus_terminator[termbare ;-;] PASSED
tests/test_parsing.py::test_parse_word_plus_terminator[termbare&-&] PASSED
tests/test_parsing.py::test_parse_word_plus_terminator[termbare &-&] PASSED
tests/test_parsing.py::test_parse_suffix_after_terminator[termbare;  suffx-;] PASSED
tests/test_parsing.py::test_parse_suffix_after_terminator[termbare ;suffx-;] PASSED
tests/test_parsing.py::test_parse_suffix_after_terminator[termbare&  suffx-&] PASSED
tests/test_parsing.py::test_parse_suffix_after_terminator[termbare &suffx-&] PASSED
tests/test_parsing.py::test_parse_command_with_args PASSED
tests/test_parsing.py::test_parse_command_with_quoted_args PASSED
tests/test_parsing.py::test_parse_command_with_args_terminator_and_suffix PASSED
tests/test_parsing.py::test_parse_comment PASSED
tests/test_parsing.py::test_parse_embedded_comment_char PASSED
tests/test_parsing.py::test_parse_simple_pipe[simple | piped] PASSED
tests/test_parsing.py::test_parse_simple_pipe[simple|piped] PASSED
tests/test_parsing.py::test_parse_double_pipe_is_not_a_pipe PASSED
tests/test_parsing.py::test_parse_complex_pipe PASSED
tests/test_parsing.py::test_parse_redirect[help > out.txt->] PASSED
tests/test_parsing.py::test_parse_redirect[help>out.txt->] PASSED
tests/test_parsing.py::test_parse_redirect[help >> out.txt->>] PASSED
tests/test_parsing.py::test_parse_redirect[help>>out.txt->>] PASSED
tests/test_parsing.py::test_parse_redirect_with_args[afile.txt] PASSED
tests/test_parsing.py::test_parse_redirect_with_args[python-cmd2/afile.txt] PASSED
tests/test_parsing.py::test_parse_redirect_append PASSED
tests/test_parsing.py::test_parse_pipe_then_redirect PASSED
tests/test_parsing.py::test_parse_multiple_pipes PASSED
tests/test_parsing.py::test_redirect_then_pipe PASSED
tests/test_parsing.py::test_append_then_pipe PASSED
tests/test_parsing.py::test_append_then_redirect PASSED
tests/test_parsing.py::test_redirect_then_append PASSED
tests/test_parsing.py::test_redirect_to_quoted_string PASSED
tests/test_parsing.py::test_redirect_to_single_quoted_string PASSED
tests/test_parsing.py::test_redirect_to_empty_quoted_string PASSED
tests/test_parsing.py::test_redirect_to_empty_single_quoted_string PASSED
tests/test_parsing.py::test_parse_output_to_paste_buffer PASSED
tests/test_parsing.py::test_parse_redirect_inside_terminator PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;-;] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside ;-;] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;;;-;] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;; ;;-;] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&-&] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &;-&] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&&;-&] PASSED
tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &; &;-&] PASSED
tests/test_parsing.py::test_parse_unfinished_multiliine_command PASSED
tests/test_parsing.py::test_parse_basic_multiline_command PASSED
tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;-;] PASSED
tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;;;-;] PASSED
tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;; ;;-;] PASSED
tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside &-&] PASSED
tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside & &-&] PASSED
tests/test_parsing.py::test_parse_multiline_terminated_by_empty_line PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";-;] PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";;;-;] PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";; ;;-;] PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" &-&] PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" & &-&] PASSED
tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline"\n\n-\n] PASSED
tests/test_parsing.py::test_parse_multiline_ignores_terminators_in_quotes PASSED
tests/test_parsing.py::test_parse_command_with_unicode_args PASSED
tests/test_parsing.py::test_parse_unicode_command PASSED
tests/test_parsing.py::test_parse_redirect_to_unicode_filename PASSED
tests/test_parsing.py::test_parse_unclosed_quotes PASSED
tests/test_parsing.py::test_empty_statement_raises_exception PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias-help-] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias mycommand-help-mycommand] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42-theanswer-] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42 arg1 arg2-theanswer-arg1 arg2] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls-shell-ls] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls -al /tmp-shell-ls -al /tmp] PASSED
tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[l-shell-ls -al] PASSED
tests/test_parsing.py::test_parse_alias_on_multiline_command PASSED
tests/test_parsing.py::test_parse_alias_redirection[helpalias > out.txt->] PASSED
tests/test_parsing.py::test_parse_alias_redirection[helpalias>out.txt->] PASSED
tests/test_parsing.py::test_parse_alias_redirection[helpalias >> out.txt->>] PASSED
tests/test_parsing.py::test_parse_alias_redirection[helpalias>>out.txt->>] PASSED
tests/test_parsing.py::test_parse_alias_pipe[helpalias | less] PASSED
tests/test_parsing.py::test_parse_alias_pipe[helpalias|less] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;;] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;; ;] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ; ;] PASSED
tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;; ;] PASSED
tests/test_parsing.py::test_parse_command_only_command_and_args PASSED
tests/test_parsing.py::test_parse_command_only_strips_line PASSED
tests/test_parsing.py::test_parse_command_only_expands_alias PASSED
tests/test_parsing.py::test_parse_command_only_expands_shortcuts PASSED
tests/test_parsing.py::test_parse_command_only_quoted_args PASSED
tests/test_parsing.py::test_parse_command_only_unclosed_quote PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[helpalias > out.txt-> out.txt] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>out.txt->out.txt] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[helpalias >> out.txt->> out.txt] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>>out.txt->>out.txt] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[help|less-|less] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[helpalias;-;] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[help ;;-;;] PASSED
tests/test_parsing.py::test_parse_command_only_specialchars[help; ;;-; ;;] PASSED
tests/test_parsing.py::test_parse_command_only_empty[] PASSED
tests/test_parsing.py::test_parse_command_only_empty[;] PASSED
tests/test_parsing.py::test_parse_command_only_empty[;;] PASSED
tests/test_parsing.py::test_parse_command_only_empty[;; ;] PASSED
tests/test_parsing.py::test_parse_command_only_empty[&] PASSED
tests/test_parsing.py::test_parse_command_only_empty[& &] PASSED
tests/test_parsing.py::test_parse_command_only_empty[ && &] PASSED
tests/test_parsing.py::test_parse_command_only_empty[>] PASSED
tests/test_parsing.py::test_parse_command_only_empty['] PASSED
tests/test_parsing.py::test_parse_command_only_empty["] PASSED
tests/test_parsing.py::test_parse_command_only_empty[|] PASSED
tests/test_parsing.py::test_parse_command_only_multiline PASSED
tests/test_parsing.py::test_statement_initialization PASSED
tests/test_parsing.py::test_statement_is_immutable PASSED
tests/test_parsing.py::test_statement_as_dict PASSED
tests/test_parsing.py::test_is_valid_command_invalid PASSED
tests/test_parsing.py::test_is_valid_command_valid PASSED
tests/test_parsing.py::test_macro_normal_arg_pattern PASSED
tests/test_parsing.py::test_macro_escaped_arg_pattern PASSED
tests/test_plugin.py::test_register_preloop_hook_too_many_parameters PASSED
tests/test_plugin.py::test_register_preloop_hook_with_return_annotation PASSED
tests/test_plugin.py::test_preloop_hook PASSED
tests/test_plugin.py::test_preloop_hooks PASSED
tests/test_plugin.py::test_register_postloop_hook_too_many_parameters PASSED
tests/test_plugin.py::test_register_postloop_hook_with_wrong_return_annotation PASSED
tests/test_plugin.py::test_postloop_hook PASSED
tests/test_plugin.py::test_postloop_hooks PASSED
tests/test_plugin.py::test_preparse PASSED
tests/test_plugin.py::test_postparsing_hook_too_many_parameters PASSED
tests/test_plugin.py::test_postparsing_hook_undeclared_parameter_annotation PASSED
tests/test_plugin.py::test_postparsing_hook_wrong_parameter_annotation PASSED
tests/test_plugin.py::test_postparsing_hook_undeclared_return_annotation PASSED
tests/test_plugin.py::test_postparsing_hook_wrong_return_annotation PASSED
tests/test_plugin.py::test_postparsing_hook PASSED
tests/test_plugin.py::test_postparsing_hook_stop_first PASSED
tests/test_plugin.py::test_postparsing_hook_stop_second PASSED
tests/test_plugin.py::test_postparsing_hook_emptystatement_first PASSED
tests/test_plugin.py::test_postparsing_hook_emptystatement_second PASSED
tests/test_plugin.py::test_postparsing_hook_exception PASSED
tests/test_plugin.py::test_register_precmd_hook_parameter_count PASSED
tests/test_plugin.py::test_register_precmd_hook_no_parameter_annotation PASSED
tests/test_plugin.py::test_register_precmd_hook_wrong_parameter_annotation PASSED
tests/test_plugin.py::test_register_precmd_hook_no_return_annotation PASSED
tests/test_plugin.py::test_register_precmd_hook_wrong_return_annotation PASSED
tests/test_plugin.py::test_precmd_hook PASSED
tests/test_plugin.py::test_precmd_hook_emptystatement_first PASSED
tests/test_plugin.py::test_precmd_hook_emptystatement_second PASSED
tests/test_plugin.py::test_register_postcmd_hook_parameter_count PASSED
tests/test_plugin.py::test_register_postcmd_hook_no_parameter_annotation PASSED
tests/test_plugin.py::test_register_postcmd_hook_wrong_parameter_annotation PASSED
tests/test_plugin.py::test_register_postcmd_hook_no_return_annotation PASSED
tests/test_plugin.py::test_register_postcmd_hook_wrong_return_annotation PASSED
tests/test_plugin.py::test_postcmd PASSED
tests/test_plugin.py::test_postcmd_exception_first PASSED
tests/test_plugin.py::test_postcmd_exception_second PASSED
tests/test_plugin.py::test_register_cmdfinalization_hook_parameter_count PASSED
tests/test_plugin.py::test_register_cmdfinalization_hook_no_parameter_annotation PASSED
tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_parameter_annotation PASSED
tests/test_plugin.py::test_register_cmdfinalization_hook_no_return_annotation PASSED
tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_return_annotation PASSED
tests/test_plugin.py::test_cmdfinalization PASSED
tests/test_plugin.py::test_cmdfinalization_stop_first PASSED
tests/test_plugin.py::test_cmdfinalization_stop_second PASSED
tests/test_plugin.py::test_cmdfinalization_hook_exception PASSED
tests/test_plugin.py::test_cmdfinalization_hook_system_exit PASSED
tests/test_plugin.py::test_cmdfinalization_hook_keyboard_interrupt PASSED
tests/test_plugin.py::test_cmdfinalization_hook_passthrough_exception PASSED
tests/test_plugin.py::test_skip_postcmd_hooks PASSED
tests/test_plugin.py::test_cmd2_argparse_exception PASSED
tests/test_run_pyscript.py::test_run_pyscript PASSED
tests/test_run_pyscript.py::test_run_pyscript_recursive_not_allowed PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_nonexist_file PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_non_python_file PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[nothingweird] PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[has   spaces] PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names["is_double_quoted"] PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names['is_single_quoted'] PASSED
tests/test_run_pyscript.py::test_run_pyscript_with_exception PASSED
tests/test_run_pyscript.py::test_run_pyscript_requires_an_argument PASSED
tests/test_run_pyscript.py::test_run_pyscript_help PASSED
tests/test_run_pyscript.py::test_scripts_add_to_history PASSED
tests/test_run_pyscript.py::test_run_pyscript_dir PASSED
tests/test_run_pyscript.py::test_run_pyscript_stdout_capture PASSED
tests/test_run_pyscript.py::test_run_pyscript_stop PASSED
tests/test_run_pyscript.py::test_run_pyscript_environment PASSED
tests/test_run_pyscript.py::test_run_pyscript_self_in_py PASSED
tests/test_run_pyscript.py::test_run_pyscript_py_locals PASSED
tests/test_run_pyscript.py::test_run_pyscript_app_echo PASSED
tests/test_table_creator.py::test_column_creation PASSED
tests/test_table_creator.py::test_column_alignment PASSED
tests/test_table_creator.py::test_blank_last_line PASSED
tests/test_table_creator.py::test_wrap_text PASSED
tests/test_table_creator.py::test_wrap_text_max_lines PASSED
tests/test_table_creator.py::test_wrap_long_word PASSED
tests/test_table_creator.py::test_wrap_long_word_max_data_lines PASSED
tests/test_table_creator.py::test_wrap_long_char_wider_than_max_width PASSED
tests/test_table_creator.py::test_generate_row_exceptions PASSED
tests/test_table_creator.py::test_tabs PASSED
tests/test_table_creator.py::test_simple_table_creation PASSED
tests/test_table_creator.py::test_simple_table_width PASSED
tests/test_table_creator.py::test_simple_generate_data_row_exceptions PASSED
tests/test_table_creator.py::test_bordered_table_creation PASSED
tests/test_table_creator.py::test_bordered_table_width PASSED
tests/test_table_creator.py::test_bordered_generate_data_row_exceptions PASSED
tests/test_table_creator.py::test_alternating_table_creation PASSED
tests/test_transcript.py::test_commands_at_invocation PASSED
tests/test_transcript.py::test_transcript[bol_eol.txt-False] PASSED
tests/test_transcript.py::test_transcript[characterclass.txt-False] PASSED
tests/test_transcript.py::test_transcript[dotstar.txt-False] PASSED
tests/test_transcript.py::test_transcript[extension_notation.txt-False] PASSED
tests/test_transcript.py::test_transcript[from_cmdloop.txt-True] PASSED
tests/test_transcript.py::test_transcript[multiline_no_regex.txt-False] PASSED
tests/test_transcript.py::test_transcript[multiline_regex.txt-False] PASSED
tests/test_transcript.py::test_transcript[no_output.txt-False] PASSED
tests/test_transcript.py::test_transcript[no_output_last.txt-False] PASSED
tests/test_transcript.py::test_transcript[regex_set.txt-False] PASSED
tests/test_transcript.py::test_transcript[singleslash.txt-False] PASSED
tests/test_transcript.py::test_transcript[slashes_escaped.txt-False] PASSED
tests/test_transcript.py::test_transcript[slashslash.txt-False] PASSED
tests/test_transcript.py::test_transcript[spaces.txt-False] PASSED
tests/test_transcript.py::test_transcript[word_boundaries.txt-False] PASSED
tests/test_transcript.py::test_history_transcript PASSED
tests/test_transcript.py::test_history_transcript_bad_path PASSED
tests/test_transcript.py::test_run_script_record_transcript PASSED
tests/test_transcript.py::test_generate_transcript_stop PASSED
tests/test_transcript.py::test_parse_transcript_expected[text with no slashes-text\\ with\\ no\\ slashes] PASSED
tests/test_transcript.py::test_parse_transcript_expected[specials .*-specials\\ \\.\\*] PASSED
tests/test_transcript.py::test_parse_transcript_expected[use 2/3 cup-use\\ 2/3\\ cup] PASSED
tests/test_transcript.py::test_parse_transcript_expected[/tmp is nice-/tmp\\ is\\ nice] PASSED
tests/test_transcript.py::test_parse_transcript_expected[slash at end/-slash\\ at\\ end/] PASSED
tests/test_transcript.py::test_parse_transcript_expected[not this slash\\/ or this one\\/-not\\ this\\ slash/\\ or\\ this\\ one/] PASSED
tests/test_transcript.py::test_parse_transcript_expected[/.*/-.*] PASSED
tests/test_transcript.py::test_parse_transcript_expected[specials ^ and + /[0-9]+/-specials\\ \\^\\ and\\ \\+\\ [0-9]+] PASSED
tests/test_transcript.py::test_parse_transcript_expected[/a{6}/ but not \\/a{6} with /.*?/ more-a{6}\\ but\\ not\\ /a\\{6\\}\\ with\\ .*?\\ more] PASSED
tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\|?/, not \\/-not\\ /,\\ use\\ \\|?,\\ not\\ /] PASSED
tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\/?/, not \\/-not\\ /,\\ use\\ /?,\\ not\\ /] PASSED
tests/test_transcript.py::test_parse_transcript_expected[lots /\\/?/ more /.*/ stuff-lots\\ /?\\ more\\ .*\\ stuff] PASSED
tests/test_transcript.py::test_transcript_failure PASSED
tests/test_transcript.py::test_transcript_no_file PASSED
tests/test_utils.py::test_strip_quotes_no_quotes PASSED
tests/test_utils.py::test_strip_quotes_with_quotes PASSED
tests/test_utils.py::test_remove_duplicates_no_duplicates PASSED
tests/test_utils.py::test_remove_duplicates_with_duplicates PASSED
tests/test_utils.py::test_unicode_normalization PASSED
tests/test_utils.py::test_unicode_casefold PASSED
tests/test_utils.py::test_alphabetical_sort PASSED
tests/test_utils.py::test_try_int_or_force_to_lower_case PASSED
tests/test_utils.py::test_natural_keys PASSED
tests/test_utils.py::test_natural_sort PASSED
tests/test_utils.py::test_is_quoted_short PASSED
tests/test_utils.py::test_is_quoted_yes PASSED
tests/test_utils.py::test_is_quoted_no PASSED
tests/test_utils.py::test_quote_string PASSED
tests/test_utils.py::test_quote_string_if_needed_yes PASSED
tests/test_utils.py::test_quote_string_if_needed_no PASSED
tests/test_utils.py::test_stdsim_write_str PASSED
tests/test_utils.py::test_stdsim_write_bytes PASSED
tests/test_utils.py::test_stdsim_buffer_write_bytes PASSED
tests/test_utils.py::test_stdsim_buffer_write_str PASSED
tests/test_utils.py::test_stdsim_read PASSED
tests/test_utils.py::test_stdsim_read_bytes PASSED
tests/test_utils.py::test_stdsim_clear PASSED
tests/test_utils.py::test_stdsim_getattr_exist PASSED
tests/test_utils.py::test_stdsim_getattr_noexist PASSED
tests/test_utils.py::test_stdsim_pause_storage PASSED
tests/test_utils.py::test_stdsim_line_buffering PASSED
tests/test_utils.py::test_proc_reader_send_sigint PASSED
tests/test_utils.py::test_proc_reader_terminate PASSED
tests/test_utils.py::test_context_flag_bool PASSED
tests/test_utils.py::test_context_flag_exit_err PASSED
tests/test_utils.py::test_remove_overridden_styles PASSED
tests/test_utils.py::test_truncate_line PASSED
tests/test_utils.py::test_truncate_line_already_fits PASSED
tests/test_utils.py::test_truncate_line_with_newline PASSED
tests/test_utils.py::test_truncate_line_width_is_too_small PASSED
tests/test_utils.py::test_truncate_line_wide_text PASSED
tests/test_utils.py::test_truncate_line_split_wide_text PASSED
tests/test_utils.py::test_truncate_line_tabs PASSED
tests/test_utils.py::test_truncate_with_style PASSED
tests/test_utils.py::test_align_text_fill_char_is_tab PASSED
tests/test_utils.py::test_align_text_with_style PASSED
tests/test_utils.py::test_align_text_width_is_too_small PASSED
tests/test_utils.py::test_align_text_fill_char_is_too_long PASSED
tests/test_utils.py::test_align_text_fill_char_is_newline PASSED
tests/test_utils.py::test_align_text_has_tabs PASSED
tests/test_utils.py::test_align_text_blank PASSED
tests/test_utils.py::test_align_text_wider_than_width PASSED
tests/test_utils.py::test_align_text_wider_than_width_truncate PASSED
tests/test_utils.py::test_align_text_wider_than_width_truncate_add_fill PASSED
tests/test_utils.py::test_align_text_has_unprintable PASSED
tests/test_utils.py::test_align_text_term_width PASSED
tests/test_utils.py::test_align_left PASSED
tests/test_utils.py::test_align_left_multiline PASSED
tests/test_utils.py::test_align_left_wide_text PASSED
tests/test_utils.py::test_align_left_wide_fill PASSED
tests/test_utils.py::test_align_left_wide_fill_needs_padding PASSED
tests/test_utils.py::test_align_center PASSED
tests/test_utils.py::test_align_center_multiline PASSED
tests/test_utils.py::test_align_center_wide_text PASSED
tests/test_utils.py::test_align_center_wide_fill PASSED
tests/test_utils.py::test_align_center_wide_fill_needs_right_padding PASSED
tests/test_utils.py::test_align_center_wide_fill_needs_left_and_right_padding PASSED
tests/test_utils.py::test_align_right PASSED
tests/test_utils.py::test_align_right_multiline PASSED
tests/test_utils.py::test_align_right_wide_text PASSED
tests/test_utils.py::test_align_right_wide_fill PASSED
tests/test_utils.py::test_align_right_wide_fill_needs_padding PASSED
tests/test_utils.py::test_to_bool_str_true PASSED
tests/test_utils.py::test_to_bool_str_false PASSED
tests/test_utils.py::test_to_bool_str_invalid PASSED
tests/test_utils.py::test_to_bool_bool PASSED
tests/test_utils.py::test_to_bool_int PASSED
tests/test_utils.py::test_to_bool_float PASSED
tests/test_utils.py::test_find_editor_specified PASSED
tests/test_utils.py::test_find_editor_not_specified PASSED
tests/test_utils.py::test_similarity PASSED
tests/test_utils.py::test_similarity_without_good_canididates PASSED
tests/test_utils.py::test_similarity_overwrite_function PASSED
tests/test_utils.py::test_get_types_invalid_input PASSED
tests/test_utils.py::test_get_types_empty PASSED
tests/test_utils.py::test_get_types_non_empty PASSED
tests/test_utils.py::test_get_types_method PASSED
tests/test_utils_defining_class.py::test_get_defining_class PASSED

================================ tests coverage ================================
_______________ coverage: platform sunos5, python 3.9.23-final-0 _______________

Name                         Stmts   Miss  Cover
------------------------------------------------
cmd2/__init__.py                23      0   100%
cmd2/ansi.py                   716      0   100%
cmd2/argparse_completer.py     332      1    99%
cmd2/argparse_custom.py        387     33    91%
cmd2/clipboard.py                6      1    83%
cmd2/cmd2.py                  2373    247    90%
cmd2/command_definition.py      61     38    38%
cmd2/constants.py               26      0   100%
cmd2/decorators.py             124      2    98%
cmd2/exceptions.py              16      0   100%
cmd2/history.py                141      0   100%
cmd2/parsing.py                286      2    99%
cmd2/plugin.py                  18      0   100%
cmd2/py_bridge.py               39      0   100%
cmd2/rl_utils.py                58     12    79%
cmd2/table_creator.py          467      0   100%
cmd2/transcript.py             111     10    91%
cmd2/utils.py                  516     15    97%
------------------------------------------------
TOTAL                         5700    361    94%
Coverage HTML written to dir htmlcov
======== 997 passed, 1 skipped ========