// Regression contract for preserving codec settings across upgrades. // // Scope: keep HEVC ingress and MJPEG UVC output defaults explicit, while still // allowing operator-provided install overrides. // Targets: server/client install scripts and client camera capture defaults. // Why: Lesavka now supports both MJPEG and HEVC upstream media, and installer // reruns must not silently revert the working profile. const SERVER_INSTALL: &str = include_str!(concat!( env!("CARGO_MANIFEST_DIR"), "/scripts/install/server.sh" )); const CLIENT_CAMERA: &str = include_str!(concat!( env!("CARGO_MANIFEST_DIR"), "/client/src/input/camera/capture_pipeline.rs" )); #[test] fn server_install_defaults_to_hevc_ingress_and_mjpeg_uvc_output() { for marker in [ "INSTALL_UVC_CODEC=${LESAVKA_INSTALL_UVC_CODEC:-mjpeg}", "INSTALL_CAM_CODEC=${LESAVKA_INSTALL_CAM_CODEC:-${LESAVKA_CAM_CODEC:-hevc}}", "printf 'LESAVKA_CAM_CODEC=%s\\n' \"${INSTALL_CAM_CODEC}\"", "printf 'LESAVKA_UVC_CODEC=%s\\n' \"${INSTALL_UVC_CODEC}\"", "\"LESAVKA_UVC_CODEC=${INSTALL_UVC_CODEC}\"", ] { assert!( SERVER_INSTALL.contains(marker), "server installer should preserve codec marker {marker}" ); } } #[test] fn server_install_does_not_let_ambient_uvc_codec_override_persisted_default() { assert!( !SERVER_INSTALL.contains("LESAVKA_UVC_CODEC=${LESAVKA_UVC_CODEC:-mjpeg}"), "ambient runtime UVC codec should not leak into install defaults" ); assert!( SERVER_INSTALL.contains("LESAVKA_INSTALL_UVC_CODEC"), "operator install override should remain available" ); } #[test] fn client_camera_can_emit_hevc_or_mjpeg_from_live_capture() { for marker in [ "LESAVKA_CAM_CODEC", "CameraCodec::Hevc", "CameraCodec::Mjpeg", "choose_hevc_encoder", "hevc_keyframe_interval", "image/jpeg", "video/x-h265", ] { assert!( CLIENT_CAMERA.contains(marker), "client camera pipeline should preserve codec marker {marker}" ); } } #[test] fn hevc_prerequisites_are_rechecked_idempotently() { for marker in [ "ensure_hevc_decode_support", "pacman -Sq --needed --noconfirm", "modprobe rpi_hevc_dec", "/etc/modules-load.d/lesavka-hevc.conf", "gst-inspect-1.0 v4l2slh265dec", "gst-inspect-1.0 avdec_h265", ] { assert!( SERVER_INSTALL.contains(marker), "HEVC prerequisite path should preserve marker {marker}" ); } }