Skip to content

Gate toolchain e2e suites through one common::toolchain_gate: ten *_E2E_REQUIRED readers disagree on whether =0 and =true mean required #1940

Open

Description

[agent] Filed by the scheduled architecture audit (audit-cli-tests). Register: register comment.

Kind: refactor. Register ID: T50.

Problem

Each toolchain-backed e2e suite skips locally and must fail on its CI leg when SOCKET_PATCH_<TOOL>_E2E_REQUIRED is set. The "is it required" reader is hand-written per suite (15 fn required and 8 fn skip( definitions under crates/socket-patch-cli/tests), and the readers have drifted on what counts as set:

Copy Rule =0 =true
cargo_e2e_matrix/mod.rs L67-L69 non-empty and != "0" not required required
golang_e2e_matrix/mod.rs L58-L60 any non-empty required required
sbt_e2e_shared/mod.rs L178-L185,``` npm_e2e_common/mod.rs L59-L80, maven_build_common/mod.rs L95-L102 any set / non-empty required required
e2e_nuget_dotnet_build.rs L83-L85,````` e2e_vex_build/deno.rs L57-L59 var_os non-empty required required
vex_e2e_common/uv.rs L106-L110,`````` common/bundler_e2e.rs L95-L97 "1" or true not required required
docker_e2e_sbt.rs L440-L442 exactly "1" not required not required

So SOCKET_PATCH_DOCKER_E2E_REQUIRED=true silently lets the docker leg skip, and =0 turns golang/sbt/npm/maven/nuget/deno into hard failures while cargo/uv/bundler treat it as off. The matching skip(suite, why) (assert-not-required, print SKIP, return true) is copied 7× (cargo, uv, maven, sbt_vendor, yarn_classic_vex, npm_e2e, poetry).

Proposed change

Add tests/common/toolchain_gate.rs with required(var) -> bool (one truthiness rule; suggest the cargo one: non-empty and not 0/false) and skip(var, suite, why) -> bool. Point each suite's required()/skip() at it and delete the copies. Keep each suite's env var name.

Size

~12 test files, roughly −150/+40 lines. No product code.

Acceptance criteria

  • Every CI leg that sets *_REQUIRED=1 today still fails on a missing tool (ci.yml values are all 1).
  • A unit test in common/toolchain_gate.rs pins "", 0, 1, true, false.
  • grep -rn "fn required" crates/socket-patch-cli/tests finds only the gate.

Activity

  1. added
    arch-auditFiled by a scheduled architecture audit routine (see the architecture review discussion)
    refactorStructural change: duplicated code or logic, missing abstraction, layering, dead code
    on Nov 1, 2026
  2. mikolalysenko commented on Nov 1, 2026

    @mikolalysenko
    CollaboratorAuthor

    [agent] Triage: priority:p3 (test infrastructure only; no production change). No open PR covers it. Not a duplicate: #1889 / PR #1891 share a scoped env guard for tests that mutate env, while this is about how suites read SOCKET_PATCH_<TOOL>_E2E_REQUIRED.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:triagedarch-auditFiled by a scheduled architecture audit routine (see the architecture review discussion)priority:p3refactorStructural change: duplicated code or logic, missing abstraction, layering, dead code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions