Skip to content

Commit 32f4808

Browse files
authored
Merge pull request #11209 from bluetech/fixtures-doc-comments
fixtures: some tweaks & improvements
2 parents 78d81ef + 40ed678 commit 32f4808

File tree

9 files changed

+120
-75
lines changed

9 files changed

+120
-75
lines changed

changelog/11208.trivial.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
The (internal) ``FixtureDef.cached_result`` type has changed.
2+
Now the third item ``cached_result[2]``, when set, is an exception instance instead of an exception triplet.

changelog/7469.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
:class:`~pytest.FixtureDef` is now exported as ``pytest.FixtureDef`` for typing purposes.

doc/en/reference/reference.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ ExitCode
910910
FixtureDef
911911
~~~~~~~~~~
912912

913-
.. autoclass:: _pytest.fixtures.FixtureDef()
913+
.. autoclass:: pytest.FixtureDef()
914914
:members:
915915
:show-inheritance:
916916

src/_pytest/compat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def is_async_function(func: object) -> bool:
6868
return iscoroutinefunction(func) or inspect.isasyncgenfunction(func)
6969

7070

71-
def getlocation(function, curdir: str | None = None) -> str:
71+
def getlocation(function, curdir: str | os.PathLike[str] | None = None) -> str:
7272
function = get_real_func(function)
7373
fn = Path(inspect.getfile(function))
7474
lineno = function.__code__.co_firstlineno

src/_pytest/doctest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ def func() -> None:
582582
doctest_item._fixtureinfo = fm.getfixtureinfo( # type: ignore[attr-defined]
583583
node=doctest_item, func=func, cls=None, funcargs=False
584584
)
585-
fixture_request = FixtureRequest(doctest_item, _ispytest=True)
585+
fixture_request = FixtureRequest(doctest_item, _ispytest=True) # type: ignore[arg-type]
586586
fixture_request._fillfixtures()
587587
return fixture_request
588588

src/_pytest/fixtures.py

Lines changed: 102 additions & 72 deletions
Large diffs are not rendered by default.

src/pytest/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from _pytest.debugging import pytestPDB as __pytestPDB
2121
from _pytest.doctest import DoctestItem
2222
from _pytest.fixtures import fixture
23+
from _pytest.fixtures import FixtureDef
2324
from _pytest.fixtures import FixtureLookupError
2425
from _pytest.fixtures import FixtureRequest
2526
from _pytest.fixtures import yield_fixture
@@ -102,6 +103,7 @@
102103
"fail",
103104
"File",
104105
"fixture",
106+
"FixtureDef",
105107
"FixtureLookupError",
106108
"FixtureRequest",
107109
"freeze_includes",

testing/python/fixtures.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ def test_method(self, something):
699699
"""
700700
)
701701
(item1,) = pytester.genitems([modcol])
702+
assert isinstance(item1, Function)
702703
assert item1.name == "test_method"
703704
arg2fixturedefs = fixtures.FixtureRequest(
704705
item1, _ispytest=True
@@ -967,6 +968,7 @@ def test_second():
967968
def test_request_getmodulepath(self, pytester: Pytester) -> None:
968969
modcol = pytester.getmodulecol("def test_somefunc(): pass")
969970
(item,) = pytester.genitems([modcol])
971+
assert isinstance(item, Function)
970972
req = fixtures.FixtureRequest(item, _ispytest=True)
971973
assert req.path == modcol.path
972974

@@ -1125,6 +1127,7 @@ def test_func2(self, something):
11251127
pass
11261128
"""
11271129
)
1130+
assert isinstance(item1, Function)
11281131
req1 = fixtures.FixtureRequest(item1, _ispytest=True)
11291132
assert "xfail" not in item1.keywords
11301133
req1.applymarker(pytest.mark.xfail)
@@ -4009,6 +4012,7 @@ def test_func(m1):
40094012
"""
40104013
)
40114014
items, _ = pytester.inline_genitems()
4015+
assert isinstance(items[0], Function)
40124016
request = FixtureRequest(items[0], _ispytest=True)
40134017
assert request.fixturenames == "m1 f1".split()
40144018

@@ -4057,6 +4061,7 @@ def test_foo(f1, p1, m1, f2, s1): pass
40574061
"""
40584062
)
40594063
items, _ = pytester.inline_genitems()
4064+
assert isinstance(items[0], Function)
40604065
request = FixtureRequest(items[0], _ispytest=True)
40614066
# order of fixtures based on their scope and position in the parameter list
40624067
assert (
@@ -4084,6 +4089,7 @@ def test_func(f1, m1):
40844089
"""
40854090
)
40864091
items, _ = pytester.inline_genitems()
4092+
assert isinstance(items[0], Function)
40874093
request = FixtureRequest(items[0], _ispytest=True)
40884094
assert request.fixturenames == "m1 f1".split()
40894095

@@ -4117,6 +4123,7 @@ def test_func(self, f2, f1, c1, m1, s1):
41174123
"""
41184124
)
41194125
items, _ = pytester.inline_genitems()
4126+
assert isinstance(items[0], Function)
41204127
request = FixtureRequest(items[0], _ispytest=True)
41214128
assert request.fixturenames == "s1 m1 c1 f2 f1".split()
41224129

@@ -4159,6 +4166,7 @@ def test_func(m_test, f1):
41594166
}
41604167
)
41614168
items, _ = pytester.inline_genitems()
4169+
assert isinstance(items[0], Function)
41624170
request = FixtureRequest(items[0], _ispytest=True)
41634171
assert request.fixturenames == "p_sub m_conf m_sub m_test f1".split()
41644172

@@ -4203,6 +4211,7 @@ def test_func(self, f2, f1, m2):
42034211
"""
42044212
)
42054213
items, _ = pytester.inline_genitems()
4214+
assert isinstance(items[0], Function)
42064215
request = FixtureRequest(items[0], _ispytest=True)
42074216
assert request.fixturenames == "s1 p1 m1 m2 c1 f2 f1".split()
42084217

testing/test_legacypath.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def test_cache_makedir(cache: pytest.Cache) -> None:
9090
def test_fixturerequest_getmodulepath(pytester: pytest.Pytester) -> None:
9191
modcol = pytester.getmodulecol("def test_somefunc(): pass")
9292
(item,) = pytester.genitems([modcol])
93+
assert isinstance(item, pytest.Function)
9394
req = pytest.FixtureRequest(item, _ispytest=True)
9495
assert req.path == modcol.path
9596
assert req.fspath == modcol.fspath # type: ignore[attr-defined]

0 commit comments

Comments
 (0)