Exemple #1
0
    def test_done_callback_already_successful(self):
        callback_result = [None]

        def fn(callback_future):
            callback_result[0] = callback_future.result()

        f = Future()
        f.set_result(5)
        f.add_done_callback(fn)
        assert 5 == callback_result[0]
Exemple #2
0
    def test_done_callback_with_cancel(self):
        was_cancelled = [None]

        def fn(callback_future):
            was_cancelled[0] = callback_future.cancelled()

        f = Future()
        f.add_done_callback(fn)
        assert f.cancel()
        assert was_cancelled[0]
Exemple #3
0
    def test_done_callback_with_exception(self):
        callback_exception = [None]

        def fn(callback_future):
            callback_exception[0] = callback_future.exception()

        f = Future()
        f.add_done_callback(fn)
        f.set_exception(Exception('test'))
        assert ('test', ) == callback_exception[0].args
Exemple #4
0
    def test_done_callback_with_result(self):
        callback_result = [None]

        def fn(callback_future):
            callback_result[0] = callback_future.result()

        f = Future()
        f.add_done_callback(fn)
        f.set_result(5)
        assert 5 == callback_result[0]
Exemple #5
0
    def test_done_callback_raises(self):
        # with captured_stderr() as stderr:
        raising_was_called = [False]
        fn_was_called = [False]

        def raising_fn(callback_future):
            raising_was_called[0] = True
            raise Exception('doh!')

        def fn(callback_future):
            fn_was_called[0] = True

        f = Future()
        f.add_done_callback(raising_fn)
        f.add_done_callback(fn)
        f.set_result(5)
        assert raising_was_called
        assert fn_was_called
Exemple #6
0
    def test_done_callback_raises(self):
        with captured_stderr() as stderr:
            import logging
            log = logging.getLogger("concurrent.futures")
            log.addHandler(logging.StreamHandler())
            raising_was_called = [False]
            fn_was_called = [False]

            def raising_fn(callback_future):
                raising_was_called[0] = True
                raise Exception('foobar')

            def fn(callback_future):
                fn_was_called[0] = True

            f = Future()
            f.add_done_callback(raising_fn)
            f.add_done_callback(fn)
            f.set_result(5)
            assert raising_was_called[0]
            assert fn_was_called[0]
            assert 'Exception: foobar' in stderr.getvalue()

            del log.handlers[:]