diff options
| author | Ezio Melotti <ezio.melotti@gmail.com> | 2012-11-03 18:31:12 (GMT) |
|---|---|---|
| committer | Ezio Melotti <ezio.melotti@gmail.com> | 2012-11-03 18:31:12 (GMT) |
| commit | ef3173877c78f1bbab1e570c68b2ce11460a9f5b (patch) | |
| tree | 8ebc9c5c4171ff1408e783fd9e9099fee097c02c /Lib/test | |
| parent | d1076dbef8c0cdf6c35101f7c99cdcd319a1e8e5 (diff) | |
| download | cpython-ef3173877c78f1bbab1e570c68b2ce11460a9f5b.zip cpython-ef3173877c78f1bbab1e570c68b2ce11460a9f5b.tar.gz cpython-ef3173877c78f1bbab1e570c68b2ce11460a9f5b.tar.bz2 | |
#12759: sre_parse now raises a proper error when the name of the group is missing. Initial patch by Serhiy Storchaka.
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_re.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index 6f6d014..0bceaa2 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -174,11 +174,31 @@ class ReTests(unittest.TestCase): self.assertEqual(re.sub('x*', '-', 'abxd'), '-a-b-d-') self.assertEqual(re.sub('x+', '-', 'abxd'), 'ab-d') + def test_symbolic_groups(self): + re.compile('(?P<a>x)(?P=a)(?(a)y)') + re.compile('(?P<a1>x)(?P=a1)(?(a1)y)') + self.assertRaises(re.error, re.compile, '(?P<a>)(?P<a>)') + self.assertRaises(re.error, re.compile, '(?Px)') + self.assertRaises(re.error, re.compile, '(?P=)') + self.assertRaises(re.error, re.compile, '(?P=1)') + self.assertRaises(re.error, re.compile, '(?P=a)') + self.assertRaises(re.error, re.compile, '(?P=a1)') + self.assertRaises(re.error, re.compile, '(?P=a.)') + self.assertRaises(re.error, re.compile, '(?P<)') + self.assertRaises(re.error, re.compile, '(?P<>)') + self.assertRaises(re.error, re.compile, '(?P<1>)') + self.assertRaises(re.error, re.compile, '(?P<a.>)') + self.assertRaises(re.error, re.compile, '(?())') + self.assertRaises(re.error, re.compile, '(?(a))') + self.assertRaises(re.error, re.compile, '(?(1a))') + self.assertRaises(re.error, re.compile, '(?(a.))') + def test_symbolic_refs(self): self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a', 'xx') self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<', 'xx') self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g', 'xx') self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a a>', 'xx') + self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<>', 'xx') self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<1a1>', 'xx') self.assertRaises(IndexError, re.sub, '(?P<a>x)', '\g<ab>', 'xx') self.assertRaises(re.error, re.sub, '(?P<a>x)|(?P<b>y)', '\g<b>', 'xx') |
