"""内置存储实现的契约一致性测试。 两个实现(内存 / SQLite)跑**完全相同**的用例。这是"持久层可替换"这句话能成立的 唯一证据——否则换后端就是在赌。 """ from __future__ import annotations import tempfile from pathlib import Path from chongming_task.stores.memory import InMemoryTaskStore from chongming_task.stores.protocol import TaskStore from chongming_task.stores.sqlite import SqliteTaskStore from chongming_task.testing.store_contract import StoreContract class TestInMemoryStore(StoreContract): """内存实现。""" def make_store(self) -> TaskStore: return InMemoryTaskStore() class TestSqliteFileStore(StoreContract): """SQLite 文件库——真实使用场景(跨进程、可重启)。""" _tempdir: tempfile.TemporaryDirectory[str] def make_store(self) -> TaskStore: self._tempdir = tempfile.TemporaryDirectory(prefix="chongming-store-") return SqliteTaskStore(Path(self._tempdir.name) / "tasks.db") class TestSqliteMemoryStore(StoreContract): """SQLite 内存库——语义必须与文件库一致。""" def make_store(self) -> TaskStore: return SqliteTaskStore(":memory:")