diff options
author | Guido van Rossum <guido@python.org> | 2003-04-14 17:59:34 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-04-14 17:59:34 (GMT) |
commit | 41c99e7f96f7a0f192839801c568d8a80dcc7091 (patch) | |
tree | 5733d278d932546d0b642dce7e631512da483f76 /Lib/test/test_sre.py | |
parent | 44c62ef5ee2d48cfa0bd024507f19e47d987e6b3 (diff) | |
download | cpython-41c99e7f96f7a0f192839801c568d8a80dcc7091.zip cpython-41c99e7f96f7a0f192839801c568d8a80dcc7091.tar.gz cpython-41c99e7f96f7a0f192839801c568d8a80dcc7091.tar.bz2 |
SF patch #720991 by Gary Herron:
A small fix for bug #545855 and Greg Chapman's
addition of op code SRE_OP_MIN_REPEAT_ONE for
eliminating recursion on simple uses of pattern '*?' on a
long string.
Diffstat (limited to 'Lib/test/test_sre.py')
-rw-r--r-- | Lib/test/test_sre.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/test_sre.py b/Lib/test/test_sre.py index 6a00aff..e4eb08d 100644 --- a/Lib/test/test_sre.py +++ b/Lib/test/test_sre.py @@ -83,6 +83,19 @@ test(r"""sre.match(r'(a)?a','a').lastindex""", None) test(r"""sre.match(r'(a)(b)?b','ab').lastindex""", 1) test(r"""sre.match(r'(?P<a>a)(?P<b>b)?b','ab').lastgroup""", 'a') +# bug 545855 -- This pattern failed to cause a compile error as it +# should, instead provoking a TypeError. +test(r"""sre.compile('foo[a-')""", None, sre.error) + +# bugs 418626 at al. -- Testing Greg Chapman's addition of op code +# SRE_OP_MIN_REPEAT_ONE for eliminating recursion on simple uses of +# pattern '*?' on a long string. +test(r"""sre.match('.*?c', 10000*'ab'+'cd').end(0)""", 20001) +test(r"""sre.match('.*?cd', 5000*'ab'+'c'+5000*'ab'+'cde').end(0)""", 20003) +test(r"""sre.match('.*?cd', 20000*'abc'+'de').end(0)""", 60001) +# non-simple '*?' still recurses and hits the recursion limit +test(r"""sre.search('(a|b)*?c', 10000*'ab'+'cd').end(0)""", None, RuntimeError) + if verbose: print 'Running tests on sre.sub' |