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.
This commit is contained in:
Miro Hrončok 2021-12-25 04:28:43 +01:00 committed by GitHub
parent ced2d65679
commit 092959ff1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 18 deletions

View File

@ -21,7 +21,12 @@
from typing import FrozenSet, List, Set, TYPE_CHECKING from typing import FrozenSet, List, Set, TYPE_CHECKING
import pytest 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__) log = logging.getLogger(__name__)
@ -33,8 +38,8 @@
from _pytest.nodes import Node from _pytest.nodes import Node
ALL_POSSIBLE_OPTIONAL_MARKERS = StoreKey[FrozenSet[str]]() ALL_POSSIBLE_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]()
ENABLED_OPTIONAL_MARKERS = StoreKey[FrozenSet[str]]() ENABLED_OPTIONAL_MARKERS = StashKey[FrozenSet[str]]()
def pytest_addoption(parser: "Parser") -> None: def pytest_addoption(parser: "Parser") -> None:

View File

@ -1,3 +1,4 @@
import pathlib
import re import re
from click.testing import CliRunner from click.testing import CliRunner
@ -12,7 +13,6 @@
import pytest import pytest
from black import Mode from black import Mode
from _pytest.monkeypatch import MonkeyPatch from _pytest.monkeypatch import MonkeyPatch
from py.path import local
from tests.util import DATA_DIR from tests.util import DATA_DIR
pytestmark = pytest.mark.jupyter 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( def test_cache_isnt_written_if_no_jupyter_deps_single(
monkeypatch: MonkeyPatch, tmpdir: local monkeypatch: MonkeyPatch, tmp_path: pathlib.Path
) -> None: ) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed. # Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear() jupyter_dependencies_are_installed.cache_clear()
nb = DATA_DIR / "notebook_trailing_newline.ipynb" 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: with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read()) dst.write(src.read())
monkeypatch.setattr( monkeypatch.setattr(
"black.jupyter_dependencies_are_installed", lambda verbose, quiet: False "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 assert "No Python files are present to be formatted. Nothing to do" in result.output
jupyter_dependencies_are_installed.cache_clear() jupyter_dependencies_are_installed.cache_clear()
monkeypatch.setattr( monkeypatch.setattr(
"black.jupyter_dependencies_are_installed", lambda verbose, quiet: True "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 assert "reformatted" in result.output
def test_cache_isnt_written_if_no_jupyter_deps_dir( def test_cache_isnt_written_if_no_jupyter_deps_dir(
monkeypatch: MonkeyPatch, tmpdir: local monkeypatch: MonkeyPatch, tmp_path: pathlib.Path
) -> None: ) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed. # Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear() jupyter_dependencies_are_installed.cache_clear()
nb = DATA_DIR / "notebook_trailing_newline.ipynb" 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: with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read()) dst.write(src.read())
monkeypatch.setattr( monkeypatch.setattr(
"black.files.jupyter_dependencies_are_installed", lambda verbose, quiet: False "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 assert "No Python files are present to be formatted. Nothing to do" in result.output
jupyter_dependencies_are_installed.cache_clear() jupyter_dependencies_are_installed.cache_clear()
monkeypatch.setattr( monkeypatch.setattr(
"black.files.jupyter_dependencies_are_installed", lambda verbose, quiet: True "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 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" 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: with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read()) dst.write(src.read())
result = runner.invoke( result = runner.invoke(

View File

@ -1,10 +1,10 @@
import pytest import pytest
import os import os
import pathlib
from tests.util import THIS_DIR from tests.util import THIS_DIR
from black import main, jupyter_dependencies_are_installed from black import main, jupyter_dependencies_are_installed
from click.testing import CliRunner from click.testing import CliRunner
from _pytest.tmpdir import tmpdir
pytestmark = pytest.mark.no_jupyter pytestmark = pytest.mark.no_jupyter
@ -22,14 +22,14 @@ def test_ipynb_diff_with_no_change_single() -> None:
assert expected_output in result.output 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() jupyter_dependencies_are_installed.cache_clear()
runner = CliRunner() runner = CliRunner()
nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb") 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: with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read()) dst.write(src.read())
result = runner.invoke(main, [str(tmpdir)]) result = runner.invoke(main, [str(tmp_path)])
expected_output = ( expected_output = (
"Skipping .ipynb files as Jupyter dependencies are not installed.\n" "Skipping .ipynb files as Jupyter dependencies are not installed.\n"
"You can fix this by running ``pip install black[jupyter]``\n" "You can fix this by running ``pip install black[jupyter]``\n"