]> granicus.if.org Git - python/commitdiff
Issue 6665: Fix fnmatch to properly match filenames with newlines in them.
authorGregory P. Smith <greg@mad-scientist.com>
Sun, 16 Aug 2009 18:52:58 +0000 (18:52 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Sun, 16 Aug 2009 18:52:58 +0000 (18:52 +0000)
Lib/fnmatch.py
Lib/test/test_fnmatch.py
Misc/NEWS

index 3bf2463913eb221cef1e4b8220b659b75ba5ffb4..4c149eb78171526415301d30c8663f7ebc2fc819 100644 (file)
@@ -104,4 +104,4 @@ def translate(pat):
                 res = '%s[%s]' % (res, stuff)
         else:
             res = res + re.escape(c)
-    return res + "$"
+    return res + '\Z(?ms)'
index e6173ed4f7daff40fdc872774c483793f1f54f1c..fbcbe70b82847c999a6ce8838d2d5cf42376b59e 100644 (file)
@@ -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)
index a4c995d6f510fac3e015e7c49fe9758809ec47a5..91baebfcc46ea2ef27bbd8a8557397d1f572fcc8 100644 (file)
--- 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.