Archived
- Enable clippy pedantic + nursery lints; fix all warnings - Add config validation (SF, CR, frequency range checks) - Zeroize passphrase intermediates after key derivation - Convert to lib+bin crate for fuzz target accessibility - Replace Vec with VecDeque for O(1) log/bucket rotation - Add TUI minimum terminal size guard Testing: - 145 unit + property tests (was 15) - 6 proptest groups (frame roundtrip, hash, SNR, air time, peer list, padding) - 2 cargo-fuzz targets (gossip frame decode, peer list decode) - cargo-mutants: 0 missed, 241 caught, 54 unviable Documentation: - README with prerequisites, quick start, config reference, architecture - Module-level and item-level rustdoc on all public items - LICENSE (MIT), rustfmt.toml, .gitignore Infrastructure: - GitHub Actions CI (fmt, clippy, test, audit) - cargo-mutants config (.cargo/mutants.toml) - justfile for common tasks
56 lines
1.6 KiB
TOML
56 lines
1.6 KiB
TOML
# cargo-mutants configuration
|
|
# Run with: cargo mutants
|
|
# Install with: cargo install cargo-mutants
|
|
|
|
# Exclude entire files that are untestable (main requires full app, setup requires interactive stdin)
|
|
exclude_globs = [
|
|
"src/main.rs",
|
|
"src/setup.rs",
|
|
]
|
|
|
|
# Exclude specific functions that require hardware, network, terminal, or full async infrastructure
|
|
exclude_re = [
|
|
# Equivalent mutants: Instant arithmetic never produces exact equality,
|
|
# so `< ttl` and `<= ttl` behave identically in practice.
|
|
"replace < with <= in DedupCache",
|
|
"replace < with <= in decode_peer_list",
|
|
# rate_limit.rs: equivalent mutant (secs is always > 0 from lora_air_time)
|
|
"replace > with >= in RateLimiter::from_radio_config",
|
|
# radio.rs: hardware-dependent functions
|
|
"radio_loop",
|
|
"connect_and_run",
|
|
# gossip.rs: async network functions
|
|
"Gossip::new",
|
|
"Gossip::shutdown",
|
|
"spawn_accept_loop",
|
|
"handle_incoming",
|
|
"spawn_receiver",
|
|
"spawn_broadcaster",
|
|
"spawn_dht_heartbeat",
|
|
"dht_read_and_join",
|
|
"dht_publish",
|
|
"dht_get_peers",
|
|
# router.rs: async event loop
|
|
"^src/router\\.rs:.* replace run ",
|
|
"^src/router\\.rs:.* in run$",
|
|
# tui.rs: terminal rendering functions
|
|
"tui::run",
|
|
"tui_loop",
|
|
"restore_terminal",
|
|
"draw_ui",
|
|
"draw_header",
|
|
"draw_network",
|
|
"draw_radio",
|
|
"draw_stats",
|
|
"draw_log",
|
|
"draw_activity",
|
|
"draw_sparkline_section",
|
|
"draw_shutdown_overlay",
|
|
"panel_block",
|
|
"status_pill",
|
|
"kv_line",
|
|
]
|
|
|
|
# Timeout per mutant test (seconds)
|
|
timeout_multiplier = 3.0
|