diff options
| author | Ka-Ping Yee <ping@zesty.ca> | 2001-01-15 22:14:16 +0000 |
|---|---|---|
| committer | Ka-Ping Yee <ping@zesty.ca> | 2001-01-15 22:14:16 +0000 |
| commit | 1e1ac26ec4ffc648235977c5707c0e2e0aa91f92 (patch) | |
| tree | 6a67b0df25b76c57b5fdd641af81bd6f14600c27 /Lib | |
| parent | 082c9972e1cada2f5c66a6521cdbef250df9c6cf (diff) | |
| download | cpython-1e1ac26ec4ffc648235977c5707c0e2e0aa91f92.tar.gz | |
This patch makes sure that the function name always appears in the error
message, and tries to make the messages more consistent and helpful when
the wrong number of arguments or duplicate keyword arguments are supplied.
Comes with more tests for test_extcall.py and and an update to an error
message in test/output/test_pyexpat.
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/test/output/test_extcall | 95 | ||||
| -rw-r--r-- | Lib/test/output/test_pyexpat | 2 | ||||
| -rw-r--r-- | Lib/test/test_extcall.py | 30 |
3 files changed, 116 insertions, 11 deletions
diff --git a/Lib/test/output/test_extcall b/Lib/test/output/test_extcall index 87102af203..d289f5493f 100644 --- a/Lib/test/output/test_extcall +++ b/Lib/test/output/test_extcall @@ -9,9 +9,9 @@ test_extcall (1, 2, 3) {'b': 5, 'a': 4} (1, 2, 3, 4, 5) {'b': 7, 'a': 6} (1, 2, 3, 6, 7) {'y': 5, 'b': 9, 'x': 4, 'a': 8} -TypeError: not enough arguments to g(); expected 1, got 0 -TypeError: not enough arguments to g(); expected 1, got 0 -TypeError: not enough arguments to g(); expected 1, got 0 +TypeError: g() takes at least 1 argument (0 given) +TypeError: g() takes at least 1 argument (0 given) +TypeError: g() takes at least 1 argument (0 given) 1 () {} 1 (2,) {} 1 (2, 3) {} @@ -20,14 +20,89 @@ TypeError: not enough arguments to g(); expected 1, got 0 1 () {'d': 4, 'b': 2, 'c': 3, 'a': 1} {'b': 2, 'c': 3, 'a': 1} {'b': 2, 'c': 3, 'a': 1} -keyword parameter 'x' redefined in call to g() -keyword parameter 'b' redefined in function call -keywords must be strings +g() got multiple values for keyword argument 'x' +g() got multiple values for keyword argument 'b' +f() keywords must be strings h() got an unexpected keyword argument 'e' -* argument must be a sequence -** argument must be a dictionary +h() argument after * must be a sequence +h() argument after ** must be a dictionary 3 512 1 3 3 -unbound method must be called with instance as first argument -unbound method must be called with instance as first argument +unbound method method() must be called with instance as first argument +unbound method method() must be called with instance as first argument +za () {} -> za() takes exactly 1 argument (0 given) +za () {'a': 'aa'} -> ok za aa B D E V a +za () {'d': 'dd'} -> za() got an unexpected keyword argument 'd' +za () {'d': 'dd', 'a': 'aa'} -> za() got an unexpected keyword argument 'd' +za () {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> za() got an unexpected keyword argument 'd' +za (1, 2) {} -> za() takes exactly 1 argument (2 given) +za (1, 2) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (2 given) +za (1, 2) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (2 given) +za (1, 2) {'d': 'dd', 'a': 'aa'} -> za() takes exactly 1 non-keyword argument (2 given) +za (1, 2) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> za() takes exactly 1 non-keyword argument (2 given) +za (1, 2, 3, 4, 5) {} -> za() takes exactly 1 argument (5 given) +za (1, 2, 3, 4, 5) {'a': 'aa'} -> za() takes exactly 1 non-keyword argument (5 given) +za (1, 2, 3, 4, 5) {'d': 'dd'} -> za() takes exactly 1 non-keyword argument (5 given) +za (1, 2, 3, 4, 5) {'d': 'dd', 'a': 'aa'} -> za() takes exactly 1 non-keyword argument (5 given) +za (1, 2, 3, 4, 5) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> za() takes exactly 1 non-keyword argument (5 given) +zade () {} -> zade() takes at least 1 argument (0 given) +zade () {'a': 'aa'} -> ok zade aa B d e V a +zade () {'d': 'dd'} -> zade() takes at least 1 non-keyword argument (0 given) +zade () {'d': 'dd', 'a': 'aa'} -> ok zade aa B dd e V d +zade () {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zade() got an unexpected keyword argument 'b' +zade (1, 2) {} -> ok zade 1 B 2 e V e +zade (1, 2) {'a': 'aa'} -> zade() got multiple values for keyword argument 'a' +zade (1, 2) {'d': 'dd'} -> zade() got multiple values for keyword argument 'd' +zade (1, 2) {'d': 'dd', 'a': 'aa'} -> zade() got multiple values for keyword argument 'd' +zade (1, 2) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zade() got multiple values for keyword argument 'd' +zade (1, 2, 3, 4, 5) {} -> zade() takes at most 3 arguments (5 given) +zade (1, 2, 3, 4, 5) {'a': 'aa'} -> zade() takes at most 3 non-keyword arguments (5 given) +zade (1, 2, 3, 4, 5) {'d': 'dd'} -> zade() takes at most 3 non-keyword arguments (5 given) +zade (1, 2, 3, 4, 5) {'d': 'dd', 'a': 'aa'} -> zade() takes at most 3 non-keyword arguments (5 given) +zade (1, 2, 3, 4, 5) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zade() takes at most 3 non-keyword arguments (5 given) +zabk () {} -> zabk() takes exactly 2 arguments (0 given) +zabk () {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) +zabk () {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (0 given) +zabk () {'d': 'dd', 'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (1 given) +zabk () {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> ok zabk aa bb D E V {'d': 'dd', 'e': 'ee'} +zabk (1, 2) {} -> ok zabk 1 2 D E V {} +zabk (1, 2) {'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2) {'d': 'dd'} -> ok zabk 1 2 D E V {'d': 'dd'} +zabk (1, 2) {'d': 'dd', 'a': 'aa'} -> zabk() got multiple values for keyword argument 'a' +zabk (1, 2) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabk() got multiple values for keyword argument 'b' +zabk (1, 2, 3, 4, 5) {} -> zabk() takes exactly 2 arguments (5 given) +zabk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabk (1, 2, 3, 4, 5) {'d': 'dd', 'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabk (1, 2, 3, 4, 5) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabk() takes exactly 2 non-keyword arguments (5 given) +zabdv () {} -> zabdv() takes at least 2 arguments (0 given) +zabdv () {'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) +zabdv () {'d': 'dd'} -> zabdv() takes at least 2 non-keyword arguments (0 given) +zabdv () {'d': 'dd', 'a': 'aa'} -> zabdv() takes at least 2 non-keyword arguments (1 given) +zabdv () {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabdv() got an unexpected keyword argument 'e' +zabdv (1, 2) {} -> ok zabdv 1 2 d E () e +zabdv (1, 2) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2) {'d': 'dd'} -> ok zabdv 1 2 dd E () d +zabdv (1, 2) {'d': 'dd', 'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabdv() got an unexpected keyword argument 'e' +zabdv (1, 2, 3, 4, 5) {} -> ok zabdv 1 2 3 E (4, 5) e +zabdv (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdv() got multiple values for keyword argument 'a' +zabdv (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdv() got multiple values for keyword argument 'd' +zabdv (1, 2, 3, 4, 5) {'d': 'dd', 'a': 'aa'} -> zabdv() got multiple values for keyword argument 'd' +zabdv (1, 2, 3, 4, 5) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabdv() got multiple values for keyword argument 'd' +zabdevk () {} -> zabdevk() takes at least 2 arguments (0 given) +zabdevk () {'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) +zabdevk () {'d': 'dd'} -> zabdevk() takes at least 2 non-keyword arguments (0 given) +zabdevk () {'d': 'dd', 'a': 'aa'} -> zabdevk() takes at least 2 non-keyword arguments (1 given) +zabdevk () {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> ok zabdevk aa bb dd ee () {} +zabdevk (1, 2) {} -> ok zabdevk 1 2 d e () {} +zabdevk (1, 2) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2) {'d': 'dd'} -> ok zabdevk 1 2 dd e () {} +zabdevk (1, 2) {'d': 'dd', 'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'b' +zabdevk (1, 2, 3, 4, 5) {} -> ok zabdevk 1 2 3 4 (5,) {} +zabdevk (1, 2, 3, 4, 5) {'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'a' +zabdevk (1, 2, 3, 4, 5) {'d': 'dd'} -> zabdevk() got multiple values for keyword argument 'd' +zabdevk (1, 2, 3, 4, 5) {'d': 'dd', 'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'd' +zabdevk (1, 2, 3, 4, 5) {'d': 'dd', 'e': 'ee', 'b': 'bb', 'a': 'aa'} -> zabdevk() got multiple values for keyword argument 'd' diff --git a/Lib/test/output/test_pyexpat b/Lib/test/output/test_pyexpat index 4d9981cbbe..5d6160a9c2 100644 --- a/Lib/test/output/test_pyexpat +++ b/Lib/test/output/test_pyexpat @@ -97,7 +97,7 @@ End element: Testing constructor for proper handling of namespace_separator values: Legal values tested o.k. Caught expected TypeError: -ParserCreate, argument 2: expected string or None, int found +ParserCreate() argument 2 must be string or None, not int Caught expected ValueError: namespace_separator must be one character, omitted, or None Caught expected ValueError: diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py index cc42818c9a..b53ced7503 100644 --- a/Lib/test/test_extcall.py +++ b/Lib/test/test_extcall.py @@ -1,5 +1,6 @@ from UserList import UserList from test_support import TestFailed +import string def f(*a, **k): print a, k @@ -172,3 +173,32 @@ except TypeError: pass else: raise TestFailed, 'expected TypeError; no exception raised' + +a, b, d, e, v, k = 'A', 'B', 'D', 'E', 'V', 'K' +funcs = [] +maxargs = {} +for args in ['', 'a', 'ab']: + for defargs in ['', 'd', 'de']: + for vararg in ['', 'v']: + for kwarg in ['', 'k']: + name = 'z' + args + defargs + vararg + kwarg + arglist = list(args) + map( + lambda x: '%s="%s"' % (x, x), defargs) + if vararg: arglist.append('*' + vararg) + if kwarg: arglist.append('**' + kwarg) + decl = 'def %s(%s): print "ok %s", a, b, d, e, v, k' % ( + name, string.join(arglist, ', '), name) + exec(decl) + func = eval(name) + funcs.append(func) + maxargs[func] = len(args + defargs) + +for name in ['za', 'zade', 'zabk', 'zabdv', 'zabdevk']: + func = eval(name) + for args in [(), (1, 2), (1, 2, 3, 4, 5)]: + for kwargs in ['', 'a', 'd', 'ad', 'abde']: + kwdict = {} + for k in kwargs: kwdict[k] = k + k + print func.func_name, args, kwdict, '->', + try: apply(func, args, kwdict) + except TypeError, err: print err |
