rest should require args unless indicated otherwise. Currently, we can't indicate otherwise, but that's because we haven't had a need for it yet.

This commit is contained in:
Jeremy Fincher 2004-11-08 20:51:39 +00:00
parent 54db030707
commit d280387518
2 changed files with 13 additions and 6 deletions

View File

@ -622,12 +622,15 @@ class context(object):
class rest(context):
def __call__(self, irc, msg, args, state):
original = args[:]
args[:] = [' '.join(args)]
try:
super(rest, self).__call__(irc, msg, args, state)
except Exception, e:
args[:] = original
if args:
original = args[:]
args[:] = [' '.join(args)]
try:
super(rest, self).__call__(irc, msg, args, state)
except Exception, e:
args[:] = original
else:
raise callbacks.ArgumentError
# additional means: Look for this (and make sure it's of this type). If
# there are no arguments for us to check, then use our default.

View File

@ -57,6 +57,10 @@ class CommandsTestCase(SupyTestCase):
def testRestHandling(self):
self.assertState([rest(None)], ['foo', 'bar', 'baz'], ['foo bar baz'])
def testRestRequiresArgs(self):
self.assertRaises(callbacks.ArgumentError,
self.assertState, [rest('something')], [], ['asdf'])
def testOptional(self):
spec = [optional('int', 999), None]
self.assertState(spec, ['12', 'foo'], [12, 'foo'])