This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora-bridge/.cargo/mutants.toml
T
swaits 6bae65c464 feat: publish-ready overhaul — lints, tests, docs, CI, fuzzing, mutant testing
- 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
2026-04-06 14:52:18 -06:00

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