Add tests for the initialisation of CSS_PATH

This improves coverage of _make_path_object_relative in _path.py, and
generally provides some simple tests of how CSS_PATH gets turned into a
css_path property of an App.

Note that if an actual CSS path gets added (something that has been mooted)
this will need updating.
This commit is contained in:
Dave Pearson
2022-10-24 09:39:17 +01:00
parent 5057a6b307
commit 6c9a1a6e5d

43
tests/test_path.py Normal file
View File

@@ -0,0 +1,43 @@
from typing import Type
from pathlib import Path
from textual.app import App
class RelativePathObjectApp(App[None]):
CSS_PATH = Path("test.css")
class RelativePathStrApp(App[None]):
CSS_PATH = "test.css"
class AbsolutePathObjectApp(App[None]):
CSS_PATH = Path("/tmp/test.css")
class AbsolutePathStrApp(App[None]):
CSS_PATH = "/tmp/test.css"
def path_tester(obj_type: Type[App[None]], str_type: Type[App[None]], intended_result: Path) -> None:
assert isinstance(obj_type().css_path,Path), (
"CSS_PATH didn't stay as an object"
)
assert isinstance(str_type().css_path,Path), (
"CSS_PATH wasn't converted from str to Path"
)
assert obj_type().css_path == intended_result, (
"CSS_PATH doesn't match the intended result."
)
assert str_type().css_path == intended_result, (
"CSS_PATH doesn't match the intended result."
)
assert str_type().css_path == obj_type().css_path, (
"CSS_PATH str to Path conversion gave a different result"
)
def test_relative_path():
path_tester(RelativePathObjectApp, RelativePathStrApp, ((Path(__file__).absolute().parent ) / "test.css"))
def test_absolute_path():
path_tester(AbsolutePathObjectApp, AbsolutePathStrApp, Path("/tmp/test.css"))