49 lines
1.6 KiB
Rust
49 lines
1.6 KiB
Rust
|
|
// System installation contract for safe server/client deployment scripts.
|
||
|
|
//
|
||
|
|
// Scope: verify install scripts keep idempotent runtime defaults and explicit
|
||
|
|
// operator gates around disruptive system changes.
|
||
|
|
// Targets: `scripts/install/server.sh` and `scripts/install/client.sh`.
|
||
|
|
// Why: Lesavka runs across multiple machines; install scripts must configure
|
||
|
|
// the system repeatably without surprising gadget resets or missing media deps.
|
||
|
|
|
||
|
|
const SERVER_INSTALL: &str = include_str!(concat!(
|
||
|
|
env!("CARGO_MANIFEST_DIR"),
|
||
|
|
"/scripts/install/server.sh"
|
||
|
|
));
|
||
|
|
const CLIENT_INSTALL: &str = include_str!(concat!(
|
||
|
|
env!("CARGO_MANIFEST_DIR"),
|
||
|
|
"/scripts/install/client.sh"
|
||
|
|
));
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn system_installers_keep_disruptive_changes_opt_in_and_media_defaults_explicit() {
|
||
|
|
for marker in [
|
||
|
|
"LESAVKA_INSTALL_CAM_OUTPUT",
|
||
|
|
"LESAVKA_INSTALL_UVC_CODEC",
|
||
|
|
"LESAVKA_FORCE_GADGET_REBUILD",
|
||
|
|
"LESAVKA_ALLOW_GADGET_RESET",
|
||
|
|
"Preserving the attached gadget to avoid wedging the Pi USB controller",
|
||
|
|
"LESAVKA_KERNEL_UPDATE:-0",
|
||
|
|
"gst-plugins-bad",
|
||
|
|
"gst-libav",
|
||
|
|
] {
|
||
|
|
assert!(
|
||
|
|
SERVER_INSTALL.contains(marker),
|
||
|
|
"server installer should preserve marker {marker}"
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
for marker in [
|
||
|
|
"LESAVKA_CLIENT_PKI_BUNDLE",
|
||
|
|
"desktop-file-utils",
|
||
|
|
"gst-plugin-pipewire",
|
||
|
|
"LESAVKA_REF",
|
||
|
|
"Installing launchable client binaries",
|
||
|
|
] {
|
||
|
|
assert!(
|
||
|
|
CLIENT_INSTALL.contains(marker),
|
||
|
|
"client installer should preserve marker {marker}"
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|