@@ -47,7 +47,7 @@ def skip_if_reactor_not(request, expected_reactor):
47
47
def skip_if_no_async_await ():
48
48
return pytest .mark .skipif (
49
49
not ASYNC_AWAIT ,
50
- reason = "async/await syntax not support on Python <3.5" ,
50
+ reason = "async/await syntax not supported on Python <3.5" ,
51
51
)
52
52
53
53
@@ -149,6 +149,28 @@ def test_succeed(foo):
149
149
assert_outcomes (rr , {"passed" : 2 , "failed" : 1 })
150
150
151
151
152
+ @skip_if_no_async_await ()
153
+ def test_async_await (testdir , cmd_opts ):
154
+ test_file = """
155
+ from twisted.internet import reactor, defer
156
+ import pytest
157
+ import pytest_twisted
158
+
159
+ @pytest.fixture(scope="module", params=["fs", "imap", "web"])
160
+ def foo(request):
161
+ return request.param
162
+
163
+ @pytest_twisted.ensureDeferred
164
+ async def test_succeed(foo):
165
+ await defer.succeed(foo)
166
+ if foo == "web":
167
+ raise RuntimeError("baz")
168
+ """
169
+ testdir .makepyfile (test_file )
170
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
171
+ assert_outcomes (rr , {"passed" : 2 , "failed" : 1 })
172
+
173
+
152
174
def test_twisted_greenlet (testdir , cmd_opts ):
153
175
test_file = """
154
176
import pytest, greenlet
@@ -194,6 +216,32 @@ def test_succeed(foo):
194
216
assert_outcomes (rr , {"passed" : 2 , "failed" : 1 })
195
217
196
218
219
+ @skip_if_no_async_await ()
220
+ def test_blockon_in_fixture_async (testdir , cmd_opts ):
221
+ test_file = """
222
+ from twisted.internet import reactor, defer
223
+ import pytest
224
+ import pytest_twisted
225
+
226
+ @pytest.fixture(scope="module", params=["fs", "imap", "web"])
227
+ def foo(request):
228
+ d1, d2 = defer.Deferred(), defer.Deferred()
229
+ reactor.callLater(0.01, d1.callback, 1)
230
+ reactor.callLater(0.02, d2.callback, request.param)
231
+ pytest_twisted.blockon(d1)
232
+ return d2
233
+
234
+ @pytest_twisted.ensureDeferred
235
+ async def test_succeed(foo):
236
+ x = await foo
237
+ if x == "web":
238
+ raise RuntimeError("baz")
239
+ """
240
+ testdir .makepyfile (test_file )
241
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
242
+ assert_outcomes (rr , {"passed" : 2 , "failed" : 1 })
243
+
244
+
197
245
@skip_if_no_async_await ()
198
246
def test_async_fixture (testdir , cmd_opts ):
199
247
test_file = """
0 commit comments