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.
  ........
................
This commit is contained in:
Gregory P. Smith 2009-11-01 20:36:24 +00:00
parent fc1c75d93f
commit 6c4a725a37
3 changed files with 13 additions and 2 deletions

View File

@ -113,4 +113,4 @@ def translate(pat):
res = '%s[%s]' % (res, stuff)
else:
res = res + re.escape(c)
return res + "$"
return res + '\Z(?ms)'

View 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_mix_bytes_str(self):
self.assertRaises(TypeError, fnmatch, 'test', b'*')
self.assertRaises(TypeError, fnmatch, b'test', '*')
@ -46,6 +53,8 @@ class FnmatchTestCase(unittest.TestCase):
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)

View File

@ -37,6 +37,8 @@ Core and Builtins
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