All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
* fix: allow tests to be run from the tests/ directory
* fix: try fixing windows build with MarcoGorelli's suggestion
* Windows hotfix + better respect test's spirit
Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
DATA_DIR,
DEFAULT_MODE,
DETERMINISTIC_HEADER,
DATA_DIR,
DEFAULT_MODE,
DETERMINISTIC_HEADER,
PY36_VERSIONS,
THIS_DIR,
BlackBaseTestCase,
PY36_VERSIONS,
THIS_DIR,
BlackBaseTestCase,
"""
with patch.object(black, "parse_pyproject_toml", return_value={}) as parse:
args = ["--code", "print"]
"""
with patch.object(black, "parse_pyproject_toml", return_value={}) as parse:
args = ["--code", "print"]
- CliRunner().invoke(black.main, args)
+ # This is the only directory known to contain a pyproject.toml
+ with change_directory(PROJECT_ROOT):
+ CliRunner().invoke(black.main, args)
+ pyproject_path = Path(Path.cwd(), "pyproject.toml").resolve()
- pyproject_path = Path(Path().cwd(), "pyproject.toml").resolve()
assert (
len(parse.mock_calls) >= 1
), "Expected config parse to be called with the current directory."
assert (
len(parse.mock_calls) >= 1
), "Expected config parse to be called with the current directory."
Test that the code option finds the pyproject.toml in the parent directory.
"""
with patch.object(black, "parse_pyproject_toml", return_value={}) as parse:
Test that the code option finds the pyproject.toml in the parent directory.
"""
with patch.object(black, "parse_pyproject_toml", return_value={}) as parse:
- with change_directory(Path("tests")):
+ with change_directory(THIS_DIR):
args = ["--code", "print"]
CliRunner().invoke(black.main, args)
args = ["--code", "print"]
CliRunner().invoke(black.main, args)
from click.testing import CliRunner
from black.handle_ipynb_magics import jupyter_dependencies_are_installed
from black import (
from click.testing import CliRunner
from black.handle_ipynb_magics import jupyter_dependencies_are_installed
from black import (
format_file_contents,
format_file_in_place,
)
format_file_contents,
format_file_in_place,
)
import pytest
from black import Mode
from _pytest.monkeypatch import MonkeyPatch
from py.path import local
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
pytest.importorskip("IPython", reason="IPython is an optional dependency")
pytestmark = pytest.mark.jupyter
pytest.importorskip("IPython", reason="IPython is an optional dependency")
def test_entire_notebook_empty_metadata() -> None:
def test_entire_notebook_empty_metadata() -> None:
- with open(
- os.path.join("tests", "data", "notebook_empty_metadata.ipynb"), "rb"
- ) as fd:
+ with open(DATA_DIR / "notebook_empty_metadata.ipynb", "rb") as fd:
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
def test_entire_notebook_trailing_newline() -> None:
def test_entire_notebook_trailing_newline() -> None:
- with open(
- os.path.join("tests", "data", "notebook_trailing_newline.ipynb"), "rb"
- ) as fd:
+ with open(DATA_DIR / "notebook_trailing_newline.ipynb", "rb") as fd:
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
def test_entire_notebook_no_trailing_newline() -> None:
def test_entire_notebook_no_trailing_newline() -> None:
- with open(
- os.path.join("tests", "data", "notebook_no_trailing_newline.ipynb"), "rb"
- ) as fd:
+ with open(DATA_DIR / "notebook_no_trailing_newline.ipynb", "rb") as fd:
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
content_bytes = fd.read()
content = content_bytes.decode()
result = format_file_contents(content, fast=True, mode=JUPYTER_MODE)
def test_entire_notebook_without_changes() -> None:
def test_entire_notebook_without_changes() -> None:
- with open(
- os.path.join("tests", "data", "notebook_without_changes.ipynb"), "rb"
- ) as fd:
+ with open(DATA_DIR / "notebook_without_changes.ipynb", "rb") as fd:
content_bytes = fd.read()
content = content_bytes.decode()
with pytest.raises(NothingChanged):
content_bytes = fd.read()
content = content_bytes.decode()
with pytest.raises(NothingChanged):
def test_non_python_notebook() -> None:
def test_non_python_notebook() -> None:
- with open(os.path.join("tests", "data", "non_python_notebook.ipynb"), "rb") as fd:
+ with open(DATA_DIR / "non_python_notebook.ipynb", "rb") as fd:
content_bytes = fd.read()
content = content_bytes.decode()
with pytest.raises(NothingChanged):
content_bytes = fd.read()
content = content_bytes.decode()
with pytest.raises(NothingChanged):
def test_unparseable_notebook() -> None:
def test_unparseable_notebook() -> None:
- msg = (
- r"File 'tests[/\\]data[/\\]notebook_which_cant_be_parsed\.ipynb' "
- r"cannot be parsed as valid Jupyter notebook\."
- )
+ path = DATA_DIR / "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):
with pytest.raises(ValueError, match=msg):
- format_file_in_place(
- pathlib.Path("tests") / "data/notebook_which_cant_be_parsed.ipynb",
- fast=True,
- mode=JUPYTER_MODE,
- )
+ format_file_in_place(path, fast=True, mode=JUPYTER_MODE)
def test_ipynb_diff_with_change() -> None:
result = runner.invoke(
main,
[
def test_ipynb_diff_with_change() -> None:
result = runner.invoke(
main,
[
- os.path.join("tests", "data", "notebook_trailing_newline.ipynb"),
+ str(DATA_DIR / "notebook_trailing_newline.ipynb"),
result = runner.invoke(
main,
[
result = runner.invoke(
main,
[
- os.path.join("tests", "data", "notebook_without_changes.ipynb"),
+ str(DATA_DIR / "notebook_without_changes.ipynb"),
) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear()
) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear()
- nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb")
+ nb = DATA_DIR / "notebook_trailing_newline.ipynb"
tmp_nb = tmpdir / "notebook.ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
tmp_nb = tmpdir / "notebook.ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear()
) -> None:
# Check that the cache isn't written to if Jupyter dependencies aren't installed.
jupyter_dependencies_are_installed.cache_clear()
- nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb")
+ nb = DATA_DIR / "notebook_trailing_newline.ipynb"
tmp_nb = tmpdir / "notebook.ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
tmp_nb = tmpdir / "notebook.ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
def test_ipynb_flag(tmpdir: local) -> None:
def test_ipynb_flag(tmpdir: local) -> None:
- nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb")
+ nb = DATA_DIR / "notebook_trailing_newline.ipynb"
tmp_nb = tmpdir / "notebook.a_file_extension_which_is_definitely_not_ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
tmp_nb = tmpdir / "notebook.a_file_extension_which_is_definitely_not_ipynb"
with open(nb) as src, open(tmp_nb, "w") as dst:
dst.write(src.read())
def test_ipynb_and_pyi_flags() -> None:
def test_ipynb_and_pyi_flags() -> None:
- nb = os.path.join("tests", "data", "notebook_trailing_newline.ipynb")
+ nb = DATA_DIR / "notebook_trailing_newline.ipynb"
result = runner.invoke(
main,
[
result = runner.invoke(
main,
[
"--pyi",
"--ipynb",
"--diff",
"--pyi",
"--ipynb",
"--diff",