Fix using --exclude=.* to not match . and ..

This commit is contained in:
Anthony Sottile 2020-05-07 12:32:25 -07:00
parent 0c3b8045a7
commit 9e67511c69
2 changed files with 9 additions and 1 deletions

View file

@ -448,7 +448,7 @@ def matches_filename(path, patterns, log_message, logger):
if not patterns:
return False
basename = os.path.basename(path)
if fnmatch(basename, patterns):
if basename not in {".", ".."} and fnmatch(basename, patterns):
logger.debug(log_message, {"path": basename, "whether": ""})
return True

View file

@ -1,4 +1,5 @@
"""Tests for flake8's utils module."""
import logging
import os
import mock
@ -296,3 +297,10 @@ MULTI_FILE_INFO = {
def test_parse_unified_diff(diff, parsed_diff):
"""Verify that what we parse from a diff matches expectations."""
assert utils.parse_unified_diff(diff) == parsed_diff
def test_matches_filename_for_excluding_dotfiles():
"""Verify that `.` and `..` are not matched by `.*`."""
logger = logging.Logger(__name__)
assert not utils.matches_filename('.', ('.*',), '', logger)
assert not utils.matches_filename('..', ('.*',), '', logger)