Skip to content

Commit ac5e899

Browse files
committed
Fixed tests on Python 3.14+.
1 parent 7be23d2 commit ac5e899

1 file changed

Lines changed: 30 additions & 22 deletions

File tree

tests/test_argparse_custom.py

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)