use crate::config::Config;
use crate::parser::CommitMessage;
use crate::rules;
pub fn format_commit_message(input: &str, config: &Config) -> String {
let mut msg = CommitMessage::parse(input);
rules::enforce_subject_length(&mut msg, config.subject_max_length);
rules::wrap_body_at_length(&mut msg, config.body_max_line_length);
msg.to_string()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_format_basic_message() {
let config = Config::default();
let input = "fix: some bug";
let output = format_commit_message(input, &config);
assert_eq!(output, "fix: some bug\n");
}
#[test]
fn test_format_with_body() {
let config = Config::default();
let input = "fix: some bug.\n\nThis is a very long line that should be wrapped at seventy two characters to follow best practices for commit messages.";
let output = format_commit_message(input, &config);
assert!(output.starts_with("fix: some bug"));
assert!(output.contains("\n\n"));
}
}