Skip to content

Commit 53db231

Browse files
authored
Merge pull request #54 from George-Ogden/pytester
Allow `conftest` fixtures
2 parents d5786e4 + 0279fed commit 53db231

17 files changed

Lines changed: 52 additions & 25 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
tmp.py
33
log.txt
44
stdout.txt
5+
out.txt
56
stderr.txt
7+
err.txt
68
notes.txt
79
TODO
810
*.pseudo
911
*.patch
12+
nohup*
1013

1114
### Python ###
1215
# Byte-compiled / optimized / DLL files

.mirror.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# DANGER: EDIT AT YOUR OWN RISK. Track this file in version control so that others can sync files correctly.
2-
- commit: 4bf378ac9f437becb4c869e3b2b09c8f3adbc074
2+
- commit: 4519f0a82ab20cd50ec11c717ac75abcff7ea16c
33
files:
44
- .github/python-release.yaml
55
- .github/python-test.yaml

mypy_pytest_plugin/fixture_manager.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,24 @@ def resolution_sequence(cls, name: Fullname) -> Iterable[Fullname]:
4141
@functools.lru_cache
4242
def default_fixture_module_names(cls) -> Sequence[Fullname]:
4343
config = _pytest.config.get_config()
44-
config.parse(["-s", "--fixtures", "--noconftest"])
44+
config.parse(["-s", "--fixtures"])
4545

4646
session = Session.from_config(config)
4747
fixture_manager = PytestFixtureManager(session)
4848
return tuple(
4949
{
50-
cls._fixture_module(fixture_defs[-1])
50+
module
5151
for fixture_defs in fixture_manager._arg2fixturedefs.values()
52+
if (module := cls._fixture_module(fixture_defs[-1])) is not None
5253
}
5354
)
5455

5556
@classmethod
56-
def _fixture_module(cls, fixture: FixtureDef) -> Fullname:
57-
return Fullname.from_string(fixture.func.__module__)
57+
def _fixture_module(cls, fixture: FixtureDef) -> Fullname | None:
58+
module = Fullname.from_string(fixture.func.__module__)
59+
if module == Fullname.from_string("conftest"):
60+
return None
61+
return module
5862

5963
@filter_unique
6064
def autouse_fixture_names(self, test_module: Fullname) -> Iterable[str]:

mypy_pytest_plugin/fixture_manager_test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,10 @@ def test_fixture_manager_default_fixture_module_names() -> None:
7272
"_pytest.doctest",
7373
"_pytest.fixtures",
7474
"_pytest.junitxml",
75+
"_pytest.legacypath",
7576
"_pytest.logging",
7677
"_pytest.monkeypatch",
78+
"_pytest.pytester",
7779
"_pytest.recwarn",
7880
"_pytest.subtests",
7981
"_pytest.tmpdir",

mypy_pytest_plugin/pytest_config_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class PytestConfigManager:
99
@functools.cache
1010
def session(cls) -> Session:
1111
config = _pytest.config.get_config()
12-
config.parse(["-s", "--noconftest"])
12+
config.parse(["-s"])
1313
return Session.from_config(config)
1414

1515
@classmethod

requirements-dev.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
-r requirements.txt
2-
git+https://github.com/George-Ogden/mirror-rorrim
2+
git+https://github.com/George-Ogden/mirror-rorrim; python_version >= "3.12"
3+
git+https://github.com/George-Ogden/mypy-pytest; python_version >= "3.12"
34
git+https://github.com/George-Ogden/pytest-dbg
45
inline-snapshot
56
pip
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import pytest
2+
3+
4+
@pytest.mark.skip
5+
def test_case() -> int:
6+
return 0
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import pytest
2+
3+
4+
@pytest.fixture
5+
@pytest.mark.skip
6+
def fixture_and_mark() -> None: ...

test_samples/conftest.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ def indirect_int_fixture(base_int_fixture: int) -> int:
1212
return base_int_fixture + 1
1313

1414

15-
@pytest.fixture
16-
@pytest.mark.skip
17-
def fixture_and_mark() -> None: ...
18-
19-
2015
def missed_fixture_decorator_in_another_file() -> int:
2116
return 0
2217

@@ -41,3 +36,6 @@ def ordered_fixture1() -> Literal[0]:
4136
@pytest.fixture
4237
def ordered_fixture2() -> Literal[1]:
4338
return 1
39+
40+
41+
pytest_plugins = "pytester"

test_samples/valid_test.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from typing import Literal
2-
from pytest import CaptureFixture
2+
from pytest import CaptureFixture, Pytester
33

44
import pytest
55

@@ -38,3 +38,7 @@ def test_iterable_sequence_builtin() -> None:
3838

3939

4040
def test_use_builtin_fixture(capsys: CaptureFixture[str]) -> None: ...
41+
42+
43+
@pytest.mark.skip
44+
def test_pytester_fixture(pytester: Pytester) -> None: ...

0 commit comments

Comments
 (0)