summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/fnmatch.py2
-rw-r--r--Lib/test/test_fnmatch.py9
-rw-r--r--Misc/NEWS2
3 files changed, 11 insertions, 2 deletions
diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py
index 3bf2463..4c149eb 100644
--- a/Lib/fnmatch.py
+++ b/Lib/fnmatch.py
@@ -104,4 +104,4 @@ def translate(pat):
res = '%s[%s]' % (res, stuff)
else:
res = res + re.escape(c)
- return res + "$"
+ return res + '\Z(?ms)'
diff --git a/Lib/test/test_fnmatch.py b/Lib/test/test_fnmatch.py
index e6173ed..fbcbe70 100644
--- a/Lib/test/test_fnmatch.py
+++ b/Lib/test/test_fnmatch.py
@@ -32,11 +32,18 @@ class FnmatchTestCase(unittest.TestCase):
check('a', 'b', 0)
# these test that '\' is handled correctly in character sets;
- # see SF bug #???
+ # see SF bug #409651
check('\\', r'[\]')
check('a', r'[!\]')
check('\\', r'[!\]', 0)
+ # test that filenames with newlines in them are handled correctly.
+ # http://bugs.python.org/issue6665
+ check('foo\nbar', 'foo*')
+ check('foo\nbar\n', 'foo*')
+ check('\nfoo', 'foo*', False)
+ check('\n', '*')
+
def test_main():
test_support.run_unittest(FnmatchTestCase)
diff --git a/Misc/NEWS b/Misc/NEWS
index a4c995d..91baebf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -359,6 +359,8 @@ Core and Builtins
Library
-------
+- Issue #6665: Fix fnmatch to properly match filenames with newlines in them.
+
- Issue #1135: Add the XView and YView mix-ins to avoid duplicating
the xview* and yview* methods.