lesavka/tests/contract/client/input/microphone/client_microphone_startup_contract.rs

48 lines
1.3 KiB
Rust
Raw Normal View History

// 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 live_capture_clock {
include!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/tests/helpers/support/live_capture_clock_shim.rs"
));
}
#[allow(warnings)]
mod input {
pub mod audio_codec {
pub use lesavka_client::input::audio_codec::*;
}
}
#[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");
},
);
});
}
}