diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index 3aea4ad..f745388 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -437,7 +437,9 @@ class OptionManager(object): assert isinstance( # nosec (for bandit) self.parser, argparse.ArgumentParser ), self.parser - parsed_args = self.parser.parse_args(args, values) + if values: + self.parser.set_defaults(**vars(values)) + parsed_args = self.parser.parse_args(args) # TODO: refactor callers to not need this return parsed_args, parsed_args.filenames diff --git a/tests/unit/test_option_manager.py b/tests/unit/test_option_manager.py index b6ea55c..859dca1 100644 --- a/tests/unit/test_option_manager.py +++ b/tests/unit/test_option_manager.py @@ -29,6 +29,14 @@ def test_parse_args_forwarding_default_values(optmanager): assert options.foo == 'bar' +def test_parse_args_forwarding_type_coercion(optmanager): + """Verify default provided values are type converted from add_option.""" + optmanager.add_option('--foo', type=int) + namespace = argparse.Namespace(foo='5') + options, args = optmanager.parse_args([], namespace) + assert options.foo == 5 + + def test_add_option_short_option_only(optmanager): """Verify the behaviour of adding a short-option only.""" assert optmanager.options == []