kopia lustrzana https://github.com/micropython/micropython-lib
fnmatch: Fix regex undefined behavior.
Per https://docs.python.org/3.4/library/re.html#regular-expression-syntax , inline flags must appear at the beginning of expression. Reported as http://bugs.python.org/issue21464pull/118/head
rodzic
69f67c407a
commit
666d235ab8
|
@ -107,4 +107,5 @@ def translate(pat):
|
|||
res = '%s[%s]' % (res, stuff)
|
||||
else:
|
||||
res = res + re.escape(c)
|
||||
return res + '\Z(?ms)'
|
||||
# Original patterns is undefined, see http://bugs.python.org/issue21464
|
||||
return '(?ms)' + res + '\Z'
|
||||
|
|
|
@ -63,14 +63,14 @@ class FnmatchTestCase(unittest.TestCase):
|
|||
class TranslateTestCase(unittest.TestCase):
|
||||
|
||||
def test_translate(self):
|
||||
self.assertEqual(translate('*'), '.*\Z(?ms)')
|
||||
self.assertEqual(translate('?'), '.\Z(?ms)')
|
||||
self.assertEqual(translate('a?b*'), 'a.b.*\Z(?ms)')
|
||||
self.assertEqual(translate('[abc]'), '[abc]\Z(?ms)')
|
||||
self.assertEqual(translate('[]]'), '[]]\Z(?ms)')
|
||||
self.assertEqual(translate('[!x]'), '[^x]\Z(?ms)')
|
||||
self.assertEqual(translate('[^x]'), '[\\^x]\Z(?ms)')
|
||||
self.assertEqual(translate('[x'), '\\[x\Z(?ms)')
|
||||
self.assertEqual(translate('*'), '(?ms).*\Z')
|
||||
self.assertEqual(translate('?'), '(?ms).\Z')
|
||||
self.assertEqual(translate('a?b*'), '(?ms)a.b.*\Z')
|
||||
self.assertEqual(translate('[abc]'), '(?ms)[abc]\Z')
|
||||
self.assertEqual(translate('[]]'), '(?ms)[]]\Z')
|
||||
self.assertEqual(translate('[!x]'), '(?ms)[^x]\Z')
|
||||
self.assertEqual(translate('[^x]'), '(?ms)[\\^x]\Z')
|
||||
self.assertEqual(translate('[x'), '(?ms)\\[x\Z')
|
||||
|
||||
|
||||
class FilterTestCase(unittest.TestCase):
|
||||
|
|
Ładowanie…
Reference in New Issue