diff --git a/src/event.rs b/src/event.rs index f69136df..c9043a06 100644 --- a/src/event.rs +++ b/src/event.rs @@ -336,6 +336,7 @@ impl Processor { if ref_test { // dump grid state let mut grid = processor.ctx.terminal.grid().clone(); + grid.initialize_all(&::term::cell::Cell::default()); grid.truncate(); let serialized_grid = json::to_string(&grid) @@ -344,6 +345,11 @@ impl Processor { let serialized_size = json::to_string(processor.ctx.terminal.size_info()) .expect("serialize size"); + let serialized_config = format!( + "{{\"history_size\":{}}}", + grid.history_size() + ); + File::create("./grid.json") .and_then(|mut f| f.write_all(serialized_grid.as_bytes())) .expect("write grid.json"); @@ -351,6 +357,10 @@ impl Processor { File::create("./size.json") .and_then(|mut f| f.write_all(serialized_size.as_bytes())) .expect("write size.json"); + + File::create("./config.json") + .and_then(|mut f| f.write_all(serialized_config.as_bytes())) + .expect("write config.json"); } // FIXME should do a more graceful shutdown diff --git a/src/grid/mod.rs b/src/grid/mod.rs index b6313751..113445af 100644 --- a/src/grid/mod.rs +++ b/src/grid/mod.rs @@ -435,6 +435,20 @@ impl Grid { self.raw.len() } + #[inline] + pub fn history_size(&self) -> usize { + self.raw.len().saturating_sub(*self.lines) + } + + /// This is used only for initializing after loading ref-tests + pub fn initialize_all(&mut self, template: &T) + where + T: Copy + { + let history_size = self.raw.len().saturating_sub(*self.lines); + self.raw.initialize(self.max_scroll_limit - history_size, Row::new(self.cols, template)); + } + /// This is used only for truncating before saving ref-tests pub fn truncate(&mut self) { self.raw.truncate(); diff --git a/tests/ref.rs b/tests/ref.rs index 74cac6fa..0e059670 100644 --- a/tests/ref.rs +++ b/tests/ref.rs @@ -99,12 +99,13 @@ fn ref_test(dir: &Path) { // Truncate invisible lines from the grid let mut term_grid = terminal.grid().clone(); + term_grid.initialize_all(&Cell::default()); term_grid.truncate(); if grid != term_grid { for i in 0..grid.len() { for j in 0..grid.num_cols().0 { - let cell = terminal.grid()[i][Column(j)]; + let cell = term_grid[i][Column(j)]; let original_cell = grid[i][Column(j)]; if original_cell != cell { println!("[{i}][{j}] {original:?} => {now:?}",