diff --git a/docs/source/release-notes/3.0.1.rst b/docs/source/release-notes/3.0.1.rst index 0092dc8..20f6783 100644 --- a/docs/source/release-notes/3.0.1.rst +++ b/docs/source/release-notes/3.0.1.rst @@ -1,5 +1,5 @@ -3.0.1 -- 2016-07-25 -------------------- +3.0.1 -- 2016-07-25 (unreleased) +-------------------------------- - Fix regression in handling of ``# noqa`` for multiline strings. (See also `GitLab#177`_) diff --git a/docs/source/release-notes/3.0.2.rst b/docs/source/release-notes/3.0.2.rst new file mode 100644 index 0000000..8605ce9 --- /dev/null +++ b/docs/source/release-notes/3.0.2.rst @@ -0,0 +1,9 @@ +3.0.2 -- 2016-07-26 +------------------- + +- Fix local config file discovery. (See also `GitLab#181`_) + + +.. links +.. _GitLab#181: + https://gitlab.com/pycqa/flake8/issues/181 diff --git a/docs/source/release-notes/index.rst b/docs/source/release-notes/index.rst index 8056b76..440079b 100644 --- a/docs/source/release-notes/index.rst +++ b/docs/source/release-notes/index.rst @@ -6,6 +6,7 @@ All of the release notes that have been recorded for Flake8 are organized here with the newest releases first. .. toctree:: + 3.0.2 3.0.1 3.0.0 2.6.2 diff --git a/src/flake8/options/config.py b/src/flake8/options/config.py index ec5023b..d1408fe 100644 --- a/src/flake8/options/config.py +++ b/src/flake8/options/config.py @@ -43,8 +43,6 @@ class ConfigFileFinder(object): # List of filenames to find in the local/project directory self.project_filenames = ('setup.cfg', 'tox.ini', self.program_config) - self.local_directory = os.path.abspath(os.curdir) - if not args: args = ['.'] self.parent = self.tail = os.path.abspath(os.path.commonprefix(args)) @@ -72,14 +70,14 @@ class ConfigFileFinder(object): """Find and generate all local config files.""" tail = self.tail parent = self.parent - local_dir = self.local_directory - while tail: + found_config_files = False + while tail and not found_config_files: for project_filename in self.project_filenames: filename = os.path.abspath(os.path.join(parent, project_filename)) - yield filename - if parent == local_dir: - break + if os.path.exists(filename): + yield filename + found_config_files = True (parent, tail) = os.path.split(parent) def local_config_files(self): @@ -99,7 +97,6 @@ class ConfigFileFinder(object): return [ filename for filename in self.generate_possible_local_files() - if os.path.exists(filename) ] + [f for f in self.extra_config_files if exists(f)] def local_configs(self): diff --git a/tests/unit/test_config_file_finder.py b/tests/unit/test_config_file_finder.py index 2e1a1e5..3f321da 100644 --- a/tests/unit/test_config_file_finder.py +++ b/tests/unit/test_config_file_finder.py @@ -43,27 +43,15 @@ def test_cli_config(): # No arguments, common prefix of abspath('.') ([], [os.path.abspath('setup.cfg'), - os.path.abspath('tox.ini'), - os.path.abspath('.flake8')]), + os.path.abspath('tox.ini')]), # Common prefix of "flake8/" (['flake8/options', 'flake8/'], - [os.path.abspath('flake8/setup.cfg'), - os.path.abspath('flake8/tox.ini'), - os.path.abspath('flake8/.flake8'), - os.path.abspath('setup.cfg'), - os.path.abspath('tox.ini'), - os.path.abspath('.flake8')]), + [os.path.abspath('setup.cfg'), + os.path.abspath('tox.ini')]), # Common prefix of "flake8/options" (['flake8/options', 'flake8/options/sub'], - [os.path.abspath('flake8/options/setup.cfg'), - os.path.abspath('flake8/options/tox.ini'), - os.path.abspath('flake8/options/.flake8'), - os.path.abspath('flake8/setup.cfg'), - os.path.abspath('flake8/tox.ini'), - os.path.abspath('flake8/.flake8'), - os.path.abspath('setup.cfg'), - os.path.abspath('tox.ini'), - os.path.abspath('.flake8')]), + [os.path.abspath('setup.cfg'), + os.path.abspath('tox.ini')]), ]) def test_generate_possible_local_files(args, expected): """Verify generation of all possible config paths."""