cli-prep #41

Merged
Mic92 merged 3 commits from cli-prep into main 2023-07-28 10:22:25 +00:00
8 changed files with 51 additions and 15 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,15 +1,20 @@
[build-system]
requires = ["setuptools"]
requires = [ "setuptools" ]
build-backend = "setuptools.build_meta"
[project]
name = "clan"
description = "cLAN CLI tool"
dynamic = ["version"]
scripts = {clan = "clan_cli:main"}
dynamic = [ "version" ]
scripts = { clan = "clan_cli:main" }
[tool.setuptools]
packages = [ "clan_cli" ]
[tool.pytest.ini_options]
addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail"
norecursedirs = "tests/helpers"
[tool.mypy]
python_version = "3.10"
@ -33,13 +38,13 @@ ignore_missing_imports = true
[tool.ruff]
line-length = 88
select = ["E", "F", "I"]
select = [ "E", "F", "I" ]
ignore = [ "E501" ]
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'
target-version = [ "py310" ]
include = "\\.pyi?$"
exclude = '''
/(
\.git

View File

@ -0,0 +1,6 @@
import os
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

@ -3,12 +3,11 @@ from typing import Union
import pytest
import pytest_subprocess.fake_process
from environment import mock_env
from pytest_subprocess import utils
import clan_cli.ssh
from .environment import mock_env
def test_no_args(
capsys: pytest.CaptureFixture, monkeypatch: pytest.MonkeyPatch

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()