@@ -10,12 +10,12 @@ def assert_outcomes(run_result, outcomes):
10
10
formatted_output = format_run_result_output_for_assert (run_result )
11
11
12
12
try :
13
- outcomes = run_result .parseoutcomes ()
13
+ result_outcomes = run_result .parseoutcomes ()
14
14
except ValueError :
15
15
assert False , formatted_output
16
16
17
17
for name , value in outcomes .items ():
18
- assert outcomes .get (name ) == value , formatted_output
18
+ assert result_outcomes .get (name ) == value , formatted_output
19
19
20
20
21
21
def format_run_result_output_for_assert (run_result ):
@@ -42,7 +42,12 @@ def skip_if_reactor_not(expected_reactor):
42
42
)
43
43
44
44
45
- def test_fail_later (testdir ):
45
+ @pytest .fixture
46
+ def cmd_opts (request ):
47
+ return '--reactor={}' .format (request .config .getoption ('reactor' )),
48
+
49
+
50
+ def test_fail_later (testdir , cmd_opts ):
46
51
testdir .makepyfile ("""
47
52
from twisted.internet import reactor, defer
48
53
@@ -57,11 +62,11 @@ def doit():
57
62
reactor.callLater(0.01, doit)
58
63
return d
59
64
""" )
60
- rr = testdir .run (sys .executable , "-m" , "pytest" )
65
+ rr = testdir .run (sys .executable , "-m" , "pytest" , * cmd_opts )
61
66
assert_outcomes (rr , {'failed' : 1 })
62
67
63
68
64
- def test_succeed_later (testdir ):
69
+ def test_succeed_later (testdir , cmd_opts ):
65
70
testdir .makepyfile ("""
66
71
from twisted.internet import reactor, defer
67
72
@@ -70,31 +75,31 @@ def test_succeed():
70
75
reactor.callLater(0.01, d.callback, 1)
71
76
return d
72
77
""" )
73
- rr = testdir .run (sys .executable , "-m" , "pytest" )
78
+ rr = testdir .run (sys .executable , "-m" , "pytest" , * cmd_opts )
74
79
assert_outcomes (rr , {'passed' : 1 })
75
80
76
81
77
- def test_non_deferred (testdir ):
82
+ def test_non_deferred (testdir , cmd_opts ):
78
83
testdir .makepyfile ("""
79
84
from twisted.internet import reactor, defer
80
85
81
86
def test_succeed():
82
87
return 42
83
88
""" )
84
- rr = testdir .run (sys .executable , "-m" , "pytest" )
89
+ rr = testdir .run (sys .executable , "-m" , "pytest" , * cmd_opts )
85
90
assert_outcomes (rr , {'passed' : 1 })
86
91
87
92
88
- def test_exception (testdir ):
93
+ def test_exception (testdir , cmd_opts ):
89
94
testdir .makepyfile ("""
90
95
def test_more_fail():
91
96
raise RuntimeError("foo")
92
97
""" )
93
- rr = testdir .run (sys .executable , "-m" , "pytest" )
98
+ rr = testdir .run (sys .executable , "-m" , "pytest" , * cmd_opts )
94
99
assert_outcomes (rr , {'failed' : 1 })
95
100
96
101
97
- def test_inlineCallbacks (testdir ):
102
+ def test_inlineCallbacks (testdir , cmd_opts ):
98
103
testdir .makepyfile ("""
99
104
from twisted.internet import reactor, defer
100
105
import pytest
@@ -112,11 +117,11 @@ def test_succeed(foo):
112
117
if foo == "web":
113
118
raise RuntimeError("baz")
114
119
""" )
115
- rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
120
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
116
121
assert_outcomes (rr , {'passed' : 2 , 'failed' : 1 })
117
122
118
123
119
- def test_twisted_greenlet (testdir ):
124
+ def test_twisted_greenlet (testdir , cmd_opts ):
120
125
testdir .makepyfile ("""
121
126
import pytest, greenlet
122
127
@@ -134,23 +139,50 @@ def test_MAIN():
134
139
assert MAIN is greenlet.getcurrent()
135
140
136
141
""" )
137
- rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
142
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
138
143
assert_outcomes (rr , {'passed' : 1 })
139
144
140
145
146
+ def test_blockon_in_fixture (testdir , cmd_opts ):
147
+ testdir .makepyfile ("""
148
+ from twisted.internet import reactor, defer
149
+ import pytest
150
+ import pytest_twisted
151
+
152
+ @pytest.fixture(scope="module",
153
+ params=["fs", "imap", "web"])
154
+ def foo(request):
155
+ d1, d2 = defer.Deferred(), defer.Deferred()
156
+ reactor.callLater(0.01, d1.callback, 1)
157
+ reactor.callLater(0.02, d2.callback, request.param)
158
+ pytest_twisted.blockon(d1)
159
+ return d2
160
+
161
+
162
+ @pytest_twisted.inlineCallbacks
163
+ def test_succeed(foo):
164
+ x = yield foo
165
+ if x == "web":
166
+ raise RuntimeError("baz")
167
+ """ )
168
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
169
+ # assert not rr
170
+ assert_outcomes (rr , {'passed' : 2 , 'failed' : 1 })
171
+
172
+
141
173
@skip_if_reactor_not ('default' )
142
- def test_blockon_in_hook (testdir ):
174
+ def test_blockon_in_hook (testdir , cmd_opts ):
143
175
testdir .makeconftest ("""
144
176
import pytest_twisted as pt
145
177
from twisted.internet import reactor, defer
146
178
147
179
def pytest_configure(config):
148
180
pt.init_default_reactor()
149
- d , d2 = defer.Deferred(), defer.Deferred()
150
- reactor.callLater(0.01, d .callback, 1)
181
+ d1 , d2 = defer.Deferred(), defer.Deferred()
182
+ reactor.callLater(0.01, d1 .callback, 1)
151
183
reactor.callLater(0.02, d2.callback, 1)
152
- pt.blockon(d )
153
- pt.blockon(d )
184
+ pt.blockon(d1 )
185
+ pt.blockon(d2 )
154
186
""" )
155
187
testdir .makepyfile ("""
156
188
from twisted.internet import reactor, defer
@@ -160,36 +192,35 @@ def test_succeed():
160
192
reactor.callLater(0.01, d.callback, 1)
161
193
return d
162
194
""" )
163
- rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
195
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
164
196
assert_outcomes (rr , {'passed' : 1 })
165
197
166
198
167
199
@skip_if_reactor_not ('default' )
168
- def test_wrong_reactor (testdir ):
169
- testdir .makepyfile ("""
200
+ def test_wrong_reactor (testdir , cmd_opts ):
201
+ testdir .makeconftest ("""
202
+ def pytest_addhooks():
170
203
import twisted.internet.reactor
171
204
twisted.internet.reactor = None
172
-
205
+ """ )
206
+ testdir .makepyfile ("""
173
207
def test_succeed():
174
208
pass
175
209
""" )
176
- rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
177
- assert 'WrongReactorAlreadyInstalledError' in rr .stdout .str ()
178
- assert_outcomes (rr , {'error' : 1 })
210
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
211
+ assert 'WrongReactorAlreadyInstalledError' in rr .stderr .str ()
179
212
180
213
181
214
@skip_if_reactor_not ('qt5reactor' )
182
- def test_blockon_in_hook_with_qt5reactor (testdir ):
215
+ def test_blockon_in_hook_with_qt5reactor (testdir , cmd_opts ):
183
216
testdir .makeconftest ("""
184
217
import pytest_twisted as pt
185
218
import pytestqt
186
219
from twisted.internet import defer
187
220
188
221
189
222
def pytest_configure(config):
190
- qapp = pytestqt.plugin.qapp(pytestqt.plugin.qapp_args())
191
-
192
- pt.init_qt5_reactor(qapp)
223
+ pt.init_qt5_reactor()
193
224
d = defer.Deferred()
194
225
195
226
from twisted.internet import reactor
@@ -204,26 +235,27 @@ def test_succeed():
204
235
reactor.callLater(0.01, d.callback, 1)
205
236
return d
206
237
""" )
207
- rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
238
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
208
239
assert_outcomes (rr , {'passed' : 1 })
209
240
210
241
211
242
@skip_if_reactor_not ('qt5reactor' )
212
- def test_wrong_reactor_with_qt5reactor (testdir ):
213
- testdir .makepyfile ("""
243
+ def test_wrong_reactor_with_qt5reactor (testdir , cmd_opts ):
244
+ testdir .makeconftest ("""
245
+ def pytest_addhooks():
214
246
import twisted.internet.default
215
247
twisted.internet.default.install()
216
-
248
+ """ )
249
+ testdir .makepyfile ("""
217
250
def test_succeed():
218
251
pass
219
252
""" )
220
- rr = testdir .run (
221
- sys .executable , "-m" , "pytest" , "-v" , "--reactor=qt5reactor"
222
- )
223
- assert 'WrongReactorAlreadyInstalledError' in rr .stdout .str ()
224
- assert_outcomes (rr , {'error' : 1 })
253
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" , * cmd_opts )
254
+ assert 'WrongReactorAlreadyInstalledError' in rr .stderr .str ()
255
+ # assert_outcomes(rr, {'error': 1})
225
256
226
257
258
+ @skip_if_reactor_not ('default' )
227
259
def test_pytest_from_reactor_thread (testdir ):
228
260
testdir .makepyfile ("""
229
261
import pytest
0 commit comments