Skip to content

Commit dc67544

Browse files
authored
Merge pull request #184 from pytest-dev/less_return_value
become a full package... and `return` not `defer.returnValue()`
2 parents 23ba220 + cf1bd0c commit dc67544

File tree

6 files changed

+104
-59
lines changed

6 files changed

+104
-59
lines changed

.flake8

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[flake8]
2+
ignore =
3+
N802
4+
5+
per-file-ignores =
6+
src/pytest_twisted/__init__.py: F401

setup.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from setuptools import setup
1+
import setuptools
22

33
with open("README.rst") as f:
44
long_description = f.read()
55

6-
setup(
6+
setuptools.setup(
77
name="pytest-twisted",
88
version="1.14.2",
99
description="A twisted plugin for pytest.",
@@ -12,7 +12,8 @@
1212
author="Ralf Schmitt, Kyle Altendorf, Victor Titor",
1313
author_email="[email protected]",
1414
url="https://github.com/pytest-dev/pytest-twisted",
15-
py_modules=["pytest_twisted"],
15+
packages=setuptools.find_packages('src'),
16+
package_dir={'': 'src'},
1617
python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*',
1718
install_requires=["greenlet", "pytest>=2.3", "decorator"],
1819
extras_require={

pytest_twisted.py renamed to src/pytest_twisted/__init__.py

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@
1414
from twisted.internet.threads import blockingCallFromThread
1515
from twisted.python import failure
1616

17+
if sys.version_info[0] == 3:
18+
from pytest_twisted.three import (
19+
_async_pytest_fixture_setup,
20+
_async_pytest_pyfunc_call,
21+
)
22+
elif sys.version_info[0] == 2:
23+
from pytest_twisted.two import _async_pytest_pyfunc_call
24+
1725

1826
class WrongReactorAlreadyInstalledError(Exception):
1927
pass
@@ -308,36 +316,6 @@ def finalizer():
308316
return finalizer
309317

310318

311-
@defer.inlineCallbacks
312-
def _async_pytest_fixture_setup(fixturedef, request, mark):
313-
"""Setup an async or async yield fixture."""
314-
fixture_function = fixturedef.func
315-
316-
kwargs = {
317-
name: request.getfixturevalue(name)
318-
for name in fixturedef.argnames
319-
}
320-
321-
if mark == 'async_fixture':
322-
arg_value = yield defer.ensureDeferred(
323-
fixture_function(**kwargs)
324-
)
325-
elif mark == 'async_yield_fixture':
326-
coroutine = fixture_function(**kwargs)
327-
328-
request.addfinalizer(
329-
_create_async_yield_fixture_finalizer(coroutine=coroutine),
330-
)
331-
332-
arg_value = yield defer.ensureDeferred(coroutine.__anext__())
333-
else:
334-
raise UnrecognizedCoroutineMarkError.from_mark(mark=mark)
335-
336-
fixturedef.cached_result = (arg_value, fixturedef.cache_key(request), None)
337-
338-
defer.returnValue(arg_value)
339-
340-
341319
@defer.inlineCallbacks
342320
def _tear_it_down(deferred):
343321
"""Tear down a specific async yield fixture."""
@@ -402,28 +380,6 @@ def inner_test(**kwargs):
402380
return result
403381

404382

405-
@defer.inlineCallbacks
406-
def _async_pytest_pyfunc_call(pyfuncitem, f, kwargs):
407-
"""Run test function."""
408-
fixture_kwargs = {
409-
name: value
410-
for name, value in pyfuncitem.funcargs.items()
411-
if name in pyfuncitem._fixtureinfo.argnames
412-
}
413-
kwargs.update(fixture_kwargs)
414-
415-
maybe_mark = _get_mark(f)
416-
if maybe_mark == 'async_test':
417-
result = yield defer.ensureDeferred(f(**kwargs))
418-
elif maybe_mark == 'inline_callbacks_test':
419-
result = yield f(**kwargs)
420-
else:
421-
# TODO: maybe deprecate this
422-
result = yield f(**kwargs)
423-
424-
defer.returnValue(result)
425-
426-
427383
@pytest.fixture(scope="session", autouse=True)
428384
def twisted_greenlet():
429385
"""Provide the twisted greenlet in fixture form."""

src/pytest_twisted/three.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from twisted.internet import defer
2+
3+
4+
@defer.inlineCallbacks
5+
def _async_pytest_fixture_setup(fixturedef, request, mark):
6+
"""Setup an async or async yield fixture."""
7+
from pytest_twisted import (
8+
UnrecognizedCoroutineMarkError,
9+
_create_async_yield_fixture_finalizer,
10+
)
11+
12+
fixture_function = fixturedef.func
13+
14+
kwargs = {
15+
name: request.getfixturevalue(name)
16+
for name in fixturedef.argnames
17+
}
18+
19+
if mark == 'async_fixture':
20+
arg_value = yield defer.ensureDeferred(
21+
fixture_function(**kwargs)
22+
)
23+
elif mark == 'async_yield_fixture':
24+
coroutine = fixture_function(**kwargs)
25+
26+
request.addfinalizer(
27+
_create_async_yield_fixture_finalizer(coroutine=coroutine),
28+
)
29+
30+
arg_value = yield defer.ensureDeferred(coroutine.__anext__())
31+
else:
32+
raise UnrecognizedCoroutineMarkError.from_mark(mark=mark)
33+
34+
fixturedef.cached_result = (arg_value, fixturedef.cache_key(request), None)
35+
36+
return arg_value
37+
38+
39+
@defer.inlineCallbacks
40+
def _async_pytest_pyfunc_call(pyfuncitem, f, kwargs):
41+
"""Run test function."""
42+
from pytest_twisted import _get_mark
43+
44+
fixture_kwargs = {
45+
name: value
46+
for name, value in pyfuncitem.funcargs.items()
47+
if name in pyfuncitem._fixtureinfo.argnames
48+
}
49+
kwargs.update(fixture_kwargs)
50+
51+
maybe_mark = _get_mark(f)
52+
if maybe_mark == 'async_test':
53+
result = yield defer.ensureDeferred(f(**kwargs))
54+
elif maybe_mark == 'inline_callbacks_test':
55+
result = yield f(**kwargs)
56+
else:
57+
# TODO: maybe deprecate this
58+
result = yield f(**kwargs)
59+
60+
return result

src/pytest_twisted/two.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from twisted.internet import defer
2+
3+
4+
@defer.inlineCallbacks
5+
def _async_pytest_pyfunc_call(pyfuncitem, f, kwargs):
6+
"""Run test function."""
7+
from pytest_twisted import _get_mark
8+
9+
fixture_kwargs = {
10+
name: value
11+
for name, value in pyfuncitem.funcargs.items()
12+
if name in pyfuncitem._fixtureinfo.argnames
13+
}
14+
kwargs.update(fixture_kwargs)
15+
16+
maybe_mark = _get_mark(f)
17+
if maybe_mark == 'async_test':
18+
result = yield defer.ensureDeferred(f(**kwargs))
19+
elif maybe_mark == 'inline_callbacks_test':
20+
result = yield f(**kwargs)
21+
else:
22+
# TODO: maybe deprecate this
23+
result = yield f(**kwargs)
24+
25+
defer.returnValue(result)

tox.ini

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,4 @@ download=true
3030

3131
[testenv:linting]
3232
deps=flake8
33-
commands=flake8 setup.py pytest_twisted.py testing
34-
35-
[flake8]
36-
ignore=N802
33+
commands=flake8 setup.py src/pytest_twisted testing

0 commit comments

Comments
 (0)