@functools.wraps(f)
def wrapper(*args, **kwargs):
future = Future()
- callback, args, kwargs = replacer.replace(future.set_result,
- args, kwargs)
+ callback, args, kwargs = replacer.replace(
+ lambda value=None: future.set_result(value),
+ args, kwargs)
def handle_error(typ, value, tb):
future.set_exception(value)
# implementations the last event prior to callback resolution wins.
return 42
+ @return_future
+ def no_result_future(self, callback):
+ callback()
+
def test_immediate_failure(self):
with self.assertRaises(ZeroDivisionError):
# The caller sees the error just like a normal function.
# when we wait.
self.assertRaises(ZeroDivisionError, self.wait)
+ def test_no_result_future(self):
+ self.no_result_future(self.stop)
+ result = self.wait()
+ self.assertIs(result, None)
+
# The following series of classes demonstrate and test various styles
# of use, with and without generators and futures.
class CapServer(TCPServer):