Skip to content

Commit b3b5287

Browse files
authored
Fix: Directory rule matched similar files
Thank you @PidgeyBE for the PR.
1 parent 8c927dd commit b3b5287

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

gitignore_parser.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ def fnmatch_pathname_to_regex(
212212
res.insert(0, '(?ms)')
213213
if not directory_only:
214214
res.append('$')
215-
if directory_only and negation:
215+
elif directory_only and negation:
216216
res.append('/$')
217+
else:
218+
res.append('($|\/)')
217219
return ''.join(res)

tests.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from gitignore_parser import parse_gitignore
55

6-
from unittest import TestCase
6+
from unittest import TestCase, main
77

88

99
class Test(TestCase):
@@ -80,6 +80,8 @@ def test_ignore_directory(self):
8080
self.assertTrue(matches('/home/michael/.venv'))
8181
self.assertTrue(matches('/home/michael/.venv/folder'))
8282
self.assertTrue(matches('/home/michael/.venv/file.txt'))
83+
self.assertFalse(matches('/home/michael/.venv_other_folder'))
84+
self.assertFalse(matches('/home/michael/.venv_no_folder.py'))
8385

8486
def test_ignore_directory_asterisk(self):
8587
matches = _parse_gitignore_string('.venv/*', fake_base_dir='/home/michael')
@@ -137,3 +139,6 @@ def _parse_gitignore_string(data: str, fake_base_dir: str = None):
137139
with patch('builtins.open', mock_open(read_data=data)):
138140
success = parse_gitignore(f'{fake_base_dir}/.gitignore', fake_base_dir)
139141
return success
142+
143+
if __name__ == '__main__':
144+
main()

0 commit comments

Comments
 (0)