DATA_DIR,
     DEFAULT_MODE,
     DETERMINISTIC_HEADER,
+    PROJECT_ROOT,
     PY36_VERSIONS,
     THIS_DIR,
     BlackBaseTestCase,
         """
         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."
         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)
 
 
-import pathlib
+import re
+
 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,
 )
-import os
 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")
 
 
 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)
 
 
 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)
 
 
 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)
 
 
 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):
 
 
 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):
 
 
 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):
-        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,
         [
-            os.path.join("tests", "data", "notebook_trailing_newline.ipynb"),
+            str(DATA_DIR / "notebook_trailing_newline.ipynb"),
             "--diff",
         ],
     )
     result = runner.invoke(
         main,
         [
-            os.path.join("tests", "data", "notebook_without_changes.ipynb"),
+            str(DATA_DIR / "notebook_without_changes.ipynb"),
             "--diff",
         ],
     )
 ) -> 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())
 ) -> 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())
 
 
 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())
 
 
 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,
         [
-            nb,
+            str(nb),
             "--pyi",
             "--ipynb",
             "--diff",