mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 04:49:49 -07:00
docs(launcher): design SSH resolver testability
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# 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.env` to `spawnSync` still 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.
|
||||
Reference in New Issue
Block a user