From 092959ff1f9253347b01eeb2d6d72e15bad7e25a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Miro=20Hron=C4=8Dok?= Date: Sat, 25 Dec 2021 04:28:43 +0100 Subject: [PATCH] Support pytest 7 by fixing broken imports (GH-2705) The tmp_path related changes are not necessary to make pytest 7 work, but it feels more complete this way. --- tests/optional.py | 11 ++++++++--- tests/test_ipynb.py | 22 +++++++++++----------- tests/test_no_ipynb.py | 8 ++++---- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/tests/optional.py b/tests/optional.py index 1cddeea..a4e9441 100644 --- a/tests/optional.py +++ b/tests/optional.py @@ -21,7 +21,12 @@ import re from typing import FrozenSet, List, Set, TYPE_CHECKING import pytest -from _pytest.store import StoreKey + +try: + from pytest import StashKey +except ImportError: + # pytest < 7 + from _pytest.store import StoreKey as StashKey log = logging.getLogger(__name__) @@ -33,8 +38,8 @@ if TYPE_CHECKING: from _pytest.nodes import Node -ALL_POSSIBLE_OPTIONAL_MARKERS = StoreKey[FrozenSet[str]]() -ENABLED_OPTIONAL_MARKERS = StoreKey[FrozenSet[str]]() +ALL_POSSIBLE_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]() +ENABLED_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]() def pytest_addoption(parser: "Parser") -> None: diff --git a/tests/test_ipynb.py b/tests/test_ipynb.py index 141e865..fe8d67a 100644 --- a/tests/test_ipynb.py +++ b/tests/test_ipynb.py @@ -1,3 +1,4 @@ +import pathlib import re from click.testing import CliRunner @@ -12,7 +13,6 @@ from black import ( import pytest from black import Mode from _pytest.monkeypatch import MonkeyPatch -from py.path import local from tests.util import DATA_DIR pytestmark = pytest.mark.jupyter @@ -371,52 +371,52 @@ def test_ipynb_diff_with_no_change() -> None: def test_cache_isnt_written_if_no_jupyter_deps_single( - monkeypatch: MonkeyPatch, tmpdir: local + monkeypatch: MonkeyPatch, tmp_path: pathlib.Path ) -> None: # Check that the cache isn't written to if Jupyter dependencies aren't installed. jupyter_dependencies_are_installed.cache_clear() nb = DATA_DIR / "notebook_trailing_newline.ipynb" - tmp_nb = tmpdir / "notebook.ipynb" + tmp_nb = tmp_path / "notebook.ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) monkeypatch.setattr( "black.jupyter_dependencies_are_installed", lambda verbose, quiet: False ) - result = runner.invoke(main, [str(tmpdir / "notebook.ipynb")]) + result = runner.invoke(main, [str(tmp_path / "notebook.ipynb")]) assert "No Python files are present to be formatted. Nothing to do" in result.output jupyter_dependencies_are_installed.cache_clear() monkeypatch.setattr( "black.jupyter_dependencies_are_installed", lambda verbose, quiet: True ) - result = runner.invoke(main, [str(tmpdir / "notebook.ipynb")]) + result = runner.invoke(main, [str(tmp_path / "notebook.ipynb")]) assert "reformatted" in result.output def test_cache_isnt_written_if_no_jupyter_deps_dir( - monkeypatch: MonkeyPatch, tmpdir: local + monkeypatch: MonkeyPatch, tmp_path: pathlib.Path ) -> None: # Check that the cache isn't written to if Jupyter dependencies aren't installed. jupyter_dependencies_are_installed.cache_clear() nb = DATA_DIR / "notebook_trailing_newline.ipynb" - tmp_nb = tmpdir / "notebook.ipynb" + tmp_nb = tmp_path / "notebook.ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) monkeypatch.setattr( "black.files.jupyter_dependencies_are_installed", lambda verbose, quiet: False ) - result = runner.invoke(main, [str(tmpdir)]) + result = runner.invoke(main, [str(tmp_path)]) assert "No Python files are present to be formatted. Nothing to do" in result.output jupyter_dependencies_are_installed.cache_clear() monkeypatch.setattr( "black.files.jupyter_dependencies_are_installed", lambda verbose, quiet: True ) - result = runner.invoke(main, [str(tmpdir)]) + result = runner.invoke(main, [str(tmp_path)]) assert "reformatted" in result.output -def test_ipynb_flag(tmpdir: local) -> None: +def test_ipynb_flag(tmp_path: pathlib.Path) -> None: nb = DATA_DIR / "notebook_trailing_newline.ipynb" - tmp_nb = tmpdir / "notebook.a_file_extension_which_is_definitely_not_ipynb" + tmp_nb = tmp_path / "notebook.a_file_extension_which_is_definitely_not_ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) result = runner.invoke( diff --git a/tests/test_no_ipynb.py b/tests/test_no_ipynb.py index bcda2d5..b03b8e1 100644 --- a/tests/test_no_ipynb.py +++ b/tests/test_no_ipynb.py @@ -1,10 +1,10 @@ import pytest import os +import pathlib from tests.util import THIS_DIR from black import main, jupyter_dependencies_are_installed from click.testing import CliRunner -from _pytest.tmpdir import tmpdir pytestmark = pytest.mark.no_jupyter @@ -22,14 +22,14 @@ def test_ipynb_diff_with_no_change_single() -> None: assert expected_output in result.output -def test_ipynb_diff_with_no_change_dir(tmpdir: tmpdir) -> None: +def test_ipynb_diff_with_no_change_dir(tmp_path: pathlib.Path) -> None: jupyter_dependencies_are_installed.cache_clear() runner = CliRunner() nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb") - tmp_nb = tmpdir / "notebook.ipynb" + tmp_nb = tmp_path / "notebook.ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) - result = runner.invoke(main, [str(tmpdir)]) + result = runner.invoke(main, [str(tmp_path)]) expected_output = ( "Skipping .ipynb files as Jupyter dependencies are not installed.\n" "You can fix this by running ``pip install black[jupyter]``\n" -- 2.39.5