1.3 KiB
SSH Resolver Testability Design
Problem
The remote launcher resolver test installs a temporary ssh executable and
mutates process.env.PATH after Bun starts. Bun's synchronous process launcher
does not reliably use that late PATH change, so the focused test fails locally
and in CI even though the command-building behavior is correct.
Design
Allow resolveRemoteSubminerCommand to accept an optional remote runner that
defaults to the production runSsh function. Existing callers retain the same
behavior and two-argument API. The focused test will provide a small runner,
exercise the real candidate and PATH construction, and assert the host and
remote command passed across the SSH boundary.
Alternatives rejected:
- Explicitly forwarding
process.envtospawnSyncstill depends on Bun's executable-resolution behavior and changes production code to support a test harness. - Module-level mocking couples the test to loader behavior and obscures the resolver's actual dependency.
Validation
First update the focused test and confirm it remains red while the resolver ignores the injected runner. Then add the minimal runner parameter and confirm the focused test passes. Run the launcher verification lane, type checking, and the repository's default handoff gate.