write test for get_clan_flake_toplevel

This commit is contained in:
Jörg Thalheim
2023-07-28 12:12:37 +02:00
committed by Mic92
parent df6e94b20e
commit 5e5fbfcf06
4 changed files with 38 additions and 8 deletions

View File

@@ -2,18 +2,19 @@ import os
import sys
from pathlib import Path
from .errors import ClanError
def get_clan_flake_toplevel() -> Path:
"""Returns the path to the toplevel of the clan flake"""
initial_path = Path(os.getcwd())
path = Path(initial_path)
while path.parent == path:
project_files = [".clan-flake"]
for project_file in project_files:
for project_file in [".clan-flake", ".git", ".hg", ".svn", "flake.nix"]:
initial_path = Path(os.getcwd())
path = Path(initial_path)
while path.parent == path:
if (path / project_file).exists():
return path
path = path.parent
return initial_path
path = path.parent
raise ClanError("Could not find clan flake toplevel directory")
def user_data_dir() -> Path:

View File

@@ -1,2 +1,6 @@
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'helpers'))
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), "helpers"))
pytest_plugins = ["temporary_dir"]

View File

@@ -0,0 +1,11 @@
import tempfile
from pathlib import Path
from typing import Iterator
import pytest
@pytest.fixture
def temporary_dir() -> Iterator[Path]:
with tempfile.TemporaryDirectory(prefix="pytest-") as dirpath:
yield Path(dirpath)

View File

@@ -0,0 +1,14 @@
from pathlib import Path
import pytest
from clan_cli.dirs import get_clan_flake_toplevel
from clan_cli.errors import ClanError
def test_get_clan_flake_toplevel(
monkeypatch: pytest.MonkeyPatch, temporary_dir: Path
) -> None:
monkeypatch.chdir(temporary_dir)
with pytest.raises(ClanError):
get_clan_flake_toplevel()