aboutsummaryrefslogtreecommitdiff
path: root/src/app/input/modal.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 00:34:04 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 00:34:04 +0300
commitff8e5a14abe445a61dc200fd30a70870c75d183c (patch)
tree53934152b2b7993a67c4c05ce54a58548310a7d5 /src/app/input/modal.rs
parentfb93e3747544afc3288d7b5e831d5ca3dd5c3768 (diff)
fix: stop auto-opening release notes on startup
Diffstat (limited to 'src/app/input/modal.rs')
-rw-r--r--src/app/input/modal.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/app/input/modal.rs b/src/app/input/modal.rs
index 954f97de..ff5e8582 100644
--- a/src/app/input/modal.rs
+++ b/src/app/input/modal.rs
@@ -627,6 +627,23 @@ mod tests {
use super::super::{capture_snapshot, state_with_workspaces};
use super::*;
+ fn config_env_lock() -> &'static std::sync::Mutex<()> {
+ static LOCK: std::sync::OnceLock<std::sync::Mutex<()>> = std::sync::OnceLock::new();
+ LOCK.get_or_init(|| std::sync::Mutex::new(()))
+ }
+
+ fn temp_config_path(name: &str) -> std::path::PathBuf {
+ let unique = format!(
+ "herdr-modal-{name}-{}-{}",
+ std::process::id(),
+ std::time::SystemTime::now()
+ .duration_since(std::time::UNIX_EPOCH)
+ .unwrap()
+ .as_nanos()
+ );
+ std::env::temp_dir().join(unique).join("config.toml")
+ }
+
#[test]
fn custom_resize_key_exits_resize_mode() {
let mut state = state_with_workspaces(&["test"]);
@@ -643,6 +660,34 @@ mod tests {
}
#[test]
+ fn global_menu_whats_new_opens_saved_release_notes() {
+ let _guard = config_env_lock().lock().unwrap();
+ let path = temp_config_path("whats-new-saved-release-notes");
+ std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path);
+ crate::release_notes::save_pending(env!("CARGO_PKG_VERSION"), "### Changed\n- Menu")
+ .unwrap();
+
+ let mut state = state_with_workspaces(&["test"]);
+ state.latest_release_notes_available = true;
+
+ assert!(global_menu_actions(&state).contains(&GlobalMenuAction::WhatsNew));
+
+ apply_global_menu_action(&mut state, GlobalMenuAction::WhatsNew);
+
+ assert_eq!(state.mode, Mode::ReleaseNotes);
+ assert_eq!(
+ state
+ .release_notes
+ .as_ref()
+ .map(|notes| notes.body.as_str()),
+ Some("### Changed\n- Menu")
+ );
+
+ std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR);
+ let _ = std::fs::remove_dir_all(path.parent().unwrap());
+ }
+
+ #[test]
fn rename_modal_keyboard_and_mouse_share_actions() {
let mut state = state_with_workspaces(&["test"]);
state.mode = Mode::RenameWorkspace;