From de7085249737f2d970b171fe080b4fad6a36d9f2 Mon Sep 17 00:00:00 2001 From: Will Bradley Date: Thu, 7 Nov 2024 09:17:43 -0700 Subject: [PATCH] Fix a test flake involving zeroed out group_intervals (#20328) Release Notes: - N/A --- crates/editor/src/editor_tests.rs | 8 ++++++-- crates/multi_buffer/src/multi_buffer.rs | 18 ++++++++++++++---- crates/text/src/tests.rs | 1 + crates/text/src/text.rs | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index 5c78567b57178107c69b89dbff89bb9e6acd6d2c..020963c1c7d10c18ad9b9426126662325218289e 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -169,8 +169,12 @@ fn test_undo_redo_with_selection_restoration(cx: &mut TestAppContext) { init_test(cx, |_| {}); let mut now = Instant::now(); - let buffer = cx.new_model(|cx| language::Buffer::local("123456", cx)); - let group_interval = buffer.update(cx, |buffer, _| buffer.transaction_group_interval()); + let group_interval = Duration::from_millis(1); + let buffer = cx.new_model(|cx| { + let mut buf = language::Buffer::local("123456", cx); + buf.set_group_interval(group_interval); + buf + }); let buffer = cx.new_model(|cx| MultiBuffer::singleton(buffer, cx)); let editor = cx.add_window(|cx| build_editor(buffer.clone(), cx)); diff --git a/crates/multi_buffer/src/multi_buffer.rs b/crates/multi_buffer/src/multi_buffer.rs index 31a5b3230017b1f60bf3462f378dfb088497778b..b2e982631050c3435a7fcf5f5a48290e7254a341 100644 --- a/crates/multi_buffer/src/multi_buffer.rs +++ b/crates/multi_buffer/src/multi_buffer.rs @@ -6482,11 +6482,21 @@ mod tests { fn test_history(cx: &mut AppContext) { let test_settings = SettingsStore::test(cx); cx.set_global(test_settings); - - let buffer_1 = cx.new_model(|cx| Buffer::local("1234", cx)); - let buffer_2 = cx.new_model(|cx| Buffer::local("5678", cx)); + let group_interval: Duration = Duration::from_millis(1); + let buffer_1 = cx.new_model(|cx| { + let mut buf = Buffer::local("1234", cx); + buf.set_group_interval(group_interval); + buf + }); + let buffer_2 = cx.new_model(|cx| { + let mut buf = Buffer::local("5678", cx); + buf.set_group_interval(group_interval); + buf + }); let multibuffer = cx.new_model(|_| MultiBuffer::new(Capability::ReadWrite)); - let group_interval = multibuffer.read(cx).history.group_interval; + multibuffer.update(cx, |this, _| { + this.history.group_interval = group_interval; + }); multibuffer.update(cx, |multibuffer, cx| { multibuffer.push_excerpts( buffer_1.clone(), diff --git a/crates/text/src/tests.rs b/crates/text/src/tests.rs index 8c5d7014eebda069d56384719fa9c613e8d47371..4debfa6292cebeb143fade7e5f6a2f9d9fc81dde 100644 --- a/crates/text/src/tests.rs +++ b/crates/text/src/tests.rs @@ -608,6 +608,7 @@ fn test_history() { fn test_finalize_last_transaction() { let now = Instant::now(); let mut buffer = Buffer::new(0, BufferId::new(1).unwrap(), "123456".into()); + buffer.history.group_interval = Duration::from_millis(1); buffer.start_transaction_at(now); buffer.edit([(2..4, "cd")]); diff --git a/crates/text/src/text.rs b/crates/text/src/text.rs index 1d214fe0e14ae7ac4a25d21425d887ae9883b624..b037327f7e55acc606ba01e35183cfebcf129931 100644 --- a/crates/text/src/text.rs +++ b/crates/text/src/text.rs @@ -227,7 +227,7 @@ impl History { if let Some(mut entry) = entries.next_back() { while let Some(prev_entry) = entries.next_back() { if !prev_entry.suppress_grouping - && entry.first_edit_at - prev_entry.last_edit_at <= self.group_interval + && entry.first_edit_at - prev_entry.last_edit_at < self.group_interval { entry = prev_entry; count += 1;