Test Cmd2ArgumentParser.update_prog() across various scenarios.
()
| 557 | |
| 558 | |
| 559 | def 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 |
nothing calls this directly
no test coverage detected
searching dependent graphs…