# 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