ShiErFeng/shierfeng-fastapi-backend/tests/cli/runtime/test_base.py
2026-07-24 09:43:10 +08:00

45 lines
1.7 KiB
Python

from pathlib import Path
from cli.core.app_builder import ProjectRuntimeLocator
from cli.runtime.base import RUNTIME_ENVIRONMENT
from cli.utils import NestedCliProjectLocator
def test_backend_project_dir_detection_uses_consistent_rule(tmp_path: Path) -> None:
"""
校验不同入口的后端目录判定规则保持一致。
:param tmp_path: pytest 临时目录
:return: None
"""
(tmp_path / 'app.py').write_text('', encoding='utf-8')
(tmp_path / 'config').mkdir()
(tmp_path / 'config' / 'env.py').write_text('', encoding='utf-8')
(tmp_path / 'cli').mkdir()
project_runtime_locator = ProjectRuntimeLocator()
nested_cli_project_locator = NestedCliProjectLocator()
assert RUNTIME_ENVIRONMENT.is_backend_project_dir(tmp_path) is True
assert project_runtime_locator.is_backend_project_dir(tmp_path) is True
assert nested_cli_project_locator.is_backend_project_dir(tmp_path) is True
def test_backend_project_dir_detection_rejects_directory_without_cli_package(tmp_path: Path) -> None:
"""
校验缺少 cli 目录时不会被误判为后端项目根目录。
:param tmp_path: pytest 临时目录
:return: None
"""
(tmp_path / 'app.py').write_text('', encoding='utf-8')
(tmp_path / 'config').mkdir()
(tmp_path / 'config' / 'env.py').write_text('', encoding='utf-8')
project_runtime_locator = ProjectRuntimeLocator()
nested_cli_project_locator = NestedCliProjectLocator()
assert RUNTIME_ENVIRONMENT.is_backend_project_dir(tmp_path) is False
assert project_runtime_locator.is_backend_project_dir(tmp_path) is False
assert nested_cli_project_locator.is_backend_project_dir(tmp_path) is False