test(onboarding): 补 git-workflow 版本升级场景 + 修复断言版本硬编码
All checks were successful
Push & PR Check / check (push) Successful in 50s
Push & PR Check / check (pull_request) Successful in 48s

三态测试新增:v1.2.0 存量项目重跑后 git-workflow 块升至 1.3.0,
块外用户内容保留;修复 AGENTS 版本断言从硬编码 1.2.0 改为动态提取。

Rules-Applied: R07,R13
This commit is contained in:
lanrtop 2026-07-04 10:30:38 +09:00
parent 428bb02a90
commit 8b85f49234

View File

@ -444,8 +444,9 @@ mod tests {
assert_eq!(agents_r.action, "skipped");
// 态二(旧版本):把版本改旧 + 块外加用户内容 → updated块升级、用户内容保留
let agents_tpl_ver = extract_managed_block(TMPL_AGENTS).and_then(block_version).unwrap();
let old = agents
.replace("version=\"1.2.0\"", "version=\"1.0.0\"")
.replacen(&format!("version=\"{agents_tpl_ver}\""), "version=\"1.0.0\"", 1)
.replace("## 项目概况", "## 项目概况
")
@ -458,11 +459,29 @@ mod tests {
let agents_r = r3.iter().find(|t| t.name == "AGENTS.md").unwrap();
assert_eq!(agents_r.action, "updated");
let upgraded = std::fs::read_to_string(base.join("AGENTS.md")).unwrap();
assert!(upgraded.contains("version=\"1.2.0\""), "块应升级到模板版本");
assert!(upgraded.contains(&format!("version=\"{agents_tpl_ver}\"")), "块应升级到模板版本");
assert!(upgraded.contains("我的项目说明"), "块外用户内容(前)须保留");
assert!(upgraded.contains("用户自加的章节"), "块外用户内容(后)须保留");
assert_eq!(upgraded.matches(MANAGED_START).count(), 1, "只有一个管理块");
// git-workflow 版本升级验证v1.2.0 存量项目重跑后块升级,块外内容不动
let gw_tpl_ver = extract_managed_block(TMPL_GIT_WORKFLOW).and_then(block_version).unwrap();
let gw_path = base.join("docs/ai-context/git-workflow.md");
let gw_content = std::fs::read_to_string(&gw_path).unwrap();
// 把写入的最新版本改旧,模拟存量 1.2.0 项目
let gw_old = gw_content
.replacen(&format!("version=\"{gw_tpl_ver}\""), "version=\"1.2.0\"", 1)
+ "\n## 项目自加章节\n旧有内容\n";
std::fs::write(&gw_path, &gw_old).unwrap();
let r_gw = dispatch_templates(pp);
let gw_r = r_gw.iter().find(|t| t.name == "docs/ai-context/git-workflow.md").unwrap();
assert_eq!(gw_r.action, "updated", "git-workflow 旧版本应触发 updated");
let gw_upgraded = std::fs::read_to_string(&gw_path).unwrap();
assert!(gw_upgraded.contains(&format!("version=\"{gw_tpl_ver}\"")), "git-workflow 块应升级到模板版本");
assert!(gw_upgraded.contains("功能性改动"), "新分支策略关键词应出现在升级后文件中");
assert!(gw_upgraded.contains("项目自加章节"), "块外用户内容须保留");
assert_eq!(gw_upgraded.matches(MANAGED_START).count(), 1, "只有一个管理块");
// 态三:存量文件无标记 → appended原内容保留在上方
std::fs::write(base.join("AGENTS.md"), "# 手写的 AGENTS