feat: rewrite core layer (errors, template, paths, platform, console, runtime, config)
Complete rewrite of all core modules with proper abstractions:
- FlowError hierarchy with PlanConflict and ExecutionError
- Pure template substitution ($VAR, ${VAR}, {{expr}})
- XDG path constants
- Frozen PlatformInfo dataclass with context detection
- Console with color/quiet/TTY support
- Runtime primitives (CommandRunner, FileSystem, GitClient, SystemRuntime)
- Config loading with target parsing and manifest merging
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
40
tests/test_core_paths.py
Normal file
40
tests/test_core_paths.py
Normal file
@@ -0,0 +1,40 @@
|
||||
"""Tests for flow.core.paths."""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from flow.core import paths
|
||||
|
||||
|
||||
def test_config_dir_ends_with_flow():
|
||||
assert paths.CONFIG_DIR.name == "flow"
|
||||
|
||||
|
||||
def test_data_dir_ends_with_flow():
|
||||
assert paths.DATA_DIR.name == "flow"
|
||||
|
||||
|
||||
def test_modules_dir_under_data():
|
||||
assert paths.MODULES_DIR.parent == paths.DATA_DIR
|
||||
|
||||
|
||||
def test_linked_state_under_state():
|
||||
assert paths.LINKED_STATE.parent == paths.STATE_DIR
|
||||
|
||||
|
||||
def test_dotfiles_flow_config_path():
|
||||
expected_suffix = Path("_shared") / "flow" / ".config" / "flow"
|
||||
assert str(paths.DOTFILES_FLOW_CONFIG).endswith(str(expected_suffix))
|
||||
|
||||
|
||||
def test_ensure_dirs_creates_directories(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(paths, "CONFIG_DIR", tmp_path / "config" / "flow")
|
||||
monkeypatch.setattr(paths, "DATA_DIR", tmp_path / "data" / "flow")
|
||||
monkeypatch.setattr(paths, "STATE_DIR", tmp_path / "state" / "flow")
|
||||
monkeypatch.setattr(paths, "MODULES_DIR", tmp_path / "data" / "flow" / "modules")
|
||||
monkeypatch.setattr(paths, "PACKAGES_DIR", tmp_path / "data" / "flow" / "packages")
|
||||
|
||||
paths.ensure_dirs()
|
||||
|
||||
assert (tmp_path / "config" / "flow").is_dir()
|
||||
assert (tmp_path / "data" / "flow" / "modules").is_dir()
|
||||
assert (tmp_path / "state" / "flow").is_dir()
|
||||
Reference in New Issue
Block a user