diff options
| author | Anthony Sottile <asottile@umich.edu> | 2017-03-16 12:48:14 -0700 |
|---|---|---|
| committer | Anthony Sottile <asottile@umich.edu> | 2017-03-16 13:44:33 -0700 |
| commit | 0559e0b43cae92073ffede727bb0963310a81d88 (patch) | |
| tree | 46b753f404faf4ad9ed96989170159b15cf371fb | |
| parent | 733a4f053b093d0d061ce780963e936861327c95 (diff) | |
| download | flake8-0559e0b43cae92073ffede727bb0963310a81d88.tar.gz | |
Don't apply excludes greedily to subdirs
| -rw-r--r-- | src/flake8/utils.py | 2 | ||||
| -rw-r--r-- | tests/unit/test_utils.py | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/flake8/utils.py b/src/flake8/utils.py index b06b659..4eb6537 100644 --- a/src/flake8/utils.py +++ b/src/flake8/utils.py @@ -246,7 +246,7 @@ def filenames_from(arg, predicate=None): # remove it from the list of sub-directories. for directory in sub_directories: joined = os.path.join(root, directory) - if predicate(directory) or predicate(joined): + if predicate(joined): sub_directories.remove(directory) for filename in files: diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index d1816bc..79d83cf 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -94,6 +94,21 @@ def test_filenames_from_a_single_file(): assert ['flake8/__init__.py'] == filenames +def test_filenames_from_exclude_doesnt_exclude_directory_names(tmpdir): + """Verify that we don't greedily exclude subdirs.""" + tmpdir.join('1').ensure_dir().join('dont_return_me.py').ensure() + tmpdir.join('2').join('1').ensure_dir().join('return_me.py').ensure() + exclude = [tmpdir.join('1').strpath] + + # This acts similar to src.flake8.checker.is_path_excluded + def predicate(pth): + return utils.fnmatch(os.path.abspath(pth), exclude) + + with tmpdir.as_cwd(): + filenames = list(utils.filenames_from('.', predicate)) + assert filenames == [os.path.join('.', '2', '1', 'return_me.py')] + + def test_parameters_for_class_plugin(): """Verify that we can retrieve the parameters for a class plugin.""" class FakeCheck(object): |
