app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit ef5323bb4967de82b9d01f9aeb6f4f2cc6ac0baa
parent fb890a80115a7f8a0ecfd44adeaa4900f856147b
Author: triesap <tyson@radroots.org>
Date:   Fri, 17 Apr 2026 18:44:12 +0000

tests: add the radroots_app launcher source guards

- add desktop source-guard tests that lock the launcher onto localized-copy-only menu and window sources
- register the guard module under the mounted launcher test surface without changing runtime behavior
- run cargo metadata --format-version 1 --no-deps, cargo test, and ./scripts/check.sh from the mounted repo root
- finish the radroots_app ui upgrade validation lane on the upgraded shell

Diffstat:
Mcrates/launchers/desktop/src/lib.rs | 2++
Acrates/launchers/desktop/src/source_guards.rs | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/crates/launchers/desktop/src/lib.rs b/crates/launchers/desktop/src/lib.rs @@ -2,6 +2,8 @@ mod app; mod menus; +#[cfg(test)] +mod source_guards; mod window; pub fn run() { diff --git a/crates/launchers/desktop/src/source_guards.rs b/crates/launchers/desktop/src/source_guards.rs @@ -0,0 +1,62 @@ +use std::collections::BTreeSet; + +const ALLOWED_MENU_LITERALS: &[&str] = &["cmd-q"]; + +const ALLOWED_WINDOW_LITERALS: &[&str] = &[ + "account-add", + "account-admin-console", + "account-log-out", + "account-more", + "home-metadata-scroll", + "settings window should open", + "settings-allow-relay-connections", + "settings-launch-at-login", + "settings-manage-media-servers", + "settings-nav-about", + "settings-nav-accounts", + "settings-nav-settings", + "settings-panel-scroll", + "settings-use-media-servers", + "settings-use-nip05", +]; + +#[test] +fn desktop_menu_source_uses_localized_copy_paths() { + assert_eq!( + extract_string_literals(include_str!("menus.rs")), + ALLOWED_MENU_LITERALS.iter().copied().collect::<BTreeSet<_>>() + ); +} + +#[test] +fn desktop_window_source_uses_localized_copy_paths() { + assert_eq!( + extract_string_literals(include_str!("window.rs")), + ALLOWED_WINDOW_LITERALS + .iter() + .copied() + .collect::<BTreeSet<_>>() + ); +} + +fn extract_string_literals(source: &str) -> BTreeSet<&str> { + let mut literals = BTreeSet::new(); + let bytes = source.as_bytes(); + let mut start = None; + let mut escaped = false; + + for (index, byte) in bytes.iter().copied().enumerate() { + match (start, byte, escaped) { + (None, b'"', _) => start = Some(index + 1), + (Some(_), b'\\', false) => escaped = true, + (Some(begin), b'"', false) => { + literals.insert(&source[begin..index]); + start = None; + } + (Some(_), _, true) => escaped = false, + _ => {} + } + } + + literals +}