[Python-checkins] r76024 - in python/branches/release31-maint: Lib/fnmatch.py Lib/test/test_fnmatch.py Misc/NEWS

gregory.p.smith python-checkins at python.org
Sun Nov 1 21:36:24 CET 2009


Author: gregory.p.smith
Date: Sun Nov  1 21:36:24 2009
New Revision: 76024

Log:
Merged revisions 74476 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r74476 | gregory.p.smith | 2009-08-16 11:58:46 -0700 (Sun, 16 Aug 2009) | 9 lines
  
  Merged revisions 74475 via svnmerge from 
  svn+ssh://pythondev@svn.python.org/python/trunk
  
  ........
    r74475 | gregory.p.smith | 2009-08-16 11:52:58 -0700 (Sun, 16 Aug 2009) | 2 lines
    
    Issue 6665: Fix fnmatch to properly match filenames with newlines in them.
  ........
................


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/fnmatch.py
   python/branches/release31-maint/Lib/test/test_fnmatch.py
   python/branches/release31-maint/Misc/NEWS

Modified: python/branches/release31-maint/Lib/fnmatch.py
==============================================================================
--- python/branches/release31-maint/Lib/fnmatch.py	(original)
+++ python/branches/release31-maint/Lib/fnmatch.py	Sun Nov  1 21:36:24 2009
@@ -113,4 +113,4 @@
                 res = '%s[%s]' % (res, stuff)
         else:
             res = res + re.escape(c)
-    return res + "$"
+    return res + '\Z(?ms)'

Modified: python/branches/release31-maint/Lib/test/test_fnmatch.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_fnmatch.py	(original)
+++ python/branches/release31-maint/Lib/test/test_fnmatch.py	Sun Nov  1 21:36:24 2009
@@ -32,11 +32,18 @@
         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_mix_bytes_str(self):
         self.assertRaises(TypeError, fnmatch, 'test', b'*')
         self.assertRaises(TypeError, fnmatch, b'test', '*')
@@ -46,6 +53,8 @@
     def test_bytes(self):
         self.check_match(b'test', b'te*')
         self.check_match(b'test\xff', b'te*\xff')
+        self.check_match(b'foo\nbar', b'foo*')
+
 
 def test_main():
     support.run_unittest(FnmatchTestCase)

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Sun Nov  1 21:36:24 2009
@@ -37,6 +37,8 @@
 Library
 -------
 
+- Issue #6665: Fix fnmatch to properly match filenames with newlines in them.
+
 - Issue #7246 & Issue #7208: getpass now properly flushes input before
   reading from stdin so that existing input does not confuse it and
   lead to incorrect entry or an IOError.  It also properly flushes it


More information about the Python-checkins mailing list