mirror of
https://github.com/PyCQA/flake8.git
synced 2026-03-31 11:16:54 +00:00
Merge branch 'opt-config-relative-to' into 'master'
Normalize paths in CLI-specified config relative to config file's directory Closes #651 See merge request pycqa/flake8!431
This commit is contained in:
commit
d95f9cf0fe
2 changed files with 15 additions and 11 deletions
|
|
@ -184,9 +184,12 @@ class MergedConfigParser(object):
|
|||
#: Our instance of our :class:`~ConfigFileFinder`
|
||||
self.config_finder = config_finder
|
||||
|
||||
def _normalize_value(self, option, value):
|
||||
def _normalize_value(self, option, value, parent=None):
|
||||
if parent is None:
|
||||
parent = self.config_finder.local_directory
|
||||
|
||||
final_value = option.normalize(
|
||||
value, self.config_finder.local_directory
|
||||
value, parent
|
||||
)
|
||||
LOG.debug(
|
||||
'%r has been normalized to %r for option "%s"',
|
||||
|
|
@ -196,7 +199,7 @@ class MergedConfigParser(object):
|
|||
)
|
||||
return final_value
|
||||
|
||||
def _parse_config(self, config_parser):
|
||||
def _parse_config(self, config_parser, parent=None):
|
||||
config_dict = {}
|
||||
for option_name in config_parser.options(self.program_name):
|
||||
if option_name not in self.config_options:
|
||||
|
|
@ -216,7 +219,7 @@ class MergedConfigParser(object):
|
|||
value = method(self.program_name, option_name)
|
||||
LOG.debug('Option "%s" returned value: %r', option_name, value)
|
||||
|
||||
final_value = self._normalize_value(option, value)
|
||||
final_value = self._normalize_value(option, value, parent)
|
||||
config_dict[option.config_name] = final_value
|
||||
|
||||
return config_dict
|
||||
|
|
@ -262,7 +265,7 @@ class MergedConfigParser(object):
|
|||
return {}
|
||||
|
||||
LOG.debug("Parsing CLI configuration files.")
|
||||
return self._parse_config(config)
|
||||
return self._parse_config(config, os.path.dirname(config_path))
|
||||
|
||||
def merge_user_and_local_config(self):
|
||||
"""Merge the parsed user and local configuration files.
|
||||
|
|
|
|||
|
|
@ -31,15 +31,16 @@ def test_parse_cli_config(optmanager, config_finder):
|
|||
action='count')
|
||||
parser = config.MergedConfigParser(optmanager, config_finder)
|
||||
|
||||
parsed_config = parser.parse_cli_config(
|
||||
'tests/fixtures/config_files/cli-specified.ini'
|
||||
)
|
||||
config_file = 'tests/fixtures/config_files/cli-specified.ini'
|
||||
parsed_config = parser.parse_cli_config(config_file)
|
||||
|
||||
config_dir = os.path.dirname(config_file)
|
||||
assert parsed_config == {
|
||||
'ignore': ['E123', 'W234', 'E111'],
|
||||
'exclude': [
|
||||
os.path.abspath('foo/'),
|
||||
os.path.abspath('bar/'),
|
||||
os.path.abspath('bogus/'),
|
||||
os.path.abspath(os.path.join(config_dir, 'foo/')),
|
||||
os.path.abspath(os.path.join(config_dir, 'bar/')),
|
||||
os.path.abspath(os.path.join(config_dir, 'bogus/')),
|
||||
],
|
||||
'quiet': 1,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue