summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2018-07-04 09:35:40 +0100
committerRichard van der Hoff <richard@matrix.org>2018-07-04 09:40:01 +0100
commitea555d56331ad01edc9871ec7bf879df7d24dc7d (patch)
tree393232ee737cb5354fcc3516b16aa100a44adf96
parentReject invalid server names (#3480) (diff)
downloadsynapse-ea555d56331ad01edc9871ec7bf879df7d24dc7d.tar.xz
Reinstate lost run_on_reactor in unit test
a61738b removed a call to run_on_reactor from a unit test, but that call was
doing something useful, in making the function in question asynchronous.

Reinstate the call and add a check that we are testing what we wanted to be
testing.
Diffstat (limited to '')
-rw-r--r--changelog.d/3385.misc1
-rw-r--r--tests/util/caches/test_descriptors.py17
2 files changed, 16 insertions, 2 deletions
diff --git a/changelog.d/3385.misc b/changelog.d/3385.misc
new file mode 100644
index 0000000000..92a91a1ca5
--- /dev/null
+++ b/changelog.d/3385.misc
@@ -0,0 +1 @@
+Reinstate lost run_on_reactor in unit tests
diff --git a/tests/util/caches/test_descriptors.py b/tests/util/caches/test_descriptors.py
index 24754591df..a94d566c96 100644
--- a/tests/util/caches/test_descriptors.py
+++ b/tests/util/caches/test_descriptors.py
@@ -19,13 +19,19 @@ import logging
 import mock
 from synapse.api.errors import SynapseError
 from synapse.util import logcontext
-from twisted.internet import defer
+from twisted.internet import defer, reactor
 from synapse.util.caches import descriptors
 from tests import unittest
 
 logger = logging.getLogger(__name__)
 
 
+def run_on_reactor():
+    d = defer.Deferred()
+    reactor.callLater(0, d.callback, 0)
+    return logcontext.make_deferred_yieldable(d)
+
+
 class CacheTestCase(unittest.TestCase):
     def test_invalidate_all(self):
         cache = descriptors.Cache("testcache")
@@ -194,6 +200,8 @@ class DescriptorTestCase(unittest.TestCase):
             def fn(self, arg1):
                 @defer.inlineCallbacks
                 def inner_fn():
+                    # we want this to behave like an asynchronous function
+                    yield run_on_reactor()
                     raise SynapseError(400, "blah")
 
                 return inner_fn()
@@ -203,7 +211,12 @@ class DescriptorTestCase(unittest.TestCase):
             with logcontext.LoggingContext() as c1:
                 c1.name = "c1"
                 try:
-                    yield obj.fn(1)
+                    d = obj.fn(1)
+                    self.assertEqual(
+                        logcontext.LoggingContext.current_context(),
+                        logcontext.LoggingContext.sentinel,
+                    )
+                    yield d
                     self.fail("No exception thrown")
                 except SynapseError:
                     pass