kin: KIN-ARCH-023 Исправить инжекцию analyst — steps не передаются в subprocess

This commit is contained in:
Gros Frumos 2026-03-18 22:31:10 +02:00
parent 1dc9e8a800
commit 533283219a
2 changed files with 83 additions and 0 deletions

View file

@ -1,7 +1,11 @@
"""Tests for core/db.py — schema and migration (KIN-071, KIN-073)."""
import importlib
import os
import sqlite3
import pytest
from pathlib import Path
from unittest.mock import patch
from core.db import init_db, _migrate
@ -541,3 +545,41 @@ def test_migrate_creates_pipeline_log_if_missing():
tables = {r["name"] for r in conn.execute("SELECT name FROM sqlite_master WHERE type='table'").fetchall()}
assert "pipeline_log" in tables
conn.close()
# ---------------------------------------------------------------------------
# KIN-129: DB_PATH резолвинг — KIN_DB_PATH env var и fallback на ~/.kin/kin.db
# ---------------------------------------------------------------------------
class TestDbPathResolution:
"""DB_PATH должен брать путь из KIN_DB_PATH или падать на ~/.kin/kin.db (KIN-129)."""
def test_db_path_uses_kin_db_path_when_set(self):
"""Если KIN_DB_PATH задан — DB_PATH равен именно ему."""
import core.db as db_module
custom = "/tmp/custom_kin_test_129.db"
with patch.dict("os.environ", {"KIN_DB_PATH": custom}):
importlib.reload(db_module)
assert str(db_module.DB_PATH) == custom
importlib.reload(db_module) # восстановить модуль после теста
def test_db_path_fallback_to_home_kin_when_env_absent(self):
"""Если KIN_DB_PATH не задан — DB_PATH = ~/.kin/kin.db."""
import core.db as db_module
env_without = {k: v for k, v in os.environ.items() if k != "KIN_DB_PATH"}
with patch.dict("os.environ", env_without, clear=True):
importlib.reload(db_module)
expected = Path.home() / ".kin" / "kin.db"
assert db_module.DB_PATH == expected
importlib.reload(db_module) # восстановить модуль после теста
def test_db_path_not_relative_to_source_file(self):
"""DB_PATH не должен быть относительным путём вида parent.parent/kin.db (регрессия KIN-129)."""
import core.db as db_module
env_without = {k: v for k, v in os.environ.items() if k != "KIN_DB_PATH"}
with patch.dict("os.environ", env_without, clear=True):
importlib.reload(db_module)
# Путь должен быть абсолютным и вести в ~/.kin/, а не в директорию проекта
assert db_module.DB_PATH.is_absolute()
assert ".kin" in db_module.DB_PATH.parts
importlib.reload(db_module)