2
2
3
3
import sys
4
4
5
+ import pytest
6
+
7
+
8
+ def skip_if_reactor_not (expected_reactor ):
9
+ actual_reactor = pytest .config .getoption ('reactor' )
10
+ return pytest .mark .skipif (
11
+ actual_reactor != expected_reactor ,
12
+ reason = 'reactor is {0} not {1}' .format (
13
+ actual_reactor ,
14
+ expected_reactor ,
15
+ ),
16
+ )
17
+
5
18
6
19
def test_fail_later (testdir ):
7
20
testdir .makepyfile ("""
@@ -106,6 +119,7 @@ def test_MAIN():
106
119
assert outcomes .get ("passed" ) == 1
107
120
108
121
122
+ @skip_if_reactor_not ('default' )
109
123
def test_blockon_in_hook (testdir ):
110
124
testdir .makeconftest ("""
111
125
import pytest_twisted as pt
@@ -130,6 +144,54 @@ def test_succeed():
130
144
assert outcomes .get ("passed" ) == 1
131
145
132
146
147
+ @skip_if_reactor_not ('qt5reactor' )
148
+ def test_blockon_in_hook_with_qt5reactor (testdir ):
149
+ testdir .makeconftest ("""
150
+ import pytest_twisted as pt
151
+ import pytestqt
152
+ from twisted.internet import defer
153
+
154
+
155
+ def pytest_configure(config):
156
+ qapp = pytestqt.plugin.qapp(pytestqt.plugin.qapp_args())
157
+
158
+ pt.init_qt5_reactor(qapp)
159
+ d = defer.Deferred()
160
+
161
+ from twisted.internet import reactor
162
+ reactor.callLater(0.01, d.callback, 1)
163
+ pt.blockon(d)
164
+ """ )
165
+ testdir .makepyfile ("""
166
+ from twisted.internet import reactor, defer
167
+
168
+ def test_succeed():
169
+ d = defer.Deferred()
170
+ reactor.callLater(0.01, d.callback, 1)
171
+ return d
172
+ """ )
173
+ rr = testdir .run (sys .executable , "-m" , "pytest" , "-v" )
174
+ outcomes = rr .parseoutcomes ()
175
+ assert outcomes .get ("passed" ) == 1
176
+
177
+
178
+ @skip_if_reactor_not ('qt5reactor' )
179
+ def test_wrong_reactor_with_qt5reactor (testdir ):
180
+ testdir .makepyfile ("""
181
+ import twisted.internet.default
182
+ twisted.internet.default.install()
183
+
184
+ def test_succeed():
185
+ pass
186
+ """ )
187
+ rr = testdir .run (
188
+ sys .executable , "-m" , "pytest" , "-v" , "--reactor=qt5reactor"
189
+ )
190
+ outcomes = rr .parseoutcomes ()
191
+ assert 'WrongReactorAlreadyInstalledError' in rr .stdout .str ()
192
+ assert outcomes .get ("error" ) == 1
193
+
194
+
133
195
def test_pytest_from_reactor_thread (testdir ):
134
196
testdir .makepyfile ("""
135
197
import pytest
0 commit comments