mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 01:35:36 +00:00
refactor(core): compile the mock provider only with a testing feature
Phase 3a of docs/DESIGN.md. MockProvider moves to api/mock.rs, and it, the embedded MSN fixture bodies, and the IDX_MOCK_* hooks compile only with idx-core's new `testing` feature. idx-cli enables it as a dev-dependency, so `cargo test` keeps the fixture-backed provider while release binaries no longer embed fixture data or honor IDX_USE_MOCK_PROVIDER. Parser helpers used only by the mock are gated the same way. The packaged-cli flake check no longer relies on the mock; it checks an offline cache miss (JSON CACHEMISS, exit 3) instead. Goldens unchanged; clippy is clean with and without `testing`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
15947de51a
commit
e78d9fcecd
13 changed files with 214 additions and 161 deletions
|
|
@ -121,7 +121,7 @@ let conn = Connection::open(path)
|
|||
- **Output contracts:** parse JSON from stdout on success and stderr on failure; errors must leave stdout empty. Assert meaningful values, types, and stable error codes rather than substrings or diagnostic wording.
|
||||
- **Stateful workflows:** compare cached data across offline/failure transitions, and verify failed snapshot updates preserve both database bytes and query results. Put behavioral coverage in `tests/cli.rs`, not shell smoke.
|
||||
- **Fixtures:** `tests/fixtures/*.json` — real API responses, sanitized
|
||||
- **No live API calls in CI** — `IDX_USE_MOCK_PROVIDER=1`
|
||||
- **No live API calls in CI** — `IDX_USE_MOCK_PROVIDER=1` selects the fixture-backed mock provider, which exists only when idx-core's `testing` feature is on (idx-cli enables it as a dev-dependency, so `cargo test` has it and release builds do not)
|
||||
- **Test naming:** `test_<function>_<scenario>` (e.g., `test_parse_id_number_with_dots`)
|
||||
- **Coverage over counts:** replacing redundant unit assertions with stronger integration scenarios must retain meaningful error, boundary, and data-integrity coverage.
|
||||
|
||||
|
|
|
|||
|
|
@ -94,8 +94,9 @@ Key decisions:
|
|||
- **Explicit configuration.** Core reads no environment variables. `IDX_*` env
|
||||
parsing, `config.toml` loading, and XDG resolution move to a `CoreConfig::load()`
|
||||
helper that frontends call; tests construct `CoreConfig` directly.
|
||||
- **Mock provider behind a `testing` feature.** Today `MockProvider` ships in the
|
||||
release binary and reads fixtures relative to the working directory.
|
||||
- **Mock provider behind a `testing` feature.** Done: `MockProvider` and the
|
||||
embedded MSN fixtures compile only with idx-core's `testing` feature, which
|
||||
idx-cli enables as a dev-dependency.
|
||||
- **Typed inputs.** Screener filters, regions, statement and earnings filters
|
||||
become enums with `FromStr`, so validation is identical across frontends.
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ offline with pinned tools:
|
|||
| `fmt`, `clippy` | formatting and lints (`--all-targets`) |
|
||||
| `test` | unit/module tests, `tests/cli.rs` CLI integration tests, and `tests/golden.rs` output parity |
|
||||
| `default`, `package` | release build and `cargo package` verification |
|
||||
| `packaged-cli` | the wrapped Nix binary starts, emits JSON, and generates completions |
|
||||
| `packaged-cli` | the wrapped Nix release binary emits JSON, generates completions, and returns a JSON `CACHEMISS` error with exit 3 offline |
|
||||
| `ownership-publisher`, `publisher-test` | packaged publisher entry point and its regression scenarios |
|
||||
| `install-script-sh`, `install-script-dash`, `shellcheck` | installer regressions and shell lint |
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue