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:
parent
ced2d65679
commit
092959ff1f
@ -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:
|
||||||
|
@ -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(
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user