A public reference implementation for validating cross-platform Rust development environments. This project is intentionally independent and contains no proprietary code.
RPV Kit (rpv) runs structured validation tests across filesystem, keyring, SQLite, HTTP, TLS, compression, JSON, logging, configuration, environment, process execution, and file watching — then generates CI-ready reports in Markdown, JSON, and HTML.
| Platform | Keyring backend | CI runner |
|---|---|---|
| Windows | Credential Manager | windows-latest |
| macOS | Keychain | macos-latest |
| Linux | Secret Service | ubuntu-latest |
- Rust stable (see
rust-toolchain.toml) - Platform keyring dependencies:
- Linux:
libsecret-1-dev, D-Bus session - Windows / macOS: no extra setup required
- Linux:
cargo build --releasecargo run --release -- validateReports are written to report-output/ by default:
report-output/
├── validation-report.md
├── validation-report.json
└── validation-report.html
rpv system-info
rpv keyring-test
rpv filesystem-test
rpv sqlite-test
rpv http-test
rpv tls-test| Command | Description |
|---|---|
validate |
Run all modules and generate reports |
system-info |
Print platform and toolchain information |
keyring-test |
Keyring store/load/update/delete tests |
filesystem-test |
Filesystem operation tests |
sqlite-test |
Embedded SQLite tests |
http-test |
HTTP client tests (requires network) |
tls-test |
TLS certificate validation tests |
export-report |
Convert a JSON report to MD or HTML |
rpv validate --output ./reports --formats markdown json html --strict
rpv export-report --input report.json --output report.md --format markdown| Module | What it validates |
|---|---|
| filesystem | Create, read, write, rename, metadata, missing entries |
| keyring | Store, load, update, delete, migration, edge cases |
| sqlite | In-memory DB, CRUD, transactions |
| http | GET requests, headers, timeouts |
| tls | HTTPS, certificate chains, invalid cert rejection |
| compression | gzip roundtrip, SHA-256 integrity |
| json | Serialize, deserialize, roundtrip, error handling |
| logging | tracing subscriber init and structured fields |
| configuration | TOML config loading, env overrides |
| environment | Env vars, cwd, temp dir, args |
| process | Subprocess spawn, exit codes |
| file_watch | Filesystem event notifications |
Optional features (disabled by default):
cargo build --features clipboard,notificationsThe keyring module exercises the native credential store on each platform:
- store — write a credential
- load — read it back
- update — overwrite the value
- delete — remove and verify absence
- migration — move a credential between service names
- corrupted_entry — empty/overwritten credential handling
- missing_entry —
NoEntryerror for absent credentials - permission_denied — skipped in CI (requires manual platform setup)
GitHub Actions runs on Linux, Windows, and macOS:
cargo fmt --checkcargo checkcargo testcargo clippy -- -D warningsrpv validatewith artifact upload
See CI.md for details on adapting the workflow to your project.
- ARCHITECTURE.md — design and module layout
- CONTRIBUTING.md — how to contribute
- CI.md — GitHub Actions guide
- SECURITY.md — security policy
- RELEASE.md — release process
Sample CI artifacts are in examples/reports/.
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.