summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2017-10-17 10:52:31 +0100
committerRichard van der Hoff <richard@matrix.org>2017-10-17 10:52:31 +0100
commit5b5f35ccc0cdd74fe8c8902988da222a7b8e2a67 (patch)
treec0f23eb51c314ea56c2457419ead56043faec8ce
parentMerge pull request #2544 from matrix-org/luke/groups-invited-users (diff)
downloadsynapse-5b5f35ccc0cdd74fe8c8902988da222a7b8e2a67.tar.xz
Add some tests for make_deferred_yieldable
-rw-r--r--tests/util/test_log_context.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/util/test_log_context.py b/tests/util/test_log_context.py

index 9ffe209c4d..e2f7765f49 100644 --- a/tests/util/test_log_context.py +++ b/tests/util/test_log_context.py
@@ -94,3 +94,41 @@ class LoggingContextTestCase(unittest.TestCase): yield defer.succeed(None) return self._test_preserve_fn(nonblocking_function) + + @defer.inlineCallbacks + def test_make_deferred_yieldable(self): + # a function which retuns an incomplete deferred, but doesn't follow + # the synapse rules. + def blocking_function(): + d = defer.Deferred() + reactor.callLater(0, d.callback, None) + return d + + sentinel_context = LoggingContext.current_context() + + with LoggingContext() as context_one: + context_one.test_key = "one" + + d1 = logcontext.make_deferred_yieldable(blocking_function()) + # make sure that the context was reset by make_deferred_yieldable + self.assertIs(LoggingContext.current_context(), sentinel_context) + + yield d1 + + # now it should be restored + self._check_test_key("one") + + @defer.inlineCallbacks + def test_make_deferred_yieldable_on_non_deferred(self): + """Check that make_deferred_yieldable does the right thing when its + argument isn't actually a deferred""" + + with LoggingContext() as context_one: + context_one.test_key = "one" + + d1 = logcontext.make_deferred_yieldable("bum") + self._check_test_key("one") + + r = yield d1 + self.assertEqual(r, "bum") + self._check_test_key("one")