aboutsummaryrefslogtreecommitdiff
path: root/src/app/input
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/input')
-rw-r--r--src/app/input/mod.rs1
-rw-r--r--src/app/input/modal.rs45
-rw-r--r--src/app/input/navigate.rs3
-rw-r--r--src/app/input/terminal.rs1
4 files changed, 45 insertions, 5 deletions
diff --git a/src/app/input/mod.rs b/src/app/input/mod.rs
index ae8fb12b..ad68f9da 100644
--- a/src/app/input/mod.rs
+++ b/src/app/input/mod.rs
@@ -295,7 +295,6 @@ fn app_for_mouse_test() -> App {
&crate::config::Config::default(),
true,
None,
- None,
api_rx,
crate::api::EventHub::default(),
);
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;
diff --git a/src/app/input/navigate.rs b/src/app/input/navigate.rs
index e2e0993e..34d0a342 100644
--- a/src/app/input/navigate.rs
+++ b/src/app/input/navigate.rs
@@ -1035,7 +1035,6 @@ mod tests {
&Config::default(),
true,
None,
- None,
api_rx,
crate::api::EventHub::default(),
);
@@ -1084,7 +1083,6 @@ mod tests {
&Config::default(),
true,
None,
- None,
api_rx,
crate::api::EventHub::default(),
);
@@ -1153,7 +1151,6 @@ mod tests {
&Config::default(),
true,
None,
- None,
api_rx,
crate::api::EventHub::default(),
);
diff --git a/src/app/input/terminal.rs b/src/app/input/terminal.rs
index b5ceda12..12fb67b2 100644
--- a/src/app/input/terminal.rs
+++ b/src/app/input/terminal.rs
@@ -461,7 +461,6 @@ mod tests {
&Config::default(),
true,
None,
- None,
api_rx,
crate::api::EventHub::default(),
);