MCPcopy Index your code
hub / github.com/python-cmd2/cmd2 / test_update_prog

Function test_update_prog

tests/test_argparse_utils.py:559–620  ·  view source on GitHub ↗

Test Cmd2ArgumentParser.update_prog() across various scenarios.

()

Source from the content-addressed store, hash-verified

557
558
559def test_update_prog() -> None:
560 """Test Cmd2ArgumentParser.update_prog() across various scenarios."""
561
562 # Set up a complex parser hierarchy
563 old_app = "old_app"
564 root = Cmd2ArgumentParser(prog=old_app)
565
566 # Positionals before subcommand
567 root.add_argument("pos1")
568
569 # Mutually exclusive group with positionals
570 group = root.add_mutually_exclusive_group(required=True)
571 group.add_argument("posA", nargs="?")
572 group.add_argument("posB", nargs="?")
573
574 # Subparsers with aliases and no help text
575 root_subparsers = root.add_subparsers(dest="cmd")
576
577 # Subcommand with aliases
578 sub1 = root_subparsers.add_parser("sub1", aliases=["s1", "alias1"], help="help for sub1")
579
580 # Subcommand with no help text
581 sub2 = root_subparsers.add_parser("sub2")
582
583 # Nested subparser
584 sub2.add_argument("inner_pos")
585 sub2_subparsers = sub2.add_subparsers(dest="sub2_cmd")
586 leaf = sub2_subparsers.add_parser("leaf", help="leaf help")
587
588 # Save initial prog values
589 orig_root_prog = root.prog
590 orig_sub1_prog = sub1.prog
591 orig_sub2_prog = sub2.prog
592 orig_leaf_prog = leaf.prog
593
594 # Perform update
595 new_app = "new_app"
596 root.update_prog(new_app)
597
598 # Verify updated prog values
599 assert root.prog.startswith(new_app)
600 assert root.prog == orig_root_prog.replace(old_app, new_app, 1)
601
602 assert sub1.prog.startswith(new_app)
603 assert sub1.prog == orig_sub1_prog.replace(old_app, new_app, 1)
604
605 assert sub2.prog.startswith(new_app)
606 assert sub2.prog == orig_sub2_prog.replace(old_app, new_app, 1)
607
608 assert leaf.prog.startswith(new_app)
609 assert leaf.prog == orig_leaf_prog.replace(old_app, new_app, 1)
610
611 # Verify that action._prog_prefix was updated by adding a new subparser
612 sub3 = root_subparsers.add_parser("sub3")
613 assert sub3.prog.startswith(new_app)
614 assert sub3.prog == root_subparsers._prog_prefix + " sub3"
615
616 # Verify aliases still point to the correct parser

Callers

nothing calls this directly

Calls 2

update_progMethod · 0.95
Cmd2ArgumentParserClass · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…