X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/2918ea3b079bbb617b2f9f0d5bc0b84fde04e48e..8900e3ac8a8f610d4c1b3fbe7bdf4f0358efc28d:/tests/test_ipynb.py?ds=sidebyside diff --git a/tests/test_ipynb.py b/tests/test_ipynb.py index b534d77..e1d7dd8 100644 --- a/tests/test_ipynb.py +++ b/tests/test_ipynb.py @@ -1,3 +1,4 @@ +import contextlib from dataclasses import replace import pathlib import re @@ -16,8 +17,10 @@ from black import ( import pytest from black import Mode from _pytest.monkeypatch import MonkeyPatch -from tests.util import DATA_DIR +from tests.util import DATA_DIR, read_jupyter_notebook, get_case_path +with contextlib.suppress(ModuleNotFoundError): + import IPython pytestmark = pytest.mark.jupyter pytest.importorskip("IPython", reason="IPython is an optional dependency") pytest.importorskip("tokenize_rt", reason="tokenize-rt is an optional dependency") @@ -139,10 +142,15 @@ def test_non_python_magics(src: str) -> None: format_cell(src, fast=True, mode=JUPYTER_MODE) +@pytest.mark.skipif( + IPython.version_info < (8, 3), + reason="Change in how TransformerManager transforms this input", +) def test_set_input() -> None: src = "a = b??" - with pytest.raises(NothingChanged): - format_cell(src, fast=True, mode=JUPYTER_MODE) + expected = "??b" + result = format_cell(src, fast=True, mode=JUPYTER_MODE) + assert result == expected def test_input_already_contains_transformed_magic() -> None: @@ -244,9 +252,7 @@ def test_empty_cell() -> None: def test_entire_notebook_empty_metadata() -> None: - with open(DATA_DIR / "notebook_empty_metadata.ipynb", "rb") as fd: - content_bytes = fd.read() - content = content_bytes.decode() + content = read_jupyter_notebook("jupyter", "notebook_empty_metadata") result = format_file_contents(content, fast=True, mode=JUPYTER_MODE) expected = ( "{\n" @@ -281,9 +287,7 @@ def test_entire_notebook_empty_metadata() -> None: def test_entire_notebook_trailing_newline() -> None: - with open(DATA_DIR / "notebook_trailing_newline.ipynb", "rb") as fd: - content_bytes = fd.read() - content = content_bytes.decode() + content = read_jupyter_notebook("jupyter", "notebook_trailing_newline") result = format_file_contents(content, fast=True, mode=JUPYTER_MODE) expected = ( "{\n" @@ -330,9 +334,7 @@ def test_entire_notebook_trailing_newline() -> None: def test_entire_notebook_no_trailing_newline() -> None: - with open(DATA_DIR / "notebook_no_trailing_newline.ipynb", "rb") as fd: - content_bytes = fd.read() - content = content_bytes.decode() + content = read_jupyter_notebook("jupyter", "notebook_no_trailing_newline") result = format_file_contents(content, fast=True, mode=JUPYTER_MODE) expected = ( "{\n" @@ -379,17 +381,14 @@ def test_entire_notebook_no_trailing_newline() -> None: def test_entire_notebook_without_changes() -> None: - with open(DATA_DIR / "notebook_without_changes.ipynb", "rb") as fd: - content_bytes = fd.read() - content = content_bytes.decode() + content = read_jupyter_notebook("jupyter", "notebook_without_changes") with pytest.raises(NothingChanged): format_file_contents(content, fast=True, mode=JUPYTER_MODE) def test_non_python_notebook() -> None: - with open(DATA_DIR / "non_python_notebook.ipynb", "rb") as fd: - content_bytes = fd.read() - content = content_bytes.decode() + content = read_jupyter_notebook("jupyter", "non_python_notebook") + with pytest.raises(NothingChanged): format_file_contents(content, fast=True, mode=JUPYTER_MODE) @@ -400,7 +399,7 @@ def test_empty_string() -> None: def test_unparseable_notebook() -> None: - path = DATA_DIR / "notebook_which_cant_be_parsed.ipynb" + path = get_case_path("jupyter", "notebook_which_cant_be_parsed.ipynb") msg = rf"File '{re.escape(str(path))}' cannot be parsed as valid Jupyter notebook\." with pytest.raises(ValueError, match=msg): format_file_in_place(path, fast=True, mode=JUPYTER_MODE) @@ -410,7 +409,7 @@ def test_ipynb_diff_with_change() -> None: result = runner.invoke( main, [ - str(DATA_DIR / "notebook_trailing_newline.ipynb"), + str(get_case_path("jupyter", "notebook_trailing_newline.ipynb")), "--diff", f"--config={EMPTY_CONFIG}", ], @@ -423,7 +422,7 @@ def test_ipynb_diff_with_no_change() -> None: result = runner.invoke( main, [ - str(DATA_DIR / "notebook_without_changes.ipynb"), + str(get_case_path("jupyter", "notebook_without_changes.ipynb")), "--diff", f"--config={EMPTY_CONFIG}", ], @@ -437,7 +436,7 @@ def test_cache_isnt_written_if_no_jupyter_deps_single( ) -> 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" + nb = get_case_path("jupyter", "notebook_trailing_newline.ipynb") tmp_nb = tmp_path / "notebook.ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) @@ -463,7 +462,7 @@ def test_cache_isnt_written_if_no_jupyter_deps_dir( ) -> 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" + nb = get_case_path("jupyter", "notebook_trailing_newline.ipynb") tmp_nb = tmp_path / "notebook.ipynb" with open(nb) as src, open(tmp_nb, "w") as dst: dst.write(src.read()) @@ -481,7 +480,7 @@ def test_cache_isnt_written_if_no_jupyter_deps_dir( def test_ipynb_flag(tmp_path: pathlib.Path) -> None: - nb = DATA_DIR / "notebook_trailing_newline.ipynb" + nb = get_case_path("jupyter", "notebook_trailing_newline.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()) @@ -499,7 +498,7 @@ def test_ipynb_flag(tmp_path: pathlib.Path) -> None: def test_ipynb_and_pyi_flags() -> None: - nb = DATA_DIR / "notebook_trailing_newline.ipynb" + nb = get_case_path("jupyter", "notebook_trailing_newline.ipynb") result = runner.invoke( main, [