aboutsummaryrefslogtreecommitdiff
path: root/starlark/eval_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'starlark/eval_test.go')
-rw-r--r--starlark/eval_test.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/starlark/eval_test.go b/starlark/eval_test.go
index abb0dd9..044f0ac 100644
--- a/starlark/eval_test.go
+++ b/starlark/eval_test.go
@@ -268,6 +268,10 @@ def e(**kwargs):
return kwargs
def f(a, b=42, *args, **kwargs):
return a, b, args, kwargs
+def g(a, b=42, *args, c=123, **kwargs):
+ return a, b, args, c, kwargs
+def h(a, b=42, *, c=123, **kwargs):
+ return a, b, c, kwargs
`
thread := new(starlark.Thread)
@@ -320,6 +324,30 @@ def f(a, b=42, *args, **kwargs):
{`f(0, b=1, c=2)`, `(0, 1, (), {"c": 2})`},
{`f(0, 1, x=2, *[3, 4], y=5, **dict(z=6))`, // github.com/google/skylark/issues/135
`(0, 1, (3, 4), {"x": 2, "y": 5, "z": 6})`},
+
+ {`g()`, `function g takes at least 1 positional argument (0 given)`},
+ {`g(0)`, `(0, 42, (), 123, {})`},
+ {`g(0, 1)`, `(0, 1, (), 123, {})`},
+ {`g(0, 1, 2)`, `(0, 1, (2,), 123, {})`},
+ {`g(0, 1, 2, 3)`, `(0, 1, (2, 3), 123, {})`},
+ {`g(a=0)`, `(0, 42, (), 123, {})`},
+ {`g(0, b=1)`, `(0, 1, (), 123, {})`},
+ {`g(0, a=1)`, `function g got multiple values for keyword argument "a"`},
+ {`g(0, b=1, c=2, d=3)`, `(0, 1, (), 2, {"d": 3})`},
+ {`g(0, 1, x=2, *[3, 4], y=5, **dict(z=6))`,
+ `(0, 1, (3, 4), 123, {"x": 2, "y": 5, "z": 6})`},
+
+ {`h()`, `function h takes at least 1 positional argument (0 given)`},
+ {`h(0)`, `(0, 42, 123, {})`},
+ {`h(0)`, `(0, 42, 123, {})`},
+ {`h(0, 1)`, `(0, 1, 123, {})`},
+ {`h(0, 1, 2)`, `function h takes at most 2 positional arguments (3 given)`},
+ {`h(a=0)`, `(0, 42, 123, {})`},
+ {`h(0, b=1)`, `(0, 1, 123, {})`},
+ {`h(0, a=1)`, `function h got multiple values for keyword argument "a"`},
+ {`h(0, b=1, c=2)`, `(0, 1, 2, {})`},
+ {`h(0, b=1, d=2)`, `(0, 1, 123, {"d": 2})`},
+ {`h(0, b=1, c=2, d=3)`, `(0, 1, 2, {"d": 3})`},
} {
var got string
if v, err := starlark.Eval(thread, "<expr>", test.src, globals); err != nil {