mirror of https://github.com/python/cpython.git
Added tests to avoid regression on bug #125375.
roundtrip(): Show the offending syntax tree when things break; this makes it a little easier to debug the module by adding test cases. (Still need better tests for this module, but there's not enough time today.)
This commit is contained in:
parent
b6429a2020
commit
e1578ce204
|
@ -15,6 +15,18 @@ expr: foo(a, b, c, *args)
|
||||||
expr: foo(a, b, c, *args, **kw)
|
expr: foo(a, b, c, *args, **kw)
|
||||||
expr: foo(a, b, c, **kw)
|
expr: foo(a, b, c, **kw)
|
||||||
expr: foo + bar
|
expr: foo + bar
|
||||||
|
expr: lambda: 0
|
||||||
|
expr: lambda x: 0
|
||||||
|
expr: lambda *y: 0
|
||||||
|
expr: lambda *y, **z: 0
|
||||||
|
expr: lambda **z: 0
|
||||||
|
expr: lambda x, y: 0
|
||||||
|
expr: lambda foo=bar: 0
|
||||||
|
expr: lambda foo=bar, spaz=nifty+spit: 0
|
||||||
|
expr: lambda foo=bar, **z: 0
|
||||||
|
expr: lambda foo=bar, blaz=blat+2, **z: 0
|
||||||
|
expr: lambda foo=bar, blaz=blat+2, *y, **z: 0
|
||||||
|
expr: lambda x, *y, **z: 0
|
||||||
|
|
||||||
Statements:
|
Statements:
|
||||||
suite: print
|
suite: print
|
||||||
|
@ -37,6 +49,8 @@ suite: a ^= b
|
||||||
suite: a <<= b
|
suite: a <<= b
|
||||||
suite: a >>= b
|
suite: a >>= b
|
||||||
suite: a **= b
|
suite: a **= b
|
||||||
|
suite: def f(): pass
|
||||||
|
suite: def f(foo=bar): pass
|
||||||
|
|
||||||
Invalid parse trees:
|
Invalid parse trees:
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,12 @@
|
||||||
def roundtrip(f, s):
|
def roundtrip(f, s):
|
||||||
st1 = f(s)
|
st1 = f(s)
|
||||||
t = st1.totuple()
|
t = st1.totuple()
|
||||||
st2 = parser.sequence2ast(t)
|
try:
|
||||||
|
st2 = parser.sequence2ast(t)
|
||||||
|
except parser.ParserError:
|
||||||
|
print "Failing syntax tree:"
|
||||||
|
pprint.pprint(t)
|
||||||
|
raise
|
||||||
|
|
||||||
def roundtrip_fromfile(filename):
|
def roundtrip_fromfile(filename):
|
||||||
roundtrip(suite, open(filename).read())
|
roundtrip(suite, open(filename).read())
|
||||||
|
@ -46,6 +51,18 @@ def test_suite(s):
|
||||||
test_expr("foo(a, b, c, *args, **kw)")
|
test_expr("foo(a, b, c, *args, **kw)")
|
||||||
test_expr("foo(a, b, c, **kw)")
|
test_expr("foo(a, b, c, **kw)")
|
||||||
test_expr("foo + bar")
|
test_expr("foo + bar")
|
||||||
|
test_expr("lambda: 0")
|
||||||
|
test_expr("lambda x: 0")
|
||||||
|
test_expr("lambda *y: 0")
|
||||||
|
test_expr("lambda *y, **z: 0")
|
||||||
|
test_expr("lambda **z: 0")
|
||||||
|
test_expr("lambda x, y: 0")
|
||||||
|
test_expr("lambda foo=bar: 0")
|
||||||
|
test_expr("lambda foo=bar, spaz=nifty+spit: 0")
|
||||||
|
test_expr("lambda foo=bar, **z: 0")
|
||||||
|
test_expr("lambda foo=bar, blaz=blat+2, **z: 0")
|
||||||
|
test_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0")
|
||||||
|
test_expr("lambda x, *y, **z: 0")
|
||||||
|
|
||||||
print
|
print
|
||||||
print "Statements:"
|
print "Statements:"
|
||||||
|
@ -71,6 +88,8 @@ def test_suite(s):
|
||||||
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(foo=bar): pass")
|
||||||
|
|
||||||
#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"))
|
||||||
|
|
Loading…
Reference in New Issue