Share one scoped env-var test guard: EnvGuard is copy-pasted 11 times across core unit and integration tests
维护者通常 1 天内回复
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 55/100
- Issue 类型
- 重构
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- rust
调研方向
Start by reading the EnvGuard definitions named in the issue and the core test helper beside test_rng. Compare the unit-test and integration-test variants, including the OsStr and closure forms, then identify any existing injected-env helpers and test-support setup. Done means the touched tests share the guard, retain their existing #[serial] usage, and the stated grep finds one core definition.
由索引模型根据 Issue 内容生成。
描述
[agent] Filed by the scheduled architecture audit (audit-core). Register: register.
Kind: refactor (tests). Register ID: A37.
Problem
Tests that mutate process env each define their own restore-on-drop guard.
These three copies are byte-identical:
- go_crawler.rs L1518-L1542
- deno_crawler.rs L945-L969
- maven_crawler.rs L2508-L2532
These are variants:
npm_crawler.rsL5880, which takes anOsStrvaluepython_crawler.rsL7878 and L8107vendor/maven_repo.rsL2649patch/jvm_jar.rsL837tests/upstream_restore_golden.rsL188tests/crawler_deno_e2e.rsL24tests/crawler_npm_e2e.rsL357
There are also closure-style twins: utils/socket_cli_config.rs with_env (L311) and utils/fs.rs with_home_env (L1489).
grep -rn "struct EnvGuard" crates finds 11 definitions.
Proposed change
- Add one
#[cfg(test)] pub(crate) mod test_envin core, besidetest_rng. It holdsEnvGuard::set(key, value),::unset(key)and a multi-key form takingOsStrvalues, pluswith_env(pairs, f). - Unit tests use it.
- The three integration-test files share one copy in
tests/common/, or through atest-supportfeature if one already exists. - Where a function under test already takes injected env (
*_withvariants), switch the test to that and drop the guard.
Size
About 12 files, about −150 lines. Tests only.
Acceptance criteria
- No production code changes.
- Every touched test still runs under
#[serial]where it did before and passes. grep -rn "struct EnvGuard" crates/socket-patch-core/srcfinds one definition.
- 主要语言
- Rust
- 星标
- 8
- 派生
- 2
- 平均合并
- 19 小时 24 分钟
- 30 天内合并 PR
- 669
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
SocketDev/socket-patch 的其他 Issue
-
agent:triaged arch-audit priority:p3 refactor
难度 2/5 1-3 小时 新手友好度 83/100
SocketDev/socket-patch#1860 ·
维护者通常 1 天内回复
-
agent:triaged arch-audit priority:p3 refactor
难度 2/5 1-3 小时 新手友好度 78/100
SocketDev/socket-patch#1838 ·
维护者通常 1 天内回复
-
Vendored npm rollback / remove / vendor --revert on a lockfileVersion 2 lock fail after any `npm install`, yet half-revert the lock: `packages` goes back to the registry while the legacy mirror keeps the patched integrity, and npm 6 then fails EINTEGRITY可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug bughunt pm:npm
难度 4/5 3-5 天 新手友好度 35/100
SocketDev/socket-patch#1937 ·
维护者通常 1 天内回复
-
arch-audit refactor
难度 4/5 3-5 天 新手友好度 22/100
SocketDev/socket-patch#1935 ·
维护者通常 1 天内回复
-
arch-audit bug
难度 3/5 半天 新手友好度 55/100
SocketDev/socket-patch#1934 ·
维护者通常 1 天内回复
查看 SocketDev/socket-patch 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
longbridge/nsh#804 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
devex good first issue
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
calcit-lang/calcit#2538 ·
维护者通常 1 天内回复