Skip to content

[提案] 补全 v0.2.0 新功能的测试覆盖 #1

@Cainer

Description

@Cainer

背景

当前 tests/test_core.py 覆盖了基础模型、存储、搜索、写入和 dream 的核心路径,但 v0.2.0 新增的三大功能(过期清理、版本控制、关联图)完全没有测试:

功能 方法 测试覆盖
过期清理 expire(), ExpiryReport
版本控制 history(), revert(), VersionRecord
关联图 relations(), related(), relation_graph(), Relation
冲突解决 resolve_conflict()
CLI 全部命令 16 个子命令
导入 import_data()

这意味着:任何 PR 都可能在改动时悄悄破坏这些功能,且无法被发现。

具体方案

分两批补充测试:

第一批:核心逻辑(约 150 行)

  • test_expire(): 高置信度+用户明确 → 永久保留;低频+过期 → 标记 expired
  • test_history_and_revert(): write → update → 查看历史 → revert 到 v1 → 验证内容
  • test_relations_and_graph(): 写入多条同标签记忆 → 验证 same_topic 关联 → 验证 graph hubs
  • test_resolve_conflict(): 写入矛盾 → keep=true 验证 conflict 清除 → keep=false 验证 deleted
  • test_import_data(): 导出 → 清空 → 导入 → 验证条目恢复

第二批:CLI 测试(约 100 行,可选)

  • subprocess.run(["shanhai", "write", ...])cli.main() mock 测试关键命令
  • 重点:searchwritestatusexport 的输出格式

难度

easy — 都是已有 API 的正向/边界 case,不需要改动源码

预期收益

  • 防止回归:后续 PR 有 CI 兜底
  • 文档作用:测试即使用示例
  • 提升信心:发布 v0.3.0 时不担心 v0.2 功能被破坏
  • 覆盖率从 ~40% 提升到 ~80%(核心路径)

Metadata

Metadata

Assignees

No one assigned

    Labels

    daily-proposal每日自动生成的改进提案

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions