mirror of
https://github.com/beetbox/beets.git
synced 2025-12-07 17:16:07 +01:00
bpd: add comments to the error handling code
This commit is contained in:
parent
28db7d3d33
commit
d074dac771
1 changed files with 11 additions and 0 deletions
|
|
@ -623,6 +623,11 @@ class BaseServer(object):
|
||||||
print(heap)
|
print(heap)
|
||||||
|
|
||||||
def cmd_crash_TypeError(self, conn):
|
def cmd_crash_TypeError(self, conn):
|
||||||
|
"""Deliberately trigger a TypeError for testing purposes.
|
||||||
|
We want to test that the server properly responds with ERROR_SYSTEM
|
||||||
|
without crashing, and that this is not treated as ERROR_ARG (since it
|
||||||
|
is caused by a programming error, not a protocol error).
|
||||||
|
"""
|
||||||
'a' + 2
|
'a' + 2
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -753,15 +758,21 @@ class Command(object):
|
||||||
|
|
||||||
if six.PY2:
|
if six.PY2:
|
||||||
# caution: the fields of the namedtuple are slightly different
|
# caution: the fields of the namedtuple are slightly different
|
||||||
|
# between the results of getargspec and getfullargspec.
|
||||||
argspec = inspect.getargspec(func)
|
argspec = inspect.getargspec(func)
|
||||||
else:
|
else:
|
||||||
argspec = inspect.getfullargspec(func)
|
argspec = inspect.getfullargspec(func)
|
||||||
|
|
||||||
|
# Check that `func` is able to handle the number of arguments sent
|
||||||
|
# by the client (so we can raise ERROR_ARG instead of ERROR_SYSTEM).
|
||||||
|
# Maximum accepted arguments: argspec includes "self" and "conn".
|
||||||
max_args = len(argspec.args) - 2
|
max_args = len(argspec.args) - 2
|
||||||
|
# Minimum accepted arguments: some arguments might be optional/
|
||||||
min_args = max_args
|
min_args = max_args
|
||||||
if argspec.defaults:
|
if argspec.defaults:
|
||||||
min_args -= len(argspec.defaults)
|
min_args -= len(argspec.defaults)
|
||||||
wrong_num = (len(self.args) > max_args) or (len(self.args) < min_args)
|
wrong_num = (len(self.args) > max_args) or (len(self.args) < min_args)
|
||||||
|
# If the command accepts a variable number of arguments skip the check.
|
||||||
if wrong_num and not argspec.varargs:
|
if wrong_num and not argspec.varargs:
|
||||||
raise BPDError(ERROR_ARG,
|
raise BPDError(ERROR_ARG,
|
||||||
u'wrong number of arguments for "{}"'
|
u'wrong number of arguments for "{}"'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue