MCPcopy Index your code
hub / github.com/python/cpython / test_basic

Method test_basic

Lib/test/test_argparse.py:6670–6706  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

6668
6669class TestIntermixedArgs(TestCase):
6670 def test_basic(self):
6671 # test parsing intermixed optionals and positionals
6672 parser = argparse.ArgumentParser(prog='PROG')
6673 parser.add_argument('--foo', dest='foo')
6674 bar = parser.add_argument('--bar', dest='bar', required=True)
6675 parser.add_argument('cmd')
6676 parser.add_argument('rest', nargs='*', type=int)
6677 argv = 'cmd --foo x 1 --bar y 2 3'.split()
6678 args = parser.parse_intermixed_args(argv)
6679 # rest gets [1,2,3] despite the foo and bar strings
6680 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6681
6682 args, extras = parser.parse_known_args(argv)
6683 # cannot parse the '1,2,3'
6684 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1]), args)
6685 self.assertEqual(["2", "3"], extras)
6686 args, extras = parser.parse_known_intermixed_args(argv)
6687 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6688 self.assertEqual([], extras)
6689
6690 # unknown optionals go into extras
6691 argv = 'cmd --foo x --error 1 2 --bar y 3'.split()
6692 args, extras = parser.parse_known_intermixed_args(argv)
6693 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6694 self.assertEqual(['--error'], extras)
6695 argv = 'cmd --foo x 1 --error 2 --bar y 3'.split()
6696 args, extras = parser.parse_known_intermixed_args(argv)
6697 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6698 self.assertEqual(['--error'], extras)
6699 argv = 'cmd --foo x 1 2 --error --bar y 3'.split()
6700 args, extras = parser.parse_known_intermixed_args(argv)
6701 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6702 self.assertEqual(['--error'], extras)
6703
6704 # restores attributes that were temporarily changed
6705 self.assertIsNone(parser.usage)
6706 self.assertEqual(bar.required, True)
6707
6708 def test_remainder(self):
6709 # Intermixed and remainder are incompatible

Callers

nothing calls this directly

Calls 8

parse_intermixed_argsMethod · 0.95
parse_known_argsMethod · 0.95
assertIsNoneMethod · 0.80
NSClass · 0.70
add_argumentMethod · 0.45
splitMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected