Merge pull request #20 from zaphar/test_coverage

Test coverage for most keybinds
This commit is contained in:
Jeremy Wall 2025-01-07 19:05:04 -05:00 committed by GitHub
commit d50c12a5ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 830 additions and 152 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
result/ result/
*.json *.json
tarpaulin-report.* tarpaulin-report.*
*.profraw

View File

@ -8,7 +8,7 @@ build: $(rust-files)
cargo build cargo build
tarpaulin-report.%: $(rust_files) tarpaulin-report.%: $(rust_files)
cargo tarpaulin --skip-clean --test --out $* cargo tarpaulin --skip-clean --engine llvm --out $*
cover: tarpaulin-report.html cover: tarpaulin-report.html

View File

@ -549,7 +549,9 @@ impl<'ws> Workspace<'ws> {
self.maybe_update_range_end(); self.maybe_update_range_end();
} }
KeyCode::Char(' ') | KeyCode::Enter => { KeyCode::Char(' ') | KeyCode::Enter => {
self.update_range_selection()?; if self.update_range_selection()? {
self.exit_range_select_mode()?;
}
} }
KeyCode::Char('n') if key.modifiers == KeyModifiers::CONTROL => { KeyCode::Char('n') if key.modifiers == KeyModifiers::CONTROL => {
self.state.range_select.reset_range_selection(); self.state.range_select.reset_range_selection();
@ -570,16 +572,24 @@ impl<'ws> Workspace<'ws> {
KeyCode::Char('C') KeyCode::Char('C')
if key if key
.modifiers .modifiers
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) => .contains(KeyModifiers::CONTROL) =>
{ {
// TODO(zaphar): Share the algorithm below between both copies // TODO(zaphar): Share the algorithm below between both copies
self.copy_range(true)?; self.copy_range(true)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('Y') => {
self.copy_range(true)?;
self.exit_range_select_mode()?;
} }
KeyCode::Char('Y') => self.copy_range(true)?,
KeyCode::Char('c') if key.modifiers == KeyModifiers::CONTROL => { KeyCode::Char('c') if key.modifiers == KeyModifiers::CONTROL => {
self.copy_range(false)?; self.copy_range(false)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('y') => {
self.copy_range(false)?;
self.exit_range_select_mode()?;
} }
KeyCode::Char('y') => self.copy_range(false)?,
KeyCode::Char('x') => { KeyCode::Char('x') => {
if let (Some(from), Some(to)) = (self.state.range_select.start.as_ref(), self.state.range_select.end.as_ref()) { if let (Some(from), Some(to)) = (self.state.range_select.start.as_ref(), self.state.range_select.end.as_ref()) {
self.book.extend_to(from, to)?; self.book.extend_to(from, to)?;
@ -627,17 +637,17 @@ impl<'ws> Workspace<'ws> {
})); }));
} }
} }
self.exit_range_select_mode()?;
Ok(()) Ok(())
} }
fn update_range_selection(&mut self) -> Result<(), anyhow::Error> { fn update_range_selection(&mut self) -> Result<bool, anyhow::Error> {
Ok(if self.state.range_select.start.is_none() { Ok(if self.state.range_select.start.is_none() {
self.state.range_select.start = Some(self.book.location.clone()); self.state.range_select.start = Some(self.book.location.clone());
self.state.range_select.end = Some(self.book.location.clone()); self.state.range_select.end = Some(self.book.location.clone());
false
} else { } else {
self.state.range_select.end = Some(self.book.location.clone()); self.state.range_select.end = Some(self.book.location.clone());
self.exit_range_select_mode()?; true
}) })
} }
@ -692,7 +702,7 @@ impl<'ws> Workspace<'ws> {
KeyCode::Char('C') KeyCode::Char('C')
if key if key
.modifiers .modifiers
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) => .contains(KeyModifiers::CONTROL) =>
{ {
self.state.clipboard = Some(ClipboardContents::Cell( self.state.clipboard = Some(ClipboardContents::Cell(
self.book.get_current_cell_rendered()?, self.book.get_current_cell_rendered()?,

File diff suppressed because it is too large Load Diff