MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_basic

Method test_basic

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

Source from the content-addressed store, hash-verified

6535
6536class TestIntermixedArgs(TestCase):
6537 def test_basic(self):
6538 # test parsing intermixed optionals and positionals
6539 parser = argparse.ArgumentParser(prog='PROG')
6540 parser.add_argument('--foo', dest='foo')
6541 bar = parser.add_argument('--bar', dest='bar', required=True)
6542 parser.add_argument('cmd')
6543 parser.add_argument('rest', nargs='*', type=int)
6544 argv = 'cmd --foo x 1 --bar y 2 3'.split()
6545 args = parser.parse_intermixed_args(argv)
6546 # rest gets [1,2,3] despite the foo and bar strings
6547 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6548
6549 args, extras = parser.parse_known_args(argv)
6550 # cannot parse the '1,2,3'
6551 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1]), args)
6552 self.assertEqual(["2", "3"], extras)
6553 args, extras = parser.parse_known_intermixed_args(argv)
6554 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6555 self.assertEqual([], extras)
6556
6557 # unknown optionals go into extras
6558 argv = 'cmd --foo x --error 1 2 --bar y 3'.split()
6559 args, extras = parser.parse_known_intermixed_args(argv)
6560 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6561 self.assertEqual(['--error'], extras)
6562 argv = 'cmd --foo x 1 --error 2 --bar y 3'.split()
6563 args, extras = parser.parse_known_intermixed_args(argv)
6564 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6565 self.assertEqual(['--error'], extras)
6566 argv = 'cmd --foo x 1 2 --error --bar y 3'.split()
6567 args, extras = parser.parse_known_intermixed_args(argv)
6568 self.assertEqual(NS(bar='y', cmd='cmd', foo='x', rest=[1, 2, 3]), args)
6569 self.assertEqual(['--error'], extras)
6570
6571 # restores attributes that were temporarily changed
6572 self.assertIsNone(parser.usage)
6573 self.assertEqual(bar.required, True)
6574
6575 def test_remainder(self):
6576 # 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