summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/output/test_compile7
-rw-r--r--Lib/test/test_compile.py36
2 files changed, 40 insertions, 3 deletions
diff --git a/Lib/test/output/test_compile b/Lib/test/output/test_compile
index 357f96d..de33352 100644
--- a/Lib/test/output/test_compile
+++ b/Lib/test/output/test_compile
@@ -1 +1,8 @@
test_compile
+testing complex args
+1 2
+1 2
+3 4
+1 2 3
+1 2 3
+2 3 4
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index dff7758..cb24060 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -4,19 +4,49 @@ if verbose:
print 'Running tests on argument handling'
try:
- exec('def f(a, a): pass')
+ exec 'def f(a, a): pass'
raise TestFailed, "duplicate arguments"
except SyntaxError:
pass
try:
- exec('def f(a = 0, a = 1): pass')
+ exec 'def f(a = 0, a = 1): pass'
raise TestFailed, "duplicate keyword arguments"
except SyntaxError:
pass
try:
- exec('def f(a): global a; a = 1')
+ exec 'def f(a): global a; a = 1'
raise TestFailed, "variable is global and local"
except SyntaxError:
pass
+
+print "testing complex args"
+
+def comp_args((a, b)):
+ print a,b
+
+comp_args((1, 2))
+
+def comp_args((a, b)=(3, 4)):
+ print a, b
+
+comp_args((1, 2))
+comp_args()
+
+def comp_args(a, (b, c)):
+ print a, b, c
+
+comp_args(1, (2, 3))
+
+def comp_args(a=2, (b, c)=(3, 4)):
+ print a, b, c
+
+comp_args(1, (2, 3))
+comp_args()
+
+try:
+ exec 'def f(a=1, (b, c)): pass'
+ raise TestFailed, "non-default args after default"
+except SyntaxError:
+ pass