Skip to content

Say what Trips is, and correct the Runner impl count #409

Description

@blooop

Question

Doc-only, three places. Trips is a third fake devpod the conformance corpus does not cover decided that Trips is a recording harness rather than a fake devpod, that nothing joins test/fixtures/devpod/conformance.json, and that the argv guard it asked for already exists. What is left is that none of that is written where a reader lands.

1. Runner's doc linerust/devlaunch-runner/src/lib.rs:384-385 says "Implemented once for real processes ([ProcessRunner]) and once for tests (devlaunch_test_support::FakeRunner)." There are nine impls. Replace the count with the shape, which is what a reader actually needs:

  • one production impl, ProcessRunner;
  • one shared fake, FakeRunner — call recorder, argv-prefix response table, and DevpodMachine behind them;
  • seven test-local wrappers over those two. Three of them route by program name so the programs they do not fake reach real processes: FakeDevpodRealGit (flows/listing.rs:1208), Devpod (flows/lifecycle.rs:3417), StubbedLfs (flows/workspace_clone.rs:4026). ScriptedRunner (core/testing.rs:88) adds the timing exclusion, FakeGit (flows/repo_manager.rs:1855) adds filesystem effects for git clone, and Trips (flows/provision.rs:2463) with Rebuilding (:4876) answer by call index.

Do not write "seven" as a number that will rot the way "once" did — say the structure and name the three routers, since those are the ones a reader currently learns by grepping.

2. Trips' doc comment (rust/devlaunch-core/src/flows/provision.rs:2359-2371) — say it is a recorder, not a fake devpod: it answers by call index (:2442) and never reads argv to decide an outcome, holds no workspace state, and therefore cannot be driven over a corpus row, which is given state → argv → exit + then state. Say that the fake devpod the rest of the suite meets is DevpodMachine, reached through FakeRunner, and that it is the corpus-covered one — so a reader does not conclude a third fake escaped #309.

3. Trip::script (:2347-2355) — say which argv it is re-parsing (setup_pass, :1939-1944), and that the expect is the guard: the payload moves or the flag is renamed, and this fails loudly at the read rather than returning a neighbouring element. Worth noting alongside that the shape itself is pinned as real devpod behaviour: --command is in SSH_VALUE_FLAGS (devlaunch-test-support/src/devpod.rs:180) and conformance.json:258 carries an ssh ... --command row measured against v0.26.1.

Optional one-liner while in there: &self.argv[at + 1] panics with an unnamed index message when --command is the last element. .get(at + 1).expect("a --command with a payload") says which of the two assumptions broke. Test-side code, no production change.

Testing the outcome

No behaviour changes, so no new test. pixi run cargo test --workspace, clippy --locked --all-targets -- -D warnings and fmt --check from rust/ are the whole gate. The claims above are checkable by hand: grep -rn "impl Runner for" rust/ returns nine, and three of those files hold a ProcessRunner field.

Out of scope

Adding corpus rows for Trips, adding a second argv guard, and retiring any fake (ruled out on evidence in #309).

Activity

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions