summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2024-02-17 15:46:51 -0330
committerTim Oram <dev@mitmaro.ca>2024-02-17 15:55:46 -0330
commit46dd24b4583c2597dca41b14e9bfefb04ddff759 (patch)
treec0d62296164b066f74f48fd15170dee6cad82010
parent54926e69a5473b8323306c4d6c5d54664d962123 (diff)
Cleanup and add tests to improve coverage
-rw-r--r--src/config/errors.rs59
-rw-r--r--src/display.rs1
-rw-r--r--src/display/crossterm.rs1
-rw-r--r--src/git/commit_diff_loader.rs9
-rw-r--r--src/input/event.rs7
-rw-r--r--src/modules/list/tests/toggle_option.rs16
-rw-r--r--src/todo_file/history/tests.rs1
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::*;