117 lines
7.8 KiB
Markdown
117 lines
7.8 KiB
Markdown
# 原始代码映射 — 测试与构建
|
||
|
||
> 所属项目: free-code .NET 10 重写
|
||
> 文档类型: 参考映射表
|
||
> 上级文档: [测试与构建总览](../测试与构建.md)
|
||
|
||
---
|
||
|
||
## 说明
|
||
|
||
本文档建立 .NET 10 测试类型和构建配置与原始 TypeScript 源文件之间的映射关系。测试层是 .NET 重写新增的内容(原始项目无系统化测试),因此大部分映射说明的是"覆盖哪个原始模块的逻辑"而不是"重写了哪个测试文件"。构建部分则记录了从 Bun 脚本到 MSBuild/dotnet publish 的对应关系。
|
||
|
||
---
|
||
|
||
## 测试覆盖映射
|
||
|
||
### 单元测试 — FreeCode.Tests.Unit
|
||
|
||
| 测试类 | 测试项目路径 | 覆盖原始 TS 文件 | 测试重点 |
|
||
|--------|------------|----------------|---------|
|
||
| `BashToolTests` | `Tests/Tools/BashToolTests.cs` | `../../../src/tools/BashTool.tsx` | 命令执行、超时中断、后台任务 ID、只读分类 |
|
||
| `FileReadToolTests` | `Tests/Tools/FileReadToolTests.cs` | `../../../src/tools/FileReadTool.tsx` | 路径验证、编码处理、行范围切片 |
|
||
| `FileEditToolTests` | `Tests/Tools/FileEditToolTests.cs` | `../../../src/tools/FileEditTool.tsx` | 字符串替换、多匹配报错、文件不存在报错 |
|
||
| `FileWriteToolTests` | `Tests/Tools/FileWriteToolTests.cs` | `../../../src/tools/FileWriteTool.tsx` | 新建文件、覆盖已有文件、父目录不存在 |
|
||
| `GlobToolTests` | `Tests/Tools/GlobToolTests.cs` | `../../../src/tools/GlobTool.tsx` | 模式匹配、路径限制、结果排序 |
|
||
| `GrepToolTests` | `Tests/Tools/GrepToolTests.cs` | `../../../src/tools/GrepTool.tsx` | 正则搜索、include 过滤、上下文行 |
|
||
| `AgentToolTests` | `Tests/Tools/AgentToolTests.cs` | `../../../src/tools/AgentTool.tsx` | 子代理启动、结果收集、嵌套深度限制 |
|
||
| `ToolRegistryTests` | `Tests/Tools/ToolRegistryTests.cs` | `../../../src/tools.ts` | 基础工具注册、MCP 工具去重、稳定排序 |
|
||
| `QueryEngineTests` | `Tests/Engine/QueryEngineTests.cs` | `../../../src/QueryEngine.ts` | 消息循环、工具调用轮次、流式输出 |
|
||
| `SystemPromptBuilderTests` | `Tests/Engine/SystemPromptBuilderTests.cs` | `../../../src/QueryEngine.ts`(内联 `getSystemPrompt`)| 六段构建顺序、feature flag 条件段 |
|
||
| `CommandRegistryTests` | `Tests/Commands/CommandRegistryTests.cs` | `../../../src/commands.ts` | 命令注册、可用性过滤、认证状态过滤 |
|
||
| `AnthropicProviderTests` | `Tests/ApiProviders/AnthropicProviderTests.cs` | `../../../src/services/api/claude.ts` | SSE 解析、事件类型映射、错误处理 |
|
||
| `CodexProviderTests` | `Tests/ApiProviders/CodexProviderTests.cs` | `../../../src/services/api/`(Codex adapter)| 消息格式转换、流式响应 |
|
||
| `ProviderRouterTests` | `Tests/ApiProviders/ProviderRouterTests.cs` | `../../../src/services/api/`(env 判断逻辑)| 环境变量路由、默认提供商 |
|
||
| `McpClientTests` | `Tests/Mcp/McpClientTests.cs` | `../../../src/services/mcp/` | JSON-RPC 请求/响应、工具调用 |
|
||
| `McpClientManagerTests` | `Tests/Mcp/McpClientManagerTests.cs` | `../../../src/services/mcp/` | 多服务器管理、断线重连 |
|
||
| `TransportTests` | `Tests/Mcp/TransportTests.cs` | `../../../src/services/mcp/`(传输层)| stdio 传输、SSE 传输 |
|
||
| `LspClientManagerTests` | `Tests/Lsp/LspClientManagerTests.cs` | `../../../src/services/lsp/` | 服务器实例管理、LSP 协议握手 |
|
||
| `AuthServiceTests` | `Tests/Services/AuthServiceTests.cs` | `../../../src/services/oauth/` | Token 缓存、刷新逻辑 |
|
||
| `RateLimitServiceTests` | `Tests/Services/RateLimitServiceTests.cs` | `../../../src/services/` | 令牌桶算法、429 处理 |
|
||
| `SessionMemoryServiceTests` | `Tests/Services/SessionMemoryServiceTests.cs` | `../../../src/services/sessionMemory/` | 记忆读写、过期淘汰 |
|
||
| `CompanionServiceTests` | `Tests/Services/CompanionServiceTests.cs` | 无直接对应(新增 Companion 功能)| 骰子确定性、用户隔离 |
|
||
| `NotificationServiceTests` | `Tests/Services/NotificationServiceTests.cs` | `../../../src/services/` | 通知订阅、事件分发 |
|
||
| `AppStateStoreTests` | `Tests/State/AppStateStoreTests.cs` | `../../../src/state/` | 状态不可变性、订阅通知、并发安全 |
|
||
|
||
---
|
||
|
||
### 集成测试 — FreeCode.Tests.Integration
|
||
|
||
| 测试类 | 测试项目路径 | 覆盖场景 | 涉及原始模块 |
|
||
|--------|------------|---------|------------|
|
||
| `QueryPipelineTests` | `QueryPipelineTests.cs` | 完整查询管道:QueryEngine + Provider + ToolRegistry | `../../../src/QueryEngine.ts` + `../../../src/tools.ts` |
|
||
| `McpIntegrationTests` | `McpIntegrationTests.cs` | 真实 MCP stdio 服务器连接和工具调用 | `../../../src/services/mcp/` |
|
||
| `LspIntegrationTests` | `LspIntegrationTests.cs` | LSP 服务器启动、诊断获取 | `../../../src/services/lsp/` |
|
||
| `BridgeIntegrationTests` | `BridgeIntegrationTests.cs` | IDE Bridge 握手和命令分发 | `../../../src/bridge/` |
|
||
| `TaskManagerTests` | `TaskManagerTests.cs` | 后台任务创建、状态更新、取消 | `../../../src/tasks/` |
|
||
| `PluginLoadingTests` | `PluginLoadingTests.cs` | AssemblyLoadContext 加载卸载插件 | `../../../src/plugins/` |
|
||
|
||
---
|
||
|
||
### E2E 测试 — FreeCode.Tests.E2E
|
||
|
||
| 测试类 | 测试项目路径 | 覆盖场景 | 涉及原始模块 |
|
||
|--------|------------|---------|------------|
|
||
| `CliTests` | `CliTests.cs` | `--version`、`--help` 标志输出 | `../../../src/entrypoints/cli.tsx` |
|
||
| `OneShotModeTests` | `OneShotModeTests.cs` | `-p "prompt"` 一次性模式完整流程 | `../../../src/entrypoints/cli.tsx` |
|
||
| `InteractiveReplTests` | `InteractiveReplTests.cs` | 伪终端输入输出验证 | `../../../src/screens/REPL.tsx` |
|
||
|
||
---
|
||
|
||
## 构建映射
|
||
|
||
### 构建脚本对应
|
||
|
||
| .NET 构建文件 | 原始 TS 文件 | 功能对应 | 关键差异 |
|
||
|--------------|------------|---------|---------|
|
||
| `Directory.Build.props` | 无直接对应 | 全局项目属性 | MSBuild 中心化配置,Bun 项目无此概念 |
|
||
| `build.sh` | `scripts/build.ts` | 多平台批量构建 | Bun 打包 JS bundle;`dotnet publish` 输出 AOT 原生二进制 |
|
||
| `install.sh` | `install.sh`(原始)| 一键安装 | 检测逻辑相同;目标文件从 Bun bundle 改为 AOT 二进制 |
|
||
| `FreeCode.csproj` | `package.json` | 项目依赖和元数据 | 明确引用各子项目,取代 npm 依赖树 |
|
||
|
||
---
|
||
|
||
### 发布目标对应
|
||
|
||
| .NET RID | 原始 Bun 平台 | 说明 |
|
||
|----------|-------------|------|
|
||
| `osx-arm64` | Darwin arm64 | Apple Silicon Mac,与原始 `install.sh` 的 `Darwin-arm64` 分支对应 |
|
||
| `osx-x64` | Darwin x86_64 | Intel Mac,与原始 `Darwin-x86_64` 分支对应 |
|
||
| `linux-x64` | Linux x86_64 | 主流 Linux 服务器,与原始 `Linux-x86_64` 分支对应 |
|
||
| `linux-arm64` | Linux aarch64 | 与原始 `Linux-aarch64` 分支对应 |
|
||
| `win-x64` | 无(原始不支持 Windows)| .NET 重写新增的目标平台 |
|
||
|
||
---
|
||
|
||
## 未直接映射的原始文件
|
||
|
||
以下原始文件无对应测试文件(原始项目没有测试),相关逻辑的验证由集成测试和 E2E 测试覆盖:
|
||
|
||
| 原始文件 | 验证方式 |
|
||
|----------|---------|
|
||
| `../../../src/entrypoints/cli.tsx` | `CliTests.cs`、`OneShotModeTests.cs` E2E 验证 |
|
||
| `../../../src/screens/REPL.tsx` | `InteractiveReplTests.cs` E2E 验证 |
|
||
| `../../../src/components/` | 无自动化 UI 测试(Terminal.Gui 视图层手工验证)|
|
||
| `../../../src/hooks/` | 通过 `QueryEngineTests` 和 `AppStateStoreTests` 间接覆盖 |
|
||
| `../../../src/state/` | `AppStateStoreTests.cs` 单元测试 |
|
||
|
||
---
|
||
|
||
## 参考资料
|
||
|
||
- [测试与构建总览](../测试与构建.md)
|
||
- [测试方案设计](../测试与构建-测试方案设计.md)
|
||
- [构建与部署](../测试与构建-构建与部署.md)
|
||
- [迁移路线图](../测试与构建-迁移路线图.md)
|
||
- [原始代码映射 — 核心模块](../../核心模块设计/reference/原始代码映射-核心模块.md)
|