56 lines
1.7 KiB
Rust
56 lines
1.7 KiB
Rust
//! Module-path coverage for client-side H.264 decoder selection.
|
|
//!
|
|
//! Scope: include the client decoder selection helper directly.
|
|
//! Targets: `client/src/video_support.rs`.
|
|
//! Why: operator decoder overrides should fall back cleanly on machines with
|
|
//! different GStreamer plugin sets.
|
|
|
|
#[path = "../../client/src/video_support.rs"]
|
|
mod video_support;
|
|
|
|
use serial_test::serial;
|
|
use temp_env::with_var;
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn decoder_override_accepts_decodebin_without_factory_lookup() {
|
|
with_var("LESAVKA_H264_DECODER", Some("decodebin"), || {
|
|
assert_eq!(video_support::pick_h264_decoder(), "decodebin");
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn decoder_override_accepts_buildable_element() {
|
|
with_var("LESAVKA_H264_DECODER", Some("fakesink"), || {
|
|
assert_eq!(video_support::pick_h264_decoder(), "fakesink");
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
#[serial]
|
|
fn decoder_override_ignores_blank_or_unknown_values() {
|
|
with_var("LESAVKA_H264_DECODER", Some(" "), || {
|
|
assert!(!video_support::pick_h264_decoder().trim().is_empty());
|
|
});
|
|
with_var("LESAVKA_H264_DECODER", Some("not-a-real-decoder"), || {
|
|
assert!(!video_support::pick_h264_decoder().trim().is_empty());
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
#[serial]
|
|
#[cfg(coverage)]
|
|
fn decoder_selection_falls_back_when_no_factory_can_build() {
|
|
with_var("TEST_DISABLE_H264_DECODER_FACTORY", Some("1"), || {
|
|
with_var("LESAVKA_H264_DECODER", Some("fakesink"), || {
|
|
assert_eq!(video_support::pick_h264_decoder(), "decodebin");
|
|
});
|
|
});
|
|
with_var("TEST_FAIL_GST_INIT", Some("1"), || {
|
|
with_var("LESAVKA_H264_DECODER", None::<&str>, || {
|
|
assert_eq!(video_support::pick_h264_decoder(), "decodebin");
|
|
});
|
|
});
|
|
}
|