Example #1
0
    def test_in_group(self):
        builder = ArgumentParser.builder()
        self.assertEqual(builder._current_group, builder._parser)

        group = builder.in_group('First Group')
        self.assertEqual(group, builder._current_group)
        self.assertNotEqual(group, builder._parser)
Example #2
0
    def test_argument_group(self):
        builder = ArgumentParser.builder()

        with builder.argument_group('First Group') as group:
            self.assertEqual(builder._current_group, group)
            self.assertIsInstance(group, _ArgumentGroup)

        self.assertEqual(builder._current_group, builder._parser)
Example #3
0
    def test_mutually_exclusive_group(self):
        builder = ArgumentParser.builder()

        with builder.mutually_exclusive_group(required=True) as group:
            self.assertEqual(builder._current_group, group)
            self.assertIsInstance(group, _MutuallyExclusiveGroup)
            self.assertTrue(group.required)

        self.assertEqual(builder._current_group, builder._parser)
Example #4
0
    def test_set_defaults(self):
        builder = ArgumentParser.builder()

        builder.set_defaults(foo=True, bar=False, baz=[])
        builder.set_defaults('qux', 'Lorem ipsum set dolor')

        self.assertEqual(builder._defaults, {
            'foo': True,
            'bar': False,
            'baz': [],
            'qux': 'Lorem ipsum set dolor',
        })
Example #5
0
    def test_add_positional(self):
        # Setup builder and DSL
        builder = ArgumentParser.builder()
        positional = builder.add_positional

        store = builder.actions.store
        store_int = builder.actions.store_int

        # Create test parser
        positional('foo', store)
        positional('bar', store_int(['bar', 'baz']))

        parser = builder.build()

        args = parser.parse_args(['Foo', '1'])

        self.assertEqual(args.foo, 'Foo')
        self.assertEqual(args.bar, 1)
        self.assertEqual(args.baz, 1)
Example #6
0
    def test_add_option(self):
        # Setup builder and DSL
        builder = ArgumentParser.builder()
        option = builder.add_option

        append = builder.actions.append
        store_true = builder.actions.store_true
        toggle_false = builder.actions.toggle_false
        unsupported = builder.actions.unsupported

        # Create test parser
        option('--foo', append)
        option('--bar', store_true(['bar', 'foobar']))
        option('--baz', toggle_false)
        option('--qux', unsupported)

        parser = builder.build()

        args = parser.parse_args([])
        self.assertEqual(args.foo, [])
        self.assertFalse(args.bar)
        self.assertFalse(args.foobar)
        self.assertTrue(args.baz)
        self.assertFalse(hasattr(args, 'qux'))

        args = parser.parse_args(['--foo', 'Foo'])
        self.assertEqual(args.foo, ['Foo'])

        args = parser.parse_args(['--bar'])
        self.assertTrue(args.bar)
        self.assertTrue(args.foobar)

        args = parser.parse_args(['--baz', '--baz=FALSE'])
        self.assertTrue(args.baz)

        with utils.quiet_output(), self.assertRaises(SystemExit):
            parser.parse_args(['--qux'])
Example #7
0
    def test_build(self):
        builder = ArgumentParser.builder()

        self.assertEqual(builder._parser, builder.build())
Example #8
0
    def test_builder(self):
        builder = ArgumentParser.builder(usage='Totally useless help message')

        self.assertIsInstance(builder._parser, ArgumentParser)
        self.assertEqual(builder._parser.usage, 'Totally useless help message')