Share one scoped env-var test guard: EnvGuard is copy-pasted 11 times across core unit and integration tests

Geschlossen
#1,889 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Ein zugehöriger Pull Request wurde bereits gemerged.

  • #1891 von @mikolalysenko — gemerged

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Refactoring
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
rust

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

agent:claimed agent:triaged arch-audit priority:p3 refactor

[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.rs L5880, which takes an OsStr value
  • python_crawler.rs L7878 and L8107
  • vendor/maven_repo.rs L2649
  • patch/jvm_jar.rs L837
  • tests/upstream_restore_golden.rs L188
  • tests/crawler_deno_e2e.rs L24
  • tests/crawler_npm_e2e.rs L357

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_env in core, beside test_rng. It holds EnvGuard::set(key, value), ::unset(key) and a multi-key form taking OsStr values, plus with_env(pairs, f).
  • Unit tests use it.
  • The three integration-test files share one copy in tests/common/, or through a test-support feature if one already exists.
  • Where a function under test already takes injected env (*_with variants), 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/src finds one definition.
Vorherrschende Sprache
Rust
Sterne
9
Forks
2
Ø Merge
20 Std. 20 Min.
Gemergte PRs (30 T.)
659

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus SocketDev/socket-patch

Alle Issues in SocketDev/socket-patch

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.