]> granicus.if.org Git - python/commitdiff
Added tests to avoid regression on bug #125375.
authorFred Drake <fdrake@acm.org>
Mon, 11 Dec 2000 22:12:09 +0000 (22:12 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 11 Dec 2000 22:12:09 +0000 (22:12 +0000)
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.)

Lib/test/output/test_parser
Lib/test/test_parser.py

index 86ec22d08e610359ae13d1d481bd2bfa0897bbb0..7558641ddb80245b1b4fabd4fbea6872bdd6d7c9 100644 (file)
@@ -15,6 +15,18 @@ expr: foo(a, b, c, *args)
 expr: foo(a, b, c, *args, **kw)
 expr: foo(a, b, c, **kw)
 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:
 suite: print
@@ -37,6 +49,8 @@ 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:
 
index bc41de42676465df8372fca3971b19f715038e19..bb22f6a7107e6bba293f8ef5ce2b578e133f8790 100644 (file)
@@ -15,7 +15,12 @@ from test_support import verbose
 def roundtrip(f, s):
     st1 = f(s)
     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):
     roundtrip(suite, open(filename).read())
@@ -46,6 +51,18 @@ test_expr("foo(a, b, c, *args)")
 test_expr("foo(a, b, c, *args, **kw)")
 test_expr("foo(a, b, c, **kw)")
 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 "Statements:"
@@ -71,6 +88,8 @@ 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__)
 #roundtrip_fromfile(os.path.join(d, "os.py"))