Skip to content

refactor: isolate test settings and narrow local compatibility#475

Merged
liujuanjuan1984 merged 5 commits intomainfrom
issue-474-isolate-make-settings-env-sources
May 6, 2026
Merged

refactor: isolate test settings and narrow local compatibility#475
liujuanjuan1984 merged 5 commits intomainfrom
issue-474-isolate-make-settings-env-sources

Conversation

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator

@liujuanjuan1984 liujuanjuan1984 commented May 6, 2026

摘要

  • tests/support/settings.py 中引入仅保留 init_settings 的隔离 settings helper,避免 make_settings() 继续读取 ambient environment、.env 与 secrets source
  • 将仓库内测试统一改为从 tests.support.settings 导入 make_settings,移除 tests.support.helpers 上不必要的 helper re-export
  • 将隔离行为回归测试并入 tests/config/test_settings.py
  • 收敛本地兼容面:session query 仅保留顶层参数形状,移除 query.* 双入口;收紧 client transport 宽松别名;补充当前 a2a-sdk core JSON-RPC 方法集合锁定测试

设计判断

  • #474 仅修复测试 settings 污染问题,不调整生产 Settings 的装配逻辑
  • #476 将本仓自定义兼容面收敛到更明确的契约:provider-private session query 只保留单一顶层形状,不再兼容本仓自己定义出的双入口
  • SDK-owned core JSON-RPC 方法集合继续跟随当前锁定的 a2a-sdk 版本,但通过完整集合测试把它变成显式升级审查点
  • 本地 client config 仅保留明确支持的 transport 写法,移除 json_rpchttpjsonhttp+json+ 这类无必要别名
  • #439 与本次同属 tests/support/helpers.py 域,但目标是宽接口 fake client 拆分,属于后续结构性重构;本 PR 不包含该范围

验证

  • bash ./scripts/doctor.sh

Issues

Closes #474
Closes #476
Related #439

@liujuanjuan1984 liujuanjuan1984 changed the title test: isolate make_settings from ambient env sources test: isolate make_settings from ambient settings sources May 6, 2026
@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

独立审查结论:本 PR 未发现阻塞性问题,可以进入正常评审流程。

代码变动审查:

  • 变更范围与 #474 对齐,没有把问题扩大到生产配置装配。
  • 通过 test-only _IsolatedTestSettings 覆盖 settings_customise_sources(),只保留 init_settings,能够直接切断 ambient env、.env 与 secrets source,对现有 make_settings() 调用面影响最小。
  • 回归测试直接构造污染 os.environ 与临时 .env,覆盖了本 issue 的核心失效路径,验证点充足。
  • bash ./scripts/doctor.sh 已通过,说明改动没有引入可见回归。

实现质量审查:

  • 方案是小补丁闭环,优于改生产 Settings 或在各测试点零散打补丁,整体上更稳健也更容易维护。
  • 暂未发现偏差、遗漏或明显冗余。

PR 标题与描述审查:

  • 标题已更新为英文 commit message 风格:test: isolate make_settings from ambient settings sources
  • 描述已补充设计判断与 issue 关系,信息充分。

Issue 关系审查:

  • Closes #474 准确,本 PR 已直接实现该 issue 的需求。
  • Related #439 也准确,但不应写成 Closes,因为本 PR 没有处理 fake client 拆分,仅与同一 helper 文件域相关。

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

补充同步:基于当前分支继续收口了“本仓向 codex-a2a-serve 借鉴”的那一部分实现。

  • 借鉴方向已明确:是 opencode-a2acodex-a2a-serve 借鉴,不是反过来。
  • 已将测试专用 settings helper 独立到 tests/support/settings.py,保持其仍然只存在于 tests/ 目录,不进入源码目录。
  • 已将隔离行为回归测试并入 tests/config/test_settings.py,与配置行为测试放在同一处。
  • tests/support/helpers.py 目前保留为兼容入口,避免为了这次 bug 修复把 import 迁移范围无谓放大。

独立复审结论不变:当前 PR 仍未发现阻塞性问题,且实现比上一版更贴近可复用的测试 support 组织方式。

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

补充同步:根据进一步审查,已去掉本仓内部不必要的“兼容旧导入路径”做法。

  • make_settings 现在只由 tests.support.settings 提供
  • 仓库内所有测试调用点都已统一切换,不再从 tests.support.helpers 导入 make_settings
  • tests.support.helpers 仅保留它本来负责的上下文/假对象工具,不再承担 settings helper re-export
  • bash ./scripts/doctor.sh 已继续通过

这次调整更符合你的要求,也更符合测试基础设施应有的边界:测试专用能力留在 tests/,但不为本仓内部旧路径保留不必要兼容。

@liujuanjuan1984 liujuanjuan1984 changed the title test: isolate make_settings from ambient settings sources refactor: isolate test settings and narrow local compatibility May 6, 2026
@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

基于当前分支再次独立审查后,这个 PR 的最终收敛范围如下:

  • 保留 a2a-sdk core JSON-RPC 方法集合的动态跟随策略,但新增完整集合锁定测试,把 SDK 升级变成显式审查点
  • 收掉本仓自己定义出来的 session query 双形状兼容,统一为单一顶层参数形状,并同步收紧 Agent Card / wire contract / 文档
  • 收紧 client transport 本地宽松别名,移除无必要兼容

审查结论:

  • 当前实现与 #474#476 的目标一致
  • 未发现新的阻塞性问题
  • #439 仍应保持为后续独立结构性重构,不建议并入本 PR

验证:

  • bash ./scripts/doctor.sh

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

补充一处边界调整:保留了 json_rpchttp_json 这两个下划线别名。

调整原因:

  • 下划线和 - 都属于常见连接符变体
  • 这两个输入仍然具备可读性和可预期性
  • 真正无必要的兼容仍然已经收掉:httpjsonhttp+json+

验证:

  • bash ./scripts/doctor.sh

@liujuanjuan1984 liujuanjuan1984 merged commit 17b3d7d into main May 6, 2026
3 checks passed
@liujuanjuan1984 liujuanjuan1984 deleted the issue-474-isolate-make-settings-env-sources branch May 6, 2026 11:56
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.

收敛本地兼容入口并锁定 core JSON-RPC 方法集合 [Testing] 隔离 make_settings 的环境源,避免宿主环境污染测试

1 participant