Skip to content

feat: 补齐测试缺失实现并接入 GitHub Actions CI#8

Merged
JiGuangWorker merged 4 commits into
mainfrom
dev/v1-pipeline
Jul 4, 2026
Merged

feat: 补齐测试缺失实现并接入 GitHub Actions CI#8
JiGuangWorker merged 4 commits into
mainfrom
dev/v1-pipeline

Conversation

@JiGuangWorker

Copy link
Copy Markdown
Owner

变更内容

修复测试编译错误

之前 main_test.goloop_judge_test.gorunner_test.goconfig_test.go 四个测试文件引用了不存在的类型、常量、函数和接口,导致无法编译。本次提交补齐了对应的实现。

生产代码补全

  • agent: 新增 TaskKindLoopJudge 任务阶段
  • config: 新增 LoopJudgeAgent / LoopJudgeStartRound / MaxCodingReviewRounds 字段及默认常量
  • pipeline/contracts: 新增 LoopJudgeResult 结构体与 loadLoopJudgeResult() 校验
  • pipeline/dispatch: 新增 Runner 接口解耦 Service 与具体实现;将价值评估员接入 coder-reviewer loop;新增 shouldRunLoopJudge() / runLoopJudgeRound() / buildLoopJudgeFeedback()
  • pipeline/artifacts: 新增逐轮工件路径方法 (EnsureRoundDir / CodingResultPathForRound / ReviewResultPathForRound / LoopJudgeResultPath / LoopHistoryPath)
  • pipeline/prompts: 新增 buildLoopJudgePrompt()
  • cmd/worker: 新增 dispatchService 接口和 runCLI() 函数,重构 main() 委托给它,使 CLI 逻辑可独立测试

CI 自动化

新增 .github/workflows/ci.yml

  • 触发时机: push 到 main/master 或针对它们的 PR
  • 校验步骤: 校验 go.mod 同步 → 编译 → 单元测试 (-race) → golangci-lint 静态分析
  • 复用 Makefile 中已有的 build/test 目标,保持本地与 CI 行为一致

关键设计决策

  1. Runner 接口 替换 *agent.Runner:遵循 Go "accept interfaces" 惯例,最小改动让测试 mock (*scriptedRunner) 可注入
  2. ForRound 后缀 避免与现有无参方法冲突:Go 不支持方法重载,保留原 CodingResultPath() 兼容生产代码
  3. io.Writer 作为 runCLI 的输出参数:允许 *bytes.Buffer (测试) 和 *os.File (生产) 同时复用

测试结果

ok  github.com/JiGuangWorker/code-bee/cmd/worker           2.259s
ok  github.com/JiGuangWorker/code-bee/internal/agent        1.983s
ok  github.com/JiGuangWorker/code-bee/internal/config       1.432s
ok  github.com/JiGuangWorker/code-bee/internal/pipeline     1.729s
ok  github.com/JiGuangWorker/code-bee/internal/platform/github  2.658s
ok  github.com/JiGuangWorker/code-bee/pkg/version           2.940s

go test -race ./... 全部 6 个包测试通过 (27/27)

关联

本 PR 接续了 Issue #4 的角色分工与流程图,并落地了价值评估员的实现与自动化测试基础设施。

## 变更内容

### 修复测试编译错误
- main_test.go: 新增 runCLI 函数和 dispatchService 接口,使 CLI 逻辑可独立测试
- loop_judge_test.go / coverage_test.go: 补齐价值评估员相关类型与函数
- runner_test.go: 引入 execCommandContext 可替换别名,支持命令执行器注入
- config_test.go: 新增 LoopJudgeAgent 字段及默认常量

### 生产代码补全
- agent: 新增 TaskKindLoopJudge 任务阶段
- config: 新增 LoopJudgeAgent / LoopJudgeStartRound / MaxCodingReviewRounds 字段
- pipeline/contracts: 新增 LoopJudgeResult 结构与 loadLoopJudgeResult 校验
- pipeline/dispatch: 新增 Runner 接口解耦 Service 与具体实现;接入价值评估员到 coder-reviewer loop;新增 shouldRunLoopJudge / runLoopJudgeRound
- pipeline/artifacts: 新增逐轮工件路径方法 (EnsureRoundDir / CodingResultPathForRound / LoopJudgeResultPath / LoopHistoryPath)
- pipeline/prompts: 新增 buildLoopJudgePrompt

### CI 自动化
- 新增 .github/workflows/ci.yml: push/PR 触发时运行 build + test + lint

## 测试结果
- go test -race ./... 全部 6 个包测试通过 (27/27)
问题: golangci-lint v1.64.8 严格校验 schema,ignored-numbers 需为数组
修复: 字符串改为 YAML 数组;checkout@v4→v5 避免 Node 20 弃用警告
- goimports: 修正 config.go 和 prompts.go 的格式化
- funlen: 从 runCLI 抽出 usageError 和 reportDispatchResult 辅助函数
- gocyclo: 从 runCodingReviewLoop 抽出 runLoopJudgeIfNeeded 降低复杂度
抽出 appendAndSaveHistory 和 checkReviewTerminal 辅助方法
@JiGuangWorker JiGuangWorker merged commit c24b450 into main Jul 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants