mirror of
https://github.com/github/spec-kit.git
synced 2026-07-03 12:28:06 +08:00
* refactor: extract _assets.py and _utils.py from __init__.py Move bundle path resolution and version lookup into _assets.py (stdlib only, zero internal imports), and system utilities (subprocess, tool detection, file operations) into _utils.py (imports only from ._console). Re-export all moved symbols from __init__.py for backward compatibility. Update test_check_tool.py to patch both specify_cli and specify_cli._utils namespaces since constants are now defined in _utils. * style: apply PR-1 review patterns to _assets.py and _utils.py - Add module docstring to _assets.py (stdlib-only, zero internal imports) - Add blank line after `from __future__ import annotations` in both files - Replace `Optional[X]` with `X | None` throughout _utils.py (PEP 604) - Remove unused `Optional` import from _utils.py - Use explicit re-export form (`X as X`) for public symbols in __init__.py - Remove unused `subprocess` and `tempfile` imports from __init__.py (moved to _utils.py)
22 lines
722 B
Python
22 lines
722 B
Python
"""Regression guard: utility and asset symbols importable from specify_cli."""
|
|
from specify_cli import (
|
|
run_command, check_tool, is_git_repo, init_git_repo,
|
|
handle_vscode_settings, merge_json_files,
|
|
get_speckit_version,
|
|
CLAUDE_LOCAL_PATH, CLAUDE_NPM_LOCAL_PATH,
|
|
)
|
|
from pathlib import Path
|
|
|
|
def test_utils_symbols_importable():
|
|
assert callable(check_tool)
|
|
assert callable(merge_json_files)
|
|
assert callable(is_git_repo)
|
|
|
|
def test_get_speckit_version_returns_string():
|
|
version = get_speckit_version()
|
|
assert isinstance(version, str) and len(version) > 0
|
|
|
|
def test_claude_paths_are_paths():
|
|
assert isinstance(CLAUDE_LOCAL_PATH, Path)
|
|
assert isinstance(CLAUDE_NPM_LOCAL_PATH, Path)
|