Allow specifying `MAX_EXCERPTS` via an env variable in random tests

Antonio Scandurra created

Change summary

crates/diagnostics/src/diagnostics.rs      | 2 +-
crates/editor/src/display_map.rs           | 2 +-
crates/editor/src/display_map/block_map.rs | 2 +-
crates/editor/src/display_map/fold_map.rs  | 2 +-
crates/editor/src/display_map/tab_map.rs   | 2 +-
crates/editor/src/display_map/wrap_map.rs  | 2 +-
crates/editor/src/multi_buffer.rs          | 7 ++++++-
7 files changed, 12 insertions(+), 7 deletions(-)

Detailed changes

crates/diagnostics/src/diagnostics.rs 🔗

@@ -3,7 +3,7 @@ use std::{cmp, sync::Arc};
 use editor::{
     diagnostic_block_renderer, diagnostic_style,
     display_map::{BlockDisposition, BlockProperties},
-    Anchor, Editor, ExcerptProperties, MultiBuffer,
+    Editor, ExcerptProperties, MultiBuffer,
 };
 use gpui::{
     action, elements::*, keymap::Binding, AppContext, Entity, ModelHandle, MutableAppContext,

crates/editor/src/display_map.rs 🔗

@@ -532,7 +532,7 @@ mod tests {
                 let text = RandomCharIter::new(&mut rng).take(len).collect::<String>();
                 MultiBuffer::build_simple(&text, cx)
             } else {
-                MultiBuffer::build_random(rng.gen_range(1..=5), &mut rng, cx)
+                MultiBuffer::build_random(&mut rng, cx)
             }
         });
 

crates/editor/src/display_map/block_map.rs 🔗

@@ -1123,7 +1123,7 @@ mod tests {
             log::info!("initial buffer text: {:?}", text);
             MultiBuffer::build_simple(&text, cx)
         } else {
-            MultiBuffer::build_random(rng.gen_range(1..=5), &mut rng, cx)
+            MultiBuffer::build_random(&mut rng, cx)
         };
 
         let mut buffer_snapshot = buffer.read(cx).snapshot(cx);

crates/editor/src/display_map/fold_map.rs 🔗

@@ -1252,7 +1252,7 @@ mod tests {
         let buffer = if rng.gen() {
             MultiBuffer::build_simple(&text, cx)
         } else {
-            MultiBuffer::build_random(rng.gen_range(1..=5), &mut rng, cx)
+            MultiBuffer::build_random(&mut rng, cx)
         };
         let mut buffer_snapshot = buffer.read(cx).snapshot(cx);
         let mut map = FoldMap::new(buffer_snapshot.clone()).0;

crates/editor/src/display_map/tab_map.rs 🔗

@@ -458,7 +458,7 @@ mod tests {
             let text = RandomCharIter::new(&mut rng).take(len).collect::<String>();
             MultiBuffer::build_simple(&text, cx)
         } else {
-            MultiBuffer::build_random(rng.gen_range(1..=5), &mut rng, cx)
+            MultiBuffer::build_random(&mut rng, cx)
         };
         let buffer_snapshot = buffer.read(cx).snapshot(cx);
         log::info!("Buffer text: {:?}", buffer_snapshot.text());

crates/editor/src/display_map/wrap_map.rs 🔗

@@ -1021,7 +1021,7 @@ mod tests {
 
         let buffer = cx.update(|cx| {
             if rng.gen() {
-                MultiBuffer::build_random(rng.gen_range(1..=5), &mut rng, cx)
+                MultiBuffer::build_random(&mut rng, cx)
             } else {
                 let len = rng.gen_range(0..10);
                 let text = RandomCharIter::new(&mut rng).take(len).collect::<String>();

crates/editor/src/multi_buffer.rs 🔗

@@ -178,13 +178,18 @@ impl MultiBuffer {
 
     #[cfg(any(test, feature = "test-support"))]
     pub fn build_random(
-        excerpts: usize,
         mut rng: &mut impl rand::Rng,
         cx: &mut gpui::MutableAppContext,
     ) -> ModelHandle<Self> {
         use rand::prelude::*;
+        use std::env;
         use text::RandomCharIter;
 
+        let max_excerpts = env::var("MAX_EXCERPTS")
+            .map(|i| i.parse().expect("invalid `MAX_EXCERPTS` variable"))
+            .unwrap_or(5);
+        let excerpts = rng.gen_range(1..=max_excerpts);
+
         cx.add_model(|cx| {
             let mut multibuffer = MultiBuffer::new(0);
             let mut buffers = Vec::new();