annotate Lib/test/test_re.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents 518d4f0c8fcc
children 78321a84d73e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
1 #!/usr/local/bin/python
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
2 # -*- mode: python -*-
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
3 # $Id$
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
4
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 from test_support import verbose
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 import re
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
7 import reop
5796
73cf58261b82 Merged Jeffrey's changes in.
Guido van Rossum <guido@python.org>
parents: 5792
diff changeset
8 import sys, os, string, traceback
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 from re_tests import *
5777
b449cd85d519 Some small nits.
Guido van Rossum <guido@python.org>
parents: 5774
diff changeset
11 if verbose: print 'Running re_tests test suite'
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 for t in tests:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 print t
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
15 sys.stdout.flush()
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 pattern=s=outcome=repl=expected=None
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 if len(t)==5:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 pattern, s, outcome, repl, expected = t
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 elif len(t)==3:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 pattern, s, outcome = t
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 else:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 raise ValueError, ('Test tuples should have 3 or 5 fields',t)
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 try:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 obj=re.compile(pattern)
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 except re.error:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 if outcome==SYNTAX_ERROR: pass # Expected a syntax error
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 else:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 print '=== Syntax error:', t
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
30 except KeyboardInterrupt:
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
31 raise KeyboardInterrupt
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 except:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 print '*** Unexpected error ***'
5780
bb0acfd4b720 Removed the traceback output in non-verbose mode
Guido van Rossum <guido@python.org>
parents: 5777
diff changeset
34 if verbose:
bb0acfd4b720 Removed the traceback output in non-verbose mode
Guido van Rossum <guido@python.org>
parents: 5777
diff changeset
35 traceback.print_exc(file=sys.stdout)
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 else:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 try:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 result=obj.search(s)
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
39 except (re.error, reop.error), msg:
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 print '=== Unexpected exception', t, repr(msg)
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 if outcome==SYNTAX_ERROR:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 # This should have been a syntax error; forget it.
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 pass
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 elif outcome==FAIL:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 if result is None: pass # No match, as expected
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 else: print '=== Succeeded incorrectly', t
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 elif outcome==SUCCEED:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 if result is not None:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 # Matched, as expected, so now we compute the
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 # result string and compare it to our expected result.
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 start, end = result.span(0)
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
52 vardict={'found': result.group(0),
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
53 'groups': result.group(),
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
54 'flags': result.re.flags}
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 for i in range(1, 100):
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 try:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 gi = result.group(i)
5777
b449cd85d519 Some small nits.
Guido van Rossum <guido@python.org>
parents: 5774
diff changeset
58 # Special hack because else the string concat fails:
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
59 if gi is None:
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
60 gi = "None"
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 except IndexError:
5792
dffabc620e4e Tweak re_tests and test_re to differentiate between
Guido van Rossum <guido@python.org>
parents: 5791
diff changeset
62 gi = "Error"
5791
2b7372ecd507 More tweaks; re.py is nearly there...
Guido van Rossum <guido@python.org>
parents: 5780
diff changeset
63 vardict['g%d' % i] = gi
5796
73cf58261b82 Merged Jeffrey's changes in.
Guido van Rossum <guido@python.org>
parents: 5792
diff changeset
64 for i in result.re.groupindex.keys():
73cf58261b82 Merged Jeffrey's changes in.
Guido van Rossum <guido@python.org>
parents: 5792
diff changeset
65 try:
73cf58261b82 Merged Jeffrey's changes in.
Guido van Rossum <guido@python.org>
parents: 5792
diff changeset
66 gi = result.group(i)
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
67 if gi is None:
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
68 gi = "None"
5796
73cf58261b82 Merged Jeffrey's changes in.
Guido van Rossum <guido@python.org>
parents: 5792
diff changeset
69 except IndexError:
5805
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
70 gi = "Error"
518d4f0c8fcc Jeffrey's latest -- seems to solve most problems!
Guido van Rossum <guido@python.org>
parents: 5796
diff changeset
71 vardict[i] = gi
5774
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 repl=eval(repl, vardict)
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 if repl!=expected:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 print '=== grouping error', t,
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 print repr(repl)+' should be '+repr(expected)
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 else:
3ef2563e83ee test suite for re.py
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 print '=== Failed incorrectly', t