mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
test suite for re.py
This commit is contained in:
parent
007c80e5b7
commit
8e0ce30ce4
2 changed files with 334 additions and 0 deletions
56
Lib/test/test_re.py
Normal file
56
Lib/test/test_re.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
from test_support import verbose
|
||||
import re
|
||||
import traceback
|
||||
|
||||
from re_tests import *
|
||||
if verbose: print 'Running regex_tests test suite'
|
||||
|
||||
for t in tests:
|
||||
print t
|
||||
pattern=s=outcome=repl=expected=None
|
||||
if len(t)==5:
|
||||
pattern, s, outcome, repl, expected = t
|
||||
elif len(t)==3:
|
||||
pattern, s, outcome = t
|
||||
else:
|
||||
raise ValueError, ('Test tuples should have 3 or 5 fields',t)
|
||||
|
||||
try:
|
||||
obj=re.compile(pattern)
|
||||
except re.error:
|
||||
if outcome==SYNTAX_ERROR: pass # Expected a syntax error
|
||||
else:
|
||||
print '=== Syntax error:', t
|
||||
except:
|
||||
print '*** Unexpected error ***'
|
||||
traceback.print_exc()
|
||||
else:
|
||||
try:
|
||||
result=obj.search(s)
|
||||
except regex.error, msg:
|
||||
print '=== Unexpected exception', t, repr(msg)
|
||||
if outcome==SYNTAX_ERROR:
|
||||
# This should have been a syntax error; forget it.
|
||||
pass
|
||||
elif outcome==FAIL:
|
||||
if result is None: pass # No match, as expected
|
||||
else: print '=== Succeeded incorrectly', t
|
||||
elif outcome==SUCCEED:
|
||||
if result is not None:
|
||||
# Matched, as expected, so now we compute the
|
||||
# result string and compare it to our expected result.
|
||||
start, end = result.span(0)
|
||||
vardict={'found': result.group(0)}
|
||||
for i in range(1, 100):
|
||||
try:
|
||||
gi = result.group(i)
|
||||
except IndexError:
|
||||
break
|
||||
else:
|
||||
vardict['g%d' % i] = gi
|
||||
repl=eval(repl, vardict)
|
||||
if repl!=expected:
|
||||
print '=== grouping error', t,
|
||||
print repr(repl)+' should be '+repr(expected)
|
||||
else:
|
||||
print '=== Failed incorrectly', t
|
||||
Loading…
Add table
Add a link
Reference in a new issue