diff options
Diffstat (limited to 'Lib/test/test_extcall.py')
| -rw-r--r-- | Lib/test/test_extcall.py | 87 | 
1 files changed, 69 insertions, 18 deletions
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py index 1f7f630..6b6c12d 100644 --- a/Lib/test/test_extcall.py +++ b/Lib/test/test_extcall.py @@ -66,17 +66,17 @@ Verify clearing of SF bug #733667      >>> g()      Traceback (most recent call last):        ... -    TypeError: g() takes at least 1 argument (0 given) +    TypeError: g() missing 1 required positional argument: 'x'      >>> g(*())      Traceback (most recent call last):        ... -    TypeError: g() takes at least 1 argument (0 given) +    TypeError: g() missing 1 required positional argument: 'x'      >>> g(*(), **{})      Traceback (most recent call last):        ... -    TypeError: g() takes at least 1 argument (0 given) +    TypeError: g() missing 1 required positional argument: 'x'      >>> g(1)      1 () {} @@ -151,7 +151,7 @@ What about willful misconduct?      >>> g(1, 2, 3, **{'x': 4, 'y': 5})      Traceback (most recent call last):        ... -    TypeError: g() got multiple values for keyword argument 'x' +    TypeError: g() got multiple values for argument 'x'      >>> f(**{1:2})      Traceback (most recent call last): @@ -263,29 +263,80 @@ the function call setup. See <http://bugs.python.org/issue2016>.      >>> f(**x)      1 2 -A obscure message: +Too many arguments: -    >>> def f(a, b): -    ...    pass -    >>> f(b=1) +    >>> def f(): pass +    >>> f(1) +    Traceback (most recent call last): +      ... +    TypeError: f() takes 0 positional arguments but 1 was given +    >>> def f(a): pass +    >>> f(1, 2)      Traceback (most recent call last):        ... -    TypeError: f() takes exactly 2 arguments (1 given) +    TypeError: f() takes 1 positional argument but 2 were given +    >>> def f(a, b=1): pass +    >>> f(1, 2, 3) +    Traceback (most recent call last): +      ... +    TypeError: f() takes from 1 to 2 positional arguments but 3 were given +    >>> def f(*, kw): pass +    >>> f(1, kw=3) +    Traceback (most recent call last): +      ... +    TypeError: f() takes 0 positional arguments but 1 positional argument (and 1 keyword-only argument) were given +    >>> def f(*, kw, b): pass +    >>> f(1, 2, 3, b=3, kw=3) +    Traceback (most recent call last): +      ... +    TypeError: f() takes 0 positional arguments but 3 positional arguments (and 2 keyword-only arguments) were given +    >>> def f(a, b=2, *, kw): pass +    >>> f(2, 3, 4, kw=4) +    Traceback (most recent call last): +      ... +    TypeError: f() takes from 1 to 2 positional arguments but 3 positional arguments (and 1 keyword-only argument) were given -The number of arguments passed in includes keywords: +Too few and missing arguments: -    >>> def f(a): -    ...    pass -    >>> f(6, a=4, *(1, 2, 3)) +    >>> def f(a): pass +    >>> f()      Traceback (most recent call last):        ... -    TypeError: f() takes exactly 1 positional argument (5 given) -    >>> def f(a, *, kw): -    ...    pass -    >>> f(6, 4, kw=4) +    TypeError: f() missing 1 required positional argument: 'a' +    >>> def f(a, b): pass +    >>> f()      Traceback (most recent call last):        ... -    TypeError: f() takes exactly 1 positional argument (3 given) +    TypeError: f() missing 2 required positional arguments: 'a' and 'b' +    >>> def f(a, b, c): pass +    >>> f() +    Traceback (most recent call last): +      ... +    TypeError: f() missing 3 required positional arguments: 'a', 'b', and 'c' +    >>> def f(a, b, c, d, e): pass +    >>> f() +    Traceback (most recent call last): +      ... +    TypeError: f() missing 5 required positional arguments: 'a', 'b', 'c', 'd', and 'e' +    >>> def f(a, b=4, c=5, d=5): pass +    >>> f(c=12, b=9) +    Traceback (most recent call last): +      ... +    TypeError: f() missing 1 required positional argument: 'a' + +Same with keyword only args: + +    >>> def f(*, w): pass +    >>> f() +    Traceback (most recent call last): +      ... +    TypeError: f() missing 1 required keyword-only argument: 'w' +    >>> def f(*, a, b, c, d, e): pass +    >>> f() +    Traceback (most recent call last): +      ... +    TypeError: f() missing 5 required keyword-only arguments: 'a', 'b', 'c', 'd', and 'e' +  """  import sys  | 
