diff options
author | Tim Oram <dev@mitmaro.ca> | 2024-02-17 15:46:51 -0330 |
---|---|---|
committer | Tim Oram <dev@mitmaro.ca> | 2024-02-17 15:55:46 -0330 |
commit | 46dd24b4583c2597dca41b14e9bfefb04ddff759 (patch) | |
tree | c0d62296164b066f74f48fd15170dee6cad82010 | |
parent | 54926e69a5473b8323306c4d6c5d54664d962123 (diff) |
Cleanup and add tests to improve coverage
-rw-r--r-- | src/config/errors.rs | 59 | ||||
-rw-r--r-- | src/display.rs | 1 | ||||
-rw-r--r-- | src/display/crossterm.rs | 1 | ||||
-rw-r--r-- | src/git/commit_diff_loader.rs | 9 | ||||
-rw-r--r-- | src/input/event.rs | 7 | ||||
-rw-r--r-- | src/modules/list/tests/toggle_option.rs | 16 | ||||
-rw-r--r-- | src/todo_file/history/tests.rs | 1 |
7 files changed, 93 insertions, 1 deletions
diff --git a/src/config/errors.rs b/src/config/errors.rs index a19b2b9..18bc5c5 100644 --- a/src/config/errors.rs +++ b/src/config/errors.rs @@ -63,3 +63,62 @@ impl Display for ConfigError { } } } + +#[cfg(test)] +mod tests { + use claims::{assert_none, assert_some_eq}; + + use super::*; + + #[test] + fn new() { + let err = ConfigError::new("name", "input", ConfigErrorCause::InvalidBoolean); + assert_eq!(err.name, "name"); + assert_some_eq!(err.input, "input"); + assert_eq!(err.cause, ConfigErrorCause::InvalidBoolean); + } + + #[test] + fn new_with_optional_input_with_input() { + let err = + ConfigError::new_with_optional_input("name", Some(String::from("input")), ConfigErrorCause::InvalidBoolean); + assert_eq!(err.name, "name"); + assert_some_eq!(err.input, "input"); + assert_eq!(err.cause, ConfigErrorCause::InvalidBoolean); + } + + #[test] + fn new_with_optional_input_without_input() { + let err = ConfigError::new_with_optional_input("name", None, ConfigErrorCause::InvalidBoolean); + assert_eq!(err.name, "name"); + assert_none!(err.input); + assert_eq!(err.cause, ConfigErrorCause::InvalidBoolean); + } + + #[test] + fn new_read_error() { + let err = ConfigError::new_read_error("name", ConfigErrorCause::InvalidBoolean); + assert_eq!(err.name, "name"); + assert_none!(err.input); + assert_eq!(err.cause, ConfigErrorCause::InvalidBoolean); + } + + #[test] + fn display_valid_input_with_input() { + let err = ConfigError::new("name", "input", ConfigErrorCause::InvalidBoolean); + + assert_eq!( + format!("{err}"), + "Provided value 'input' is invalid for 'name': The input provided is not a valid boolean value." + ); + } + #[test] + fn display_valid_input_without_input() { + let err = ConfigError::new_read_error("name", ConfigErrorCause::InvalidBoolean); + + assert_eq!( + format!("{err}"), + "Provided value is invalid for 'name': The input provided is not a valid boolean value." + ); + } +} diff --git a/src/display.rs b/src/display.rs index c20c0ec..658fe35 100644 --- a/src/display.rs +++ b/src/display.rs @@ -9,7 +9,6 @@ //! performance should only be used in test code. mod color_mode; -#[cfg(not(tarpaulin_include))] mod crossterm; mod display_color; mod error; diff --git a/src/display/crossterm.rs b/src/display/crossterm.rs index e10d8de..cb3e5c6 100644 --- a/src/display/crossterm.rs +++ b/src/display/crossterm.rs @@ -1,3 +1,4 @@ +#![cfg(not(tarpaulin_include))] use std::io::{stdout, BufWriter, Stdout, Write}; use crossterm::{ diff --git a/src/git/commit_diff_loader.rs b/src/git/commit_diff_loader.rs index 566a7fd..d0b8a25 100644 --- a/src/git/commit_diff_loader.rs +++ b/src/git/commit_diff_loader.rs @@ -167,6 +167,7 @@ mod tests { use super::*; use crate::{git::Origin, test_helpers::with_temp_repository}; + #[cfg(not(tarpaulin_include))] fn _format_status(status: &FileStatus) -> String { let s = match status.status() { Status::Added => "Added", @@ -181,6 +182,7 @@ mod tests { format!("Status {s}") } + #[cfg(not(tarpaulin_include))] fn _format_file_mode(mode: FileMode) -> String { String::from(match mode { FileMode::Normal => "n", @@ -190,6 +192,7 @@ mod tests { }) } + #[cfg(not(tarpaulin_include))] fn _format_paths(status: &FileStatus) -> String { let source_mode = _format_file_mode(status.source_mode()); let source_binary = if status.source_is_binary() { ",b" } else { "" }; @@ -211,6 +214,7 @@ mod tests { } } + #[cfg(not(tarpaulin_include))] #[allow(clippy::string_slice)] fn _format_diff_line(line: &DiffLine) -> String { let origin = match line.origin() { @@ -240,6 +244,7 @@ mod tests { } } + #[cfg(not(tarpaulin_include))] fn _assert_commit_diff(diff: &CommitDiff, expected: &[String]) { let mut actual = vec![]; for status in diff.file_statuses() { @@ -274,6 +279,7 @@ mod tests { }; } + #[cfg(not(tarpaulin_include))] fn write_normal_file(repository: &crate::git::Repository, name: &str, contents: &[&str]) { let root = repository.repo_path().parent().unwrap().to_path_buf(); @@ -285,6 +291,7 @@ mod tests { repository.add_path_to_index(PathBuf::from(name).as_path()).unwrap(); } + #[cfg(not(tarpaulin_include))] fn remove_path(repository: &crate::git::Repository, name: &str) { let root = repository.repo_path().parent().unwrap().to_path_buf(); @@ -296,6 +303,7 @@ mod tests { .unwrap(); } + #[cfg(not(tarpaulin_include))] fn create_commit(repository: &crate::git::Repository) { let sig = git2::Signature::new("name", "name@example.com", &git2::Time::new(1_609_459_200, 0)).unwrap(); repository @@ -303,6 +311,7 @@ mod tests { .unwrap(); } + #[cfg(not(tarpaulin_include))] fn diff_from_head(repository: &crate::git::Repository, options: &CommitDiffLoaderOptions) -> CommitDiff { let id = repository.commit_id_from_ref("refs/heads/main").unwrap(); let loader = CommitDiffLoader::new(repository.repository(), options); diff --git a/src/input/event.rs b/src/input/event.rs index 23dbc2f..8b2d435 100644 --- a/src/input/event.rs +++ b/src/input/event.rs @@ -70,6 +70,13 @@ mod tests { use super::*; #[test] + fn from_key_event() { + let key_event = KeyEvent::new(KeyCode::Null, KeyModifiers::empty()); + let event = Event::from(key_event); + assert_eq!(event, Event::Key(key_event)); + } + + #[test] fn from_crossterm_key_event() { let event = Event::from(ct_event::Event::Key(ct_event::KeyEvent::new( KeyCode::Null, diff --git a/src/modules/list/tests/toggle_option.rs b/src/modules/list/tests/toggle_option.rs index c4e5eb7..5cc38a0 100644 --- a/src/modules/list/tests/toggle_option.rs +++ b/src/modules/list/tests/toggle_option.rs @@ -36,6 +36,22 @@ fn on_fixup_keep_message_with_editor() { } #[test] +fn on_existing_option_remove_option() { + testers::module( + &["fixup -c aaa c1"], + &[Event::from(StandardEvent::FixupKeepMessageWithEditor)], + |mut test_context| { + let mut module = create_list(&create_config(), test_context.take_todo_file()); + _ = test_context.activate(&mut module, State::List); + _ = test_context.handle_all_events(&mut module); + let todo_file = module.todo_file.lock(); + let line = todo_file.get_line(0).unwrap(); + assert_none!(line.option()); + }, + ); +} + +#[test] fn after_select_line() { testers::module( &["fixup aaa c1", "fixup aaa c2", "fixup aaa c3"], diff --git a/src/todo_file/history/tests.rs b/src/todo_file/history/tests.rs index f92048a..ee3b44d 100644 --- a/src/todo_file/history/tests.rs +++ b/src/todo_file/history/tests.rs @@ -1,3 +1,4 @@ +#![cfg(not(tarpaulin_include))] use claims::assert_some_eq; use super::*; |