Issue 6665: Fix fnmatch to properly match filenames with newlines in them.

This commit is contained in:
Gregory P. Smith 2009-08-16 18:52:58 +00:00
parent 1ce2d5305a
commit b98d6b2cbc
3 changed files with 11 additions and 2 deletions

View File

@ -104,4 +104,4 @@ def translate(pat):
res = '%s[%s]' % (res, stuff) res = '%s[%s]' % (res, stuff)
else: else:
res = res + re.escape(c) 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) check('a', 'b', 0)
# these test that '\' is handled correctly in character sets; # these test that '\' is handled correctly in character sets;
# see SF bug #??? # see SF bug #409651
check('\\', r'[\]') check('\\', r'[\]')
check('a', r'[!\]') check('a', r'[!\]')
check('\\', r'[!\]', 0) 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(): def test_main():
test_support.run_unittest(FnmatchTestCase) test_support.run_unittest(FnmatchTestCase)

View File

@ -359,6 +359,8 @@ Core and Builtins
Library 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 - Issue #1135: Add the XView and YView mix-ins to avoid duplicating
the xview* and yview* methods. the xview* and yview* methods.