Skip to content

test(cmd): 测试与本机真实家目录隔离,避免读到真实登录态 - #185

Merged
riba2534 merged 1 commit into
mainfrom
claude/test-home-isolation
Oct 9, 2026
Merged

riba2534 merged 1 commit into
mainfrom
claude/test-home-isolation

Conversation

@riba2534

@riba2534 riba2534 commented Oct 9, 2026

Copy link
Copy Markdown
Owner

问题

合并 #184 后,在 main 上跑发版前检查时,TestDocMediaPreview 在本机失败:请求记录里多出一次 POST /open-apis/authen/v2/oauth/token。

原因是 cmd 包的测试没有和本机真实家目录隔离。本机已登录时,读类命令的测试会读取真实的 ~/.feishu-cli/token.json:

  • token 有效时,会把真实 User Token 发给本地测试服务器;
  • token 过期时,会向测试服务器发起刷新。

CI 环境没有登录态,所以复现不了。

修复

新增 cmd/main_test.go 的 TestMain:

  • HOME、USERPROFILE 指向临时目录;
  • 清空 FEISHU_USER_ACCESS_TOKEN、FEISHU_PROFILE、FEISHU_APP_ID/SECRET、FEISHU_CLI_SKILLS_DIR。

这里只改环境变量,不替换 profile.homeFunc。部分测试会再用 t.Setenv("HOME", ...) 指定自己的家目录,替换后这些测试会失败。

改动只涉及测试,不影响二进制行为。

验证

  • 反向验证:去掉 main_test.go 后,TestDocMediaPreview 在本机失败;恢复后通过。
  • 本机真实 token.json 的 mtime 在测试前后不变。
  • gofmt、go vet ./...、go test ./...(22 个包全部 ok)、go test -race ./...、make check-skills、make check-privacy 全部通过。

cmd 包新增 TestMain:HOME 指向临时目录并清空 FEISHU_USER_ACCESS_TOKEN / FEISHU_PROFILE / FEISHU_APP_* 等环境变量。
此前本机已登录时,读类命令的测试会把真实 User Token 发给测试服务器;token 过期时还会向测试服务器发起刷新,
导致 TestDocMediaPreview 等结果随本机登录状态变化(CI 无登录态复现不了)。
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@riba2534
riba2534 merged commit a7bb5c9 into main Oct 9, 2026
2 checks 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.

1 participant