aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/app/mod.rs17
-rw-r--r--src/release_notes.rs28
2 files changed, 44 insertions, 1 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 36b00033..11a034f9 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -1384,6 +1384,23 @@ mod tests {
}
#[test]
+ fn startup_does_not_restore_update_available_from_older_saved_notes() {
+ let _guard = config_env_lock().lock().unwrap();
+ let path = temp_config_path("startup-stale-update-notes");
+ std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path);
+
+ crate::release_notes::save_pending("0.4.9", "### Changed\n- One").unwrap();
+
+ let app = test_app();
+
+ assert_eq!(app.state.update_available, None);
+ assert!(app.state.latest_release_notes_available);
+
+ std::env::remove_var(crate::config::CONFIG_PATH_ENV_VAR);
+ let _ = std::fs::remove_dir_all(path.parent().unwrap());
+ }
+
+ #[test]
fn reload_keybinds_updates_live_state() {
let _guard = config_env_lock().lock().unwrap();
let path = temp_config_path("reload-keybinds-success");
diff --git a/src/release_notes.rs b/src/release_notes.rs
index 7d83dd15..dd09aaf8 100644
--- a/src/release_notes.rs
+++ b/src/release_notes.rs
@@ -100,8 +100,16 @@ fn release_notes_from_stored(
return None;
}
+ let preview = match (
+ crate::update::Version::parse(&stored.version),
+ crate::update::Version::parse(current_version),
+ ) {
+ (Some(stored_version), Some(current_version)) => stored_version > current_version,
+ _ => false,
+ };
+
Some(ReleaseNotes {
- preview: stored.version != current_version,
+ preview,
version: stored.version,
body,
})
@@ -214,6 +222,24 @@ mod tests {
}
#[test]
+ fn load_latest_does_not_mark_older_saved_version_as_preview() {
+ let path = std::env::temp_dir().join(format!(
+ "herdr-release-notes-{}-{}.json",
+ std::process::id(),
+ "stale"
+ ));
+ let _ = clear_pending_at(&path);
+ save_pending_to_path(&path, "0.3.0", "### Changed\n- One").unwrap();
+
+ let notes = load_latest_from_path(&path, "0.3.1").expect("latest notes");
+ assert_eq!(notes.version, "0.3.0");
+ assert_eq!(notes.body, "### Changed\n- One");
+ assert!(!notes.preview);
+
+ clear_pending_at(&path).unwrap();
+ }
+
+ #[test]
fn marking_current_version_seen_preserves_latest_notes_without_startup_modal() {
let path = std::env::temp_dir().join(format!(
"herdr-release-notes-{}-{}.json",