refactor(tests): share one soulfind fixture across the e2e suites
The TUI suite had grown its own copy of the soulfind spawner the protocol suite already carried, and its own copy of the CLI suite's in-process client and settle helpers. All four suites now spawn, log in, settle and skip through `tests/common`: the CLI suite's own server goes too, and the fixture checks its child is still alive before calling the port answered, so a lost port cannot pass another server off as ours.
This commit is contained in:
@@ -621,19 +621,19 @@ cargo fmt
|
||||
|
||||
### End-to-end tests
|
||||
|
||||
Three suites run against [soulfind](https://github.com/soulfind-dev/soulfind),
|
||||
Four suites run against [soulfind](https://github.com/soulfind-dev/soulfind),
|
||||
a local Soulseek server: `soulseek-rs-lib/tests/e2e.rs` covers the protocol
|
||||
library, `soulseek-rs/tests/cli_e2e.rs` drives the binary the way a script
|
||||
would, and `soulseek-rs/tests/tui_e2e.rs` drives the window with key presses
|
||||
and reads the screen back. All are **server-optional**, running when a server
|
||||
is available and skipping otherwise, so `cargo test` stays green everywhere.
|
||||
would, `soulseek-rs/tests/daemon_protocol_e2e.rs` meets the daemon's control
|
||||
protocol as a third party would, and `soulseek-rs/tests/tui_e2e.rs` drives the
|
||||
window with key presses and reads the screen back. All are
|
||||
**server-optional**, running when a server is available and skipping
|
||||
otherwise, so `cargo test` stays green everywhere.
|
||||
|
||||
They locate a server in this order:
|
||||
|
||||
1. `SOULSEEK_TEST_SERVER=host:port`: connect to an already-running server, or
|
||||
2. `SOULFIND_BIN=/path/to/soulfind` (or a `soulfind/bin/soulfind` checkout in a
|
||||
parent directory), which spawns soulfind on an ephemeral port with a
|
||||
throwaway database.
|
||||
Every suite spawns soulfind from `SOULFIND_BIN=/path/to/soulfind` (or a
|
||||
`soulfind/bin/soulfind` checkout in a parent directory) on an ephemeral port
|
||||
with a throwaway database. The library and CLI suites take
|
||||
`SOULSEEK_TEST_SERVER=host:port` first, to run against a server already up.
|
||||
|
||||
```bash
|
||||
# Build soulfind once (see its BUILDING.md), then:
|
||||
@@ -659,8 +659,8 @@ soulfind instead of skipping.
|
||||
`cargo clippy --workspace --all-targets -- -D warnings`.
|
||||
- **Test**: `cargo test --verbose` on Linux, macOS, and Windows.
|
||||
- **End-to-end**: builds soulfind from source (LDC + `dub build :server`),
|
||||
points `SOULFIND_BIN` at it, and runs both the library and CLI e2e suites
|
||||
with `SOULSEEK_E2E_REQUIRED=1`, so a missing server fails instead of skipping.
|
||||
points `SOULFIND_BIN` at it, and runs all four e2e suites with
|
||||
`SOULSEEK_E2E_REQUIRED=1`, so a missing server fails instead of skipping.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
||||
Reference in New Issue
Block a user