Files
skill-template/tests/test_db_backend.py
chendelian 166007b460
All checks were successful
技能自动化发布 / release (push) Successful in 9s
release: v1.0.117 沉淀多数据源契约(SQLite 默认 + 可选 MySQL 云库)
新增 DATA_SOURCES.md、data-sources 示例与双后端 connection 骨架;CLI 与宿主 UI 可读写同一库。要求匠厂 Host ≥ 6.9.28。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-26 16:39:13 +08:00

50 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""数据库后端选择:默认 SQLite,DSN 解析。"""
from __future__ import annotations
import os
import unittest
from _support import IsolatedDataRoot
class TestDbBackend(unittest.TestCase):
def test_resolve_backend_defaults_to_sqlite(self) -> None:
with IsolatedDataRoot():
from db.backend import resolve_backend
self.assertEqual(resolve_backend(), "sqlite")
def test_parse_mysql_dsn(self) -> None:
with IsolatedDataRoot():
from db.backend import parse_mysql_dsn
params = parse_mysql_dsn("mysql://root:secret@192.168.0.20:3306/demo_db")
self.assertEqual(params["host"], "192.168.0.20")
self.assertEqual(params["port"], 3306)
self.assertEqual(params["user"], "root")
self.assertEqual(params["password"], "secret")
self.assertEqual(params["database"], "demo_db")
def test_resolve_backend_uses_mysql_dsn_from_env(self) -> None:
with IsolatedDataRoot():
from db.backend import resolve_backend
os.environ["MYSQL_DSN"] = "mysql://u:p@127.0.0.1:3306/t"
try:
self.assertEqual(resolve_backend(), "mysql")
finally:
os.environ.pop("MYSQL_DSN", None)
def test_describe_active_store_sqlite(self) -> None:
with IsolatedDataRoot():
from db.connection import describe_active_store
info = describe_active_store()
self.assertEqual(info["backend"], "sqlite")
self.assertIn("db_path", info)
if __name__ == "__main__":
unittest.main()