コード例 #1
0
    def test_valid_int(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.StoreIntAction)

        for i in [0, 1, 42, -64]:
            args = parser.parse_args(['--foo', six.text_type(i)])
            self.assertEqual(args.foo, i)
コード例 #2
0
    def test_default_value(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.ToggleFalseAction)

        args = parser.parse_args([])

        self.assertTrue(args.foo)
コード例 #3
0
    def test_store_false(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.StoreFalseAction)

        args = parser.parse_args(['--foo'])

        self.assertFalse(args.foo)
コード例 #4
0
    def test_with_no_arg(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.ToggleFalseAction)

        args = parser.parse_args(['--foo'])

        self.assertFalse(args.foo)
コード例 #5
0
    def test_suppressed_default_value(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.UnsupportedAction)

        args = parser.parse_args([])

        self.assertFalse(hasattr(args, 'foo'))
コード例 #6
0
    def test_store_const(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.StoreAction, const='bar')

        args = parser.parse_args(['--foo'])

        self.assertEqual(args.foo, 'bar')
コード例 #7
0
    def test_store_value_multiple_destinations(self):
        parser = ArgumentParser()
        parser.add_argument('--foo',
                            dests=['foo', 'bar'],
                            action=actions.StoreAction)

        args = parser.parse_args(['--foo', 'baz'])

        self.assertEqual(args.foo, 'baz')
        self.assertEqual(args.bar, 'baz')
コード例 #8
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    def test_parse_known_args_adds_defaults_to_dests(self):
        parser = ArgumentParser()
        parser.add_argument('--foo',
                            action=actions.StoreAction,
                            dests=['foo', 'bar'],
                            default='FooBar')

        # parse_args calls parse_known_args under the hood
        args = parser.parse_args([])
        self.assertEqual(args.foo, 'FooBar')
        self.assertEqual(args.bar, 'FooBar')
コード例 #9
0
    def test_custom_call_func(self):
        def test_func(action, parser, namespace, values, option_string=None):
            for dest in action.dests:
                setattr(namespace, dest, values)

        parser = ArgumentParser()
        parser.add_argument('--foo',
                            action=actions.CustomCallAction,
                            call_func=test_func,
                            nargs=Nargs.SINGLE)

        args = parser.parse_args(['--foo', 'boo'])

        self.assertEqual(args.foo, 'boo')
コード例 #10
0
    def test_custom_error_message(self):
        message = 'custom error message'

        parser = ArgumentParser()
        action = parser.add_argument('--foo',
                                     action=actions.UnsupportedAction,
                                     message=message)

        self.assertEqual(action.message, message)

        with utils.redirect_stderr() as stderr, self.assertRaises(SystemExit):
            parser.parse_args(['--foo'])

            self.assertIn(message, stderr)
コード例 #11
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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)
コード例 #12
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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)
コード例 #13
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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)
コード例 #14
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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',
        })
コード例 #15
0
    def test_invalid_int(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.StoreIntAction)

        for i in [0.0, True, 'bar']:
            with utils.quiet_output(), self.assertRaises(SystemExit):
                parser.parse_args(['--foo', six.text_type(i)])
コード例 #16
0
    def test_last_wins(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.ToggleFalseAction)

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

        args = parser.parse_args(['--foo=FALSE', '--foo'])
        self.assertFalse(args.foo)

        args = parser.parse_args(['--foo=FALSE', '--foo', 'TRUE'])
        self.assertFalse(args.foo)
コード例 #17
0
    def test_with_optional_true_arg(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.ToggleFalseAction)

        for value in BoolType.TRUE_VALUES:
            args = parser.parse_args(['--foo', str(value)])
            self.assertFalse(args.foo)

            args = parser.parse_args(['--foo={}'.format(value)])
            self.assertFalse(args.foo)
コード例 #18
0
    def test_with_optional_false_arg(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.ToggleFalseAction)

        for value in BoolType.FALSE_VALUES:
            args = parser.parse_args(['--foo', six.text_type(value)])
            self.assertTrue(args.foo)

            args = parser.parse_args(['--foo={}'.format(value)])
            self.assertTrue(args.foo)
コード例 #19
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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)
コード例 #20
0
    def test_choices(self):
        parser = ArgumentParser()
        action = parser.add_argument('--foo',
                                     action=actions.StoreAction,
                                     choices=['bar', 'baz'])

        self.assertEqual(action.nargs, Nargs.OPTIONAL)

        with utils.quiet_output(), self.assertRaises(SystemExit):
            parser.parse_args(['--foo', 'qux'])

        args = parser.parse_args(['--foo', 'bar'])

        self.assertEqual(args.foo, 'bar')
コード例 #21
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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'])
コード例 #22
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    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')
コード例 #23
0
    def test_append(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.AppendAction)

        args = parser.parse_args(['--foo', 'bar', '--foo', 'baz'])
        self.assertEqual(args.foo, ['bar', 'baz'])
コード例 #24
0
    def test_default_value(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.AppendAction)

        args = parser.parse_args([])
        self.assertEqual(args.foo, [])
コード例 #25
0
    def test_raises_parser_error(self):
        parser = ArgumentParser()
        parser.add_argument('--foo', action=actions.UnsupportedAction)

        with utils.quiet_output(), self.assertRaises(SystemExit):
            parser.parse_args(['--foo'])
コード例 #26
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    def test_build(self):
        builder = ArgumentParser.builder()

        self.assertEqual(builder._parser, builder.build())
コード例 #27
0
ファイル: test_parser.py プロジェクト: lambdaxymox/swift
    def test_to_builder(self):
        parser = ArgumentParser()
        builder = parser.to_builder()

        self.assertEqual(parser, builder._parser)