commit 7d94a19fb82ef14691e622490916b04587267e83
parent 51043d1dc546a39c5c032c2e9a14e79c002332e1
Author: triesap <tyson@radroots.org>
Date: Sat, 18 Apr 2026 04:36:45 +0000
tests: cover shell reset copy contract
Diffstat:
2 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/crates/launchers/desktop/src/source_guards.rs b/crates/launchers/desktop/src/source_guards.rs
@@ -20,6 +20,17 @@ const ALLOWED_WINDOW_LITERALS: &[&str] = &[
"settings-use-nip05",
];
+const REQUIRED_WINDOW_COPY_KEYS: &[&str] = &[
+ "AppTextKey::HomeSetupCreateAccountAction",
+ "AppTextKey::SettingsAccountNoSelectionTitle",
+ "AppTextKey::SettingsAccountNoSelectionBody",
+ "AppTextKey::SettingsAccountStatusLoggedOut",
+ "AppTextKey::SettingsAccountActivationInactive",
+ "AppTextKey::SettingsAccountAddAction",
+ "AppTextKey::SettingsAccountLogOutAction",
+ "AppTextKey::SettingsAccountOpenWorkspaceAction",
+];
+
#[test]
fn desktop_menu_source_uses_localized_copy_paths() {
assert_eq!(
@@ -42,6 +53,18 @@ fn desktop_window_source_uses_localized_copy_paths() {
);
}
+#[test]
+fn desktop_window_source_keeps_shell_reset_copy_keyed() {
+ let source = include_str!("window.rs");
+
+ for copy_key in REQUIRED_WINDOW_COPY_KEYS {
+ assert!(
+ source.contains(copy_key),
+ "desktop window is missing localized copy key {copy_key}"
+ );
+ }
+}
+
fn extract_string_literals(source: &str) -> BTreeSet<&str> {
let mut literals = BTreeSet::new();
let bytes = source.as_bytes();
diff --git a/crates/shared/i18n/src/lib.rs b/crates/shared/i18n/src/lib.rs
@@ -134,6 +134,40 @@ mod tests {
}
#[test]
+ fn english_shell_reset_copy_matches_setup_and_utility_contract() {
+ assert_eq!(
+ app_text(AppTextKey::HomeSetupCreateAccountAction),
+ "Create account"
+ );
+ assert_eq!(app_text(AppTextKey::SettingsTitle), "Radroots Settings");
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountNoSelectionTitle),
+ "No account selected"
+ );
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountNoSelectionBody),
+ "Add a local account to start using Radroots on this device."
+ );
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountStatusLoggedOut),
+ "Logged Out"
+ );
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountActivationInactive),
+ "Not activated"
+ );
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountAddAction),
+ "Add Account..."
+ );
+ assert_eq!(app_text(AppTextKey::SettingsAccountLogOutAction), "Log Out");
+ assert_eq!(
+ app_text(AppTextKey::SettingsAccountOpenWorkspaceAction),
+ "Open Workspace..."
+ );
+ }
+
+ #[test]
fn host_locale_negotiation_reduces_to_supported_base_locale() {
assert_eq!(resolve_locale_from_host("en_US.UTF-8"), "en");
assert_eq!(resolve_locale_from_host("en-GB"), "en");