//! Include-based coverage for microphone startup cleanup paths. //! //! Scope: include `client/src/input/microphone.rs` and exercise startup //! failures without requiring a live microphone. //! Targets: `client/src/input/microphone.rs`. //! Why: startup failures should move the pipeline back to NULL before the //! capture object returns an error. #[allow(warnings)] mod microphone_startup_contract { include!(env!("LESAVKA_CLIENT_MICROPHONE_SRC")); use serial_test::serial; use temp_env::with_var; #[test] #[cfg(coverage)] #[serial] fn startup_failure_cleans_up_pipeline_state() { gst::init().ok(); with_var("LESAVKA_MIC_SOURCE", None::<&str>, || { with_var( "LESAVKA_MIC_TEST_SOURCE_DESC", Some("filesrc location=/definitely-missing-lesavka-mic.raw"), || { let result = MicrophoneCapture::new(); assert!(result.is_err(), "missing filesrc should fail startup"); }, ); }); } }