Kaydet (Commit) e3fb18c1 authored tarafından Fred Drake's avatar Fred Drake

Add more regression tests, including for the import statement variations.

These will detect regression on SF bug #127271 and other import statement
bugs.
üst 71137083
...@@ -50,7 +50,32 @@ suite: a <<= b ...@@ -50,7 +50,32 @@ suite: a <<= b
suite: a >>= b suite: a >>= b
suite: a **= b suite: a **= b
suite: def f(): pass suite: def f(): pass
suite: def f(*args): pass
suite: def f(*args, **kw): pass
suite: def f(**kw): pass
suite: def f(foo=bar): pass suite: def f(foo=bar): pass
suite: def f(foo=bar, *args): pass
suite: def f(foo=bar, *args, **kw): pass
suite: def f(foo=bar, **kw): pass
suite: def f(a, b): pass
suite: def f(a, b, *args): pass
suite: def f(a, b, *args, **kw): pass
suite: def f(a, b, **kw): pass
suite: def f(a, b, foo=bar): pass
suite: def f(a, b, foo=bar, *args): pass
suite: def f(a, b, foo=bar, *args, **kw): pass
suite: def f(a, b, foo=bar, **kw): pass
suite: from sys.path import *
suite: from sys.path import dirname
suite: from sys.path import dirname as my_dirname
suite: from sys.path import dirname, basename
suite: from sys.path import dirname as my_dirname, basename
suite: from sys.path import dirname, basename as my_basename
suite: import sys
suite: import sys as system
suite: import sys, math
suite: import sys as system, math
suite: import sys, math as my_math
Invalid parse trees: Invalid parse trees:
......
...@@ -3,8 +3,7 @@ import parser ...@@ -3,8 +3,7 @@ import parser
import pprint import pprint
import sys import sys
from parser import expr, suite, sequence2ast from test_support import TestFailed
from test_support import verbose
# #
# First, we test that we can generate trees from valid source fragments, # First, we test that we can generate trees from valid source fragments,
...@@ -18,20 +17,18 @@ def roundtrip(f, s): ...@@ -18,20 +17,18 @@ def roundtrip(f, s):
try: try:
st2 = parser.sequence2ast(t) st2 = parser.sequence2ast(t)
except parser.ParserError: except parser.ParserError:
print "Failing syntax tree:" raise TestFailed, s
pprint.pprint(t)
raise
def roundtrip_fromfile(filename): def roundtrip_fromfile(filename):
roundtrip(suite, open(filename).read()) roundtrip(parser.suite, open(filename).read())
def test_expr(s): def test_expr(s):
print "expr:", s print "expr:", s
roundtrip(expr, s) roundtrip(parser.expr, s)
def test_suite(s): def test_suite(s):
print "suite:", s print "suite:", s
roundtrip(suite, s) roundtrip(parser.suite, s)
print "Expressions:" print "Expressions:"
...@@ -88,8 +85,37 @@ test_suite("a ^= b") ...@@ -88,8 +85,37 @@ test_suite("a ^= b")
test_suite("a <<= b") test_suite("a <<= b")
test_suite("a >>= b") test_suite("a >>= b")
test_suite("a **= b") test_suite("a **= b")
test_suite("def f(): pass") test_suite("def f(): pass")
test_suite("def f(*args): pass")
test_suite("def f(*args, **kw): pass")
test_suite("def f(**kw): pass")
test_suite("def f(foo=bar): pass") test_suite("def f(foo=bar): pass")
test_suite("def f(foo=bar, *args): pass")
test_suite("def f(foo=bar, *args, **kw): pass")
test_suite("def f(foo=bar, **kw): pass")
test_suite("def f(a, b): pass")
test_suite("def f(a, b, *args): pass")
test_suite("def f(a, b, *args, **kw): pass")
test_suite("def f(a, b, **kw): pass")
test_suite("def f(a, b, foo=bar): pass")
test_suite("def f(a, b, foo=bar, *args): pass")
test_suite("def f(a, b, foo=bar, *args, **kw): pass")
test_suite("def f(a, b, foo=bar, **kw): pass")
test_suite("from sys.path import *")
test_suite("from sys.path import dirname")
test_suite("from sys.path import dirname as my_dirname")
test_suite("from sys.path import dirname, basename")
test_suite("from sys.path import dirname as my_dirname, basename")
test_suite("from sys.path import dirname, basename as my_basename")
test_suite("import sys")
test_suite("import sys as system")
test_suite("import sys, math")
test_suite("import sys as system, math")
test_suite("import sys, math as my_math")
#d = os.path.dirname(os.__file__) #d = os.path.dirname(os.__file__)
#roundtrip_fromfile(os.path.join(d, "os.py")) #roundtrip_fromfile(os.path.join(d, "os.py"))
...@@ -107,10 +133,9 @@ def check_bad_tree(tree, label): ...@@ -107,10 +133,9 @@ def check_bad_tree(tree, label):
print print
print label print label
try: try:
sequence2ast(tree) parser.sequence2ast(tree)
except parser.ParserError: except parser.ParserError:
print "caught expected exception for invalid tree" print "caught expected exception for invalid tree"
pass
else: else:
print "test failed: did not properly detect invalid tree:" print "test failed: did not properly detect invalid tree:"
pprint.pprint(tree) pprint.pprint(tree)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment