mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Merged revisions 78729 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r78729 | ezio.melotti | 2010-03-06 17:24:08 +0200 (Sat, 06 Mar 2010) | 1 line #6509: fix re.sub to work properly when the pattern, the string, and the replacement were all bytes. Patch by Antoine Pitrou. ........
This commit is contained in:
parent
c0ddee54b0
commit
dab886ab0f
3 changed files with 28 additions and 1 deletions
|
@ -696,6 +696,24 @@ class ReTests(unittest.TestCase):
|
|||
self.assertRaises(ValueError, re.compile, '(?a)\w', re.UNICODE)
|
||||
self.assertRaises(ValueError, re.compile, '(?au)\w')
|
||||
|
||||
def test_bug_6509(self):
|
||||
# Replacement strings of both types must parse properly.
|
||||
# all strings
|
||||
pat = re.compile('a(\w)')
|
||||
self.assertEqual(pat.sub('b\\1', 'ac'), 'bc')
|
||||
pat = re.compile('a(.)')
|
||||
self.assertEqual(pat.sub('b\\1', 'a\u1234'), 'b\u1234')
|
||||
pat = re.compile('..')
|
||||
self.assertEqual(pat.sub(lambda m: 'str', 'a5'), 'str')
|
||||
|
||||
# all bytes
|
||||
pat = re.compile(b'a(\w)')
|
||||
self.assertEqual(pat.sub(b'b\\1', b'ac'), b'bc')
|
||||
pat = re.compile(b'a(.)')
|
||||
self.assertEqual(pat.sub(b'b\\1', b'a\xCD'), b'b\xCD')
|
||||
pat = re.compile(b'..')
|
||||
self.assertEqual(pat.sub(lambda m: b'bytes', b'a5'), b'bytes')
|
||||
|
||||
def test_dealloc(self):
|
||||
# issue 3299: check for segfault in debug build
|
||||
import _sre
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue