Skip to content

Commit

Permalink
tmpdir: clean up indirection via config for factories (#6767)
Browse files Browse the repository at this point in the history
Remove `_tmp_path_factory` and `_tmpdirhandler` from the config object.

- `_tmpdirhandler` has been deprecated since 2.8.0 (0f52856), when
  `tmpdir_factory` has been added.
- `_tmp_path_factory` should have probably never been added there in the
  first place, but maybe just used the same pattern (16e2737).
  • Loading branch information
blueyed committed Feb 20, 2020
1 parent 82f5986 commit 8a1633c
Showing 1 changed file with 3 additions and 21 deletions.
24 changes: 3 additions & 21 deletions src/_pytest/tmpdir.py
Expand Up @@ -14,7 +14,6 @@
from .pathlib import make_numbered_dir_with_cleanup
from .pathlib import Path
from _pytest.fixtures import FixtureRequest
from _pytest.monkeypatch import MonkeyPatch


@attr.s
Expand Down Expand Up @@ -135,35 +134,18 @@ def get_user() -> Optional[str]:
return None


def pytest_configure(config) -> None:
"""Create a TempdirFactory and attach it to the config object.
This is to comply with existing plugins which expect the handler to be
available at pytest_configure time, but ideally should be moved entirely
to the tmpdir_factory session fixture.
"""
mp = MonkeyPatch()
tmppath_handler = TempPathFactory.from_config(config)
t = TempdirFactory(tmppath_handler)
config._cleanup.append(mp.undo)
mp.setattr(config, "_tmp_path_factory", tmppath_handler, raising=False)
mp.setattr(config, "_tmpdirhandler", t, raising=False)


@pytest.fixture(scope="session")
def tmpdir_factory(request: FixtureRequest) -> TempdirFactory:
def tmpdir_factory(tmp_path_factory) -> TempdirFactory:
"""Return a :class:`_pytest.tmpdir.TempdirFactory` instance for the test session.
"""
# Set dynamically by pytest_configure() above.
return request.config._tmpdirhandler # type: ignore
return TempdirFactory(tmp_path_factory)


@pytest.fixture(scope="session")
def tmp_path_factory(request: FixtureRequest) -> TempPathFactory:
"""Return a :class:`_pytest.tmpdir.TempPathFactory` instance for the test session.
"""
# Set dynamically by pytest_configure() above.
return request.config._tmp_path_factory # type: ignore
return TempPathFactory.from_config(request.config)


def _mk_tmp(request: FixtureRequest, factory: TempPathFactory) -> Path:
Expand Down

0 comments on commit 8a1633c

Please sign in to comment.