ed007f7844
Add three reusable peer CLI game directory fixtures for local smoke tests. Each fixture is a complete games root that can be passed directly to --games-dir, with catalog-backed game IDs, version.ini sentinels, and real RAR archives renamed to .eti. The fixtures intentionally overlap in two places so multi-peer tests can cover shared availability. Alpha and bravo both contain ggoo, while bravo and charlie both contain cnc4. The archives contain generated random payload files rather than meaningful game data; this keeps the fixtures fake while still exercising RAR-backed ETI handling. The tradeoff is committing roughly 34 MiB of binary fixture data. That is intentional here because the fixtures need real archives for CLI tests instead of synthetic text placeholders. Test Plan: - Ran git diff --check. - Ran unrar t -idq over every .eti file in the fixture tree. Refs: none
45 lines
1.5 KiB
Markdown
45 lines
1.5 KiB
Markdown
# lanspread-peer-cli
|
|
|
|
Scriptable peer harness for automated LAN-spread tests. The binary starts the
|
|
core peer runtime without the Tauri GUI, reads one JSON command per stdin line,
|
|
and writes JSONL events, results, and errors to stdout.
|
|
|
|
## Running
|
|
|
|
```bash
|
|
just peer-cli-build
|
|
just peer-cli-image
|
|
just peer-cli-run alpha
|
|
```
|
|
|
|
Useful flags:
|
|
|
|
- `--games-dir PATH` stores local archives and installs.
|
|
- `--state-dir PATH` stores the generated peer identity.
|
|
- `--fixture GAME_ID` seeds a tiny archive that the fixture unpacker can install.
|
|
|
|
## Fixture Game Directories
|
|
|
|
`fixtures/fixture-alpha`, `fixtures/fixture-bravo`, and
|
|
`fixtures/fixture-charlie` are ready-to-use game directories for local CLI
|
|
smoke tests. Point `--games-dir` at one of them to start a peer with several
|
|
catalog-backed fake games. Each game includes `version.ini` and a real RAR
|
|
archive renamed to `.eti`; `fixture-alpha` and `fixture-bravo` share `ggoo`,
|
|
while `fixture-bravo` and `fixture-charlie` share `cnc4`.
|
|
|
|
## Commands
|
|
|
|
Every command is a JSON object with `cmd` or `command`; `id` is optional and is
|
|
echoed back on the result or error line.
|
|
|
|
```json
|
|
{"id":"s1","cmd":"status"}
|
|
{"id":"p1","cmd":"wait-peers","count":1,"timeout_ms":5000}
|
|
{"id":"c1","cmd":"connect","addr":"127.0.0.1:34567"}
|
|
{"id":"g1","cmd":"list-games"}
|
|
{"id":"d1","cmd":"download","game_id":"fixture-one","install":true}
|
|
{"id":"i1","cmd":"install","game_id":"fixture-one"}
|
|
{"id":"u1","cmd":"uninstall","game_id":"fixture-one"}
|
|
{"id":"q1","cmd":"shutdown"}
|
|
```
|