1
+ import inspect
2
+
1
3
import decorator
2
4
import greenlet
3
5
import pytest
@@ -117,26 +119,53 @@ def twisted_greenlet(request, reactor):
117
119
return _instances .gr_twisted
118
120
119
121
120
- def init_reactor ():
122
+ def init_default_reactor ():
123
+ import twisted .internet .default
124
+
125
+ module = inspect .getmodule (twisted .internet .default .install )
126
+
127
+ module_name = module .__name__ .split ('.' )[- 1 ]
128
+ reactor_type_name , = (
129
+ x
130
+ for x in dir (module )
131
+ if x .lower () == module_name
132
+ )
133
+ reactor_type = getattr (module , reactor_type_name )
134
+
135
+ _install_reactor (
136
+ reactor_installer = twisted .internet .default .install ,
137
+ reactor_type = reactor_type ,
138
+ )
139
+
140
+
141
+ def init_qt5_reactor (qapp ):
142
+ import qt5reactor
143
+
144
+ _install_reactor (
145
+ reactor_installer = qt5reactor .install ,
146
+ reactor_type = qt5reactor .QtReactor ,
147
+ )
148
+
149
+
150
+ def _init_reactor ():
121
151
import twisted .internet .reactor
122
152
_instances .reactor = twisted .internet .reactor
123
153
init_twisted_greenlet ()
124
154
125
155
126
- def init_qt5_reactor (qapp ):
127
- import qt5reactor
156
+ def _install_reactor (reactor_installer , reactor_type ):
128
157
try :
129
- qt5reactor . install ()
158
+ reactor_installer ()
130
159
except error .ReactorAlreadyInstalledError :
131
160
import twisted .internet .reactor
132
- if not isinstance (twisted .internet .reactor , qt5reactor . QtReactor ):
161
+ if not isinstance (twisted .internet .reactor , reactor_type ):
133
162
raise WrongReactorAlreadyInstalledError (
134
163
'expected {0} but found {1}' .format (
135
- qt5reactor . QtReactor ,
164
+ reactor_type ,
136
165
type (twisted .internet .reactor ),
137
166
)
138
167
)
139
- init_reactor ()
168
+ _init_reactor ()
140
169
141
170
142
171
def pytest_addoption (parser ):
@@ -150,7 +179,7 @@ def pytest_addoption(parser):
150
179
151
180
def pytest_configure (config ):
152
181
reactor_fixture = {
153
- 'default' : init_reactor ,
182
+ 'default' : init_default_reactor ,
154
183
'qt5reactor' : init_qt5_reactor ,
155
184
}[config .getoption ('reactor' )]
156
185
0 commit comments