@@ -7663,6 +7663,38 @@ def test_backtick_markup_special_regex_chars(self):
76637663 help_text = parser .format_help ()
76647664 self .assertIn (f'{ prog_extra } grep "foo.*bar" | sort{ reset } ' , help_text )
76657665
7666+ def test_help_with_format_specifiers (self ):
7667+ # GH-142950: format specifiers like %x should work with color=True
7668+ parser = argparse .ArgumentParser (prog = 'PROG' , color = True )
7669+ parser .add_argument ('--hex' , type = int , default = 255 ,
7670+ help = 'hex: %(default)x, alt: %(default)#x' )
7671+ parser .add_argument ('--zero' , type = int , default = 7 ,
7672+ help = 'zero: %(default)05d' )
7673+ parser .add_argument ('--str' , default = 'test' ,
7674+ help = 'str: %(default)s' )
7675+ parser .add_argument ('--pct' , type = int , default = 50 ,
7676+ help = 'pct: %(default)d%%' )
7677+ parser .add_argument ('--literal' , help = 'literal: 100%%' )
7678+ parser .add_argument ('--prog' , help = 'prog: %(prog)s' )
7679+ parser .add_argument ('--type' , type = int , help = 'type: %(type)s' )
7680+ parser .add_argument ('--choices' , choices = ['a' , 'b' ],
7681+ help = 'choices: %(choices)s' )
7682+
7683+ help_text = parser .format_help ()
7684+
7685+ interp = self .theme .interpolated_value
7686+ reset = self .theme .reset
7687+
7688+ self .assertIn (f'hex: { interp } ff{ reset } ' , help_text )
7689+ self .assertIn (f'alt: { interp } 0xff{ reset } ' , help_text )
7690+ self .assertIn (f'zero: { interp } 00007{ reset } ' , help_text )
7691+ self .assertIn (f'str: { interp } test{ reset } ' , help_text )
7692+ self .assertIn (f'pct: { interp } 50{ reset } %' , help_text )
7693+ self .assertIn ('literal: 100%' , help_text )
7694+ self .assertIn (f'prog: { interp } PROG{ reset } ' , help_text )
7695+ self .assertIn (f'type: { interp } int{ reset } ' , help_text )
7696+ self .assertIn (f'choices: { interp } a, b{ reset } ' , help_text )
7697+
76667698 def test_print_help_uses_target_file_for_color_decision (self ):
76677699 parser = argparse .ArgumentParser (prog = 'PROG' , color = True )
76687700 parser .add_argument ('--opt' )
0 commit comments