@@ -7568,6 +7568,101 @@ def test_error_and_warning_not_colorized_when_disabled(self):
75687568 self .assertNotIn ('\x1b [' , warn )
75697569 self .assertIn ('warning:' , warn )
75707570
7571+ def test_backtick_markup_in_epilog (self ):
7572+ parser = argparse .ArgumentParser (
7573+ prog = 'PROG' ,
7574+ color = True ,
7575+ epilog = 'Example: `python -m myapp --verbose`' ,
7576+ )
7577+
7578+ prog_extra = self .theme .prog_extra
7579+ reset = self .theme .reset
7580+
7581+ help_text = parser .format_help ()
7582+ self .assertIn (f'Example: { prog_extra } python -m myapp --verbose{ reset } ' ,
7583+ help_text )
7584+ self .assertNotIn ('`' , help_text )
7585+
7586+ def test_backtick_markup_in_description (self ):
7587+ parser = argparse .ArgumentParser (
7588+ prog = 'PROG' ,
7589+ color = True ,
7590+ description = 'Run `python -m myapp` to start.' ,
7591+ )
7592+
7593+ prog_extra = self .theme .prog_extra
7594+ reset = self .theme .reset
7595+
7596+ help_text = parser .format_help ()
7597+ self .assertIn (f'Run { prog_extra } python -m myapp{ reset } to start.' ,
7598+ help_text )
7599+
7600+ def test_backtick_markup_multiple (self ):
7601+ parser = argparse .ArgumentParser (
7602+ prog = 'PROG' ,
7603+ color = True ,
7604+ epilog = 'Try `app run` or `app test`.' ,
7605+ )
7606+
7607+ prog_extra = self .theme .prog_extra
7608+ reset = self .theme .reset
7609+
7610+ help_text = parser .format_help ()
7611+ self .assertIn (f'{ prog_extra } app run{ reset } ' , help_text )
7612+ self .assertIn (f'{ prog_extra } app test{ reset } ' , help_text )
7613+
7614+ def test_backtick_markup_not_applied_when_color_disabled (self ):
7615+ # When color is disabled, backticks are preserved as-is
7616+ parser = argparse .ArgumentParser (
7617+ prog = 'PROG' ,
7618+ color = False ,
7619+ epilog = 'Example: `python -m myapp`' ,
7620+ )
7621+
7622+ help_text = parser .format_help ()
7623+ self .assertIn ('`python -m myapp`' , help_text )
7624+ self .assertNotIn ('\x1b [' , help_text )
7625+
7626+ def test_backtick_markup_with_format_string (self ):
7627+ parser = argparse .ArgumentParser (
7628+ prog = 'myapp' ,
7629+ color = True ,
7630+ epilog = 'Run `%(prog)s --help` for more info.' ,
7631+ )
7632+
7633+ prog_extra = self .theme .prog_extra
7634+ reset = self .theme .reset
7635+
7636+ help_text = parser .format_help ()
7637+ self .assertIn (f'{ prog_extra } myapp --help{ reset } ' , help_text )
7638+
7639+ def test_backtick_markup_in_subparser (self ):
7640+ parser = argparse .ArgumentParser (prog = 'PROG' , color = True )
7641+ subparsers = parser .add_subparsers ()
7642+ sub = subparsers .add_parser (
7643+ 'sub' ,
7644+ description = 'Run `PROG sub --foo` to start.' ,
7645+ )
7646+
7647+ prog_extra = self .theme .prog_extra
7648+ reset = self .theme .reset
7649+
7650+ help_text = sub .format_help ()
7651+ self .assertIn (f'{ prog_extra } PROG sub --foo{ reset } ' , help_text )
7652+
7653+ def test_backtick_markup_special_regex_chars (self ):
7654+ parser = argparse .ArgumentParser (
7655+ prog = 'PROG' ,
7656+ color = True ,
7657+ epilog = '`grep "foo.*bar" | sort`' ,
7658+ )
7659+
7660+ prog_extra = self .theme .prog_extra
7661+ reset = self .theme .reset
7662+
7663+ help_text = parser .format_help ()
7664+ self .assertIn (f'{ prog_extra } grep "foo.*bar" | sort{ reset } ' , help_text )
7665+
75717666 def test_print_help_uses_target_file_for_color_decision (self ):
75727667 parser = argparse .ArgumentParser (prog = 'PROG' , color = True )
75737668 parser .add_argument ('--opt' )
0 commit comments