@@ -565,53 +565,61 @@ def test_update_prog() -> None:
565565 """Test Cmd2ArgumentParser.update_prog() across various scenarios."""
566566
567567 # Set up a complex parser hierarchy
568- old_root = 'old_app'
569- parser = Cmd2ArgumentParser (prog = old_root )
568+ old_app = 'old_app'
569+ root = Cmd2ArgumentParser (prog = old_app )
570570
571571 # Positionals before subcommand
572- parser .add_argument ('pos1' )
572+ root .add_argument ('pos1' )
573573
574574 # Mutually exclusive group with positionals
575- group = parser .add_mutually_exclusive_group (required = True )
575+ group = root .add_mutually_exclusive_group (required = True )
576576 group .add_argument ('posA' , nargs = '?' )
577577 group .add_argument ('posB' , nargs = '?' )
578578
579579 # Subparsers with aliases and no help text
580- subparsers = parser .add_subparsers (dest = 'cmd' )
580+ root_subparsers = root .add_subparsers (dest = 'cmd' )
581581
582582 # Subcommand with aliases
583- sub1 = subparsers .add_parser ('sub1' , aliases = ['s1' , 'alias1' ], help = 'help for sub1' )
583+ sub1 = root_subparsers .add_parser ('sub1' , aliases = ['s1' , 'alias1' ], help = 'help for sub1' )
584584
585585 # Subcommand with no help text
586- sub2 = subparsers .add_parser ('sub2' )
586+ sub2 = root_subparsers .add_parser ('sub2' )
587587
588588 # Nested subparser
589589 sub2 .add_argument ('inner_pos' )
590590 sub2_subparsers = sub2 .add_subparsers (dest = 'sub2_cmd' )
591591 leaf = sub2_subparsers .add_parser ('leaf' , help = 'leaf help' )
592592
593- # Verify initial progs look correct
594- assert parser . prog == 'old_app'
595- assert sub1 . prog == 'old_app pos1 (posA | posB) sub1'
596- assert sub2 . prog == 'old_app pos1 (posA | posB) sub2'
597- assert leaf . prog == 'old_app pos1 (posA | posB) sub2 inner_pos leaf'
593+ # Save initial prog values
594+ orig_root_prog = root . prog
595+ orig_sub1_prog = sub1 . prog
596+ orig_sub2_prog = sub2 . prog
597+ orig_leaf_prog = leaf . prog
598598
599599 # Perform update
600- new_root = 'new_app'
601- parser .update_prog (new_root )
600+ new_app = 'new_app'
601+ root .update_prog (new_app )
602602
603- # Verify new progs look correct
604- assert parser .prog == 'new_app'
605- assert sub1 .prog == 'new_app pos1 (posA | posB) sub1'
606- assert sub2 .prog == 'new_app pos1 (posA | posB) sub2'
607- assert leaf .prog == 'new_app pos1 (posA | posB) sub2 inner_pos leaf'
603+ # Verify updated prog values
604+ assert root .prog .startswith (new_app )
605+ assert root .prog == orig_root_prog .replace (old_app , new_app , 1 )
606+
607+ assert sub1 .prog .startswith (new_app )
608+ assert sub1 .prog == orig_sub1_prog .replace (old_app , new_app , 1 )
609+
610+ assert sub2 .prog .startswith (new_app )
611+ assert sub2 .prog == orig_sub2_prog .replace (old_app , new_app , 1 )
612+
613+ assert leaf .prog .startswith (new_app )
614+ assert leaf .prog == orig_leaf_prog .replace (old_app , new_app , 1 )
608615
609616 # Verify that action._prog_prefix was updated by adding a new subparser
610- sub3 = subparsers .add_parser ('sub3' )
611- assert sub3 .prog == 'new_app pos1 (posA | posB) sub3'
617+ sub3 = root_subparsers .add_parser ('sub3' )
618+ assert sub3 .prog .startswith (new_app )
619+ assert sub3 .prog == root_subparsers ._prog_prefix + ' sub3'
612620
613621 # Verify aliases still point to the correct parser
614- for action in parser ._actions :
622+ for action in root ._actions :
615623 if isinstance (action , argparse ._SubParsersAction ):
616624 assert action .choices ['s1' ].prog == sub1 .prog
617625 assert action .choices ['alias1' ].prog == sub1 .prog
0 commit comments