diff --git a/flake8/options/manager.py b/flake8/options/manager.py index f4bd1d8..6c0d036 100644 --- a/flake8/options/manager.py +++ b/flake8/options/manager.py @@ -149,12 +149,12 @@ class OptionManager(object): def parse_args(self, args=None, values=None): """Simple proxy to calling the OptionParser's parse_args method.""" options, xargs = self.parser.parse_args(args, values) - for config_name, option in self.config_options_dict.items(): - dest = option.dest or config_name - if self.normalize_paths: + for option in self.options: + dest = option.dest + if option.normalize_paths: old_value = getattr(options, dest) setattr(options, dest, utils.normalize_paths(old_value)) - elif self.comma_separated_list: + elif option.comma_separated_list: old_value = getattr(options, dest) setattr(options, dest, utils.parse_comma_separated_list(old_value)) diff --git a/tests/unit/test_option_manager.py b/tests/unit/test_option_manager.py index 4983c1d..37c9570 100644 --- a/tests/unit/test_option_manager.py +++ b/tests/unit/test_option_manager.py @@ -1,5 +1,6 @@ """Unit tests for flake.options.manager.OptionManager.""" import optparse +import os import pytest @@ -57,3 +58,19 @@ def test_add_option_with_custom_args(optmanager): attrs = ['parse_from_config', 'comma_separated_list', 'normalize_paths'] for option, attr in zip(optmanager.options, attrs): assert getattr(option, attr) is True + + +def test_parse_args(optmanager): + assert optmanager.options == [] + assert optmanager.config_options_dict == {} + + optmanager.add_option('-v', '--verbose', action='count') + optmanager.add_option('--config', normalize_paths=True) + optmanager.add_option('--exclude', default='E123,W234', + comma_separated_list=True) + + options, args = optmanager.parse_args( + ['-v', '-v', '-v', '--config', '../config.ini'] + ) + assert options.verbose == 3 + assert options.config == os.path.abspath('../config.ini')