diff --git a/src/flake8/utils.py b/src/flake8/utils.py index f822388..a838140 100644 --- a/src/flake8/utils.py +++ b/src/flake8/utils.py @@ -379,9 +379,8 @@ def filenames_from(arg, predicate=None): for filename in files: joined = os.path.join(root, filename) - if predicate(joined) or predicate(filename): - continue - yield joined + if not predicate(joined): + yield joined else: yield arg diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 9f6925e..0d1bed0 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -180,6 +180,16 @@ def test_filenames_from_a_directory_with_a_predicate(): assert 'flake8/__init__.py' not in filenames +def test_filenames_from_a_directory_with_a_predicate_from_the_current_dir(): + """Verify that predicates filter filenames_from.""" + filenames = list(utils.filenames_from( + arg='./src/flake8', + predicate=lambda filename: filename == '__init__.py', + )) + assert len(filenames) > 2 + assert './src/flake8/__init__.py' in filenames + + def test_filenames_from_a_single_file(): """Verify that we simply yield that filename.""" filenames = list(utils.filenames_from('flake8/__init__.py'))