pub const EMPTY_TREE_REF: &str = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
pub fn base_ref_for_commit_parents(_hash: &str, parents: &str) -> String {
parents
.split_whitespace()
.next()
.map(|s| s.to_string())
.unwrap_or_else(|| EMPTY_TREE_REF.to_string())
}
pub fn base_ref_for_parents(parents: &[String]) -> String {
parents
.first()
.cloned()
.unwrap_or_else(|| EMPTY_TREE_REF.to_string())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn empty_tree_for_parentless() {
assert_eq!(base_ref_for_commit_parents("abc123", ""), EMPTY_TREE_REF);
}
#[test]
fn first_parent_for_normal_and_merge() {
assert_eq!(base_ref_for_commit_parents("abc123", "parent1"), "parent1");
assert_eq!(
base_ref_for_commit_parents("abc123", "parent1 parent2"),
"parent1"
);
}
#[test]
fn base_ref_for_parents_slice() {
assert_eq!(base_ref_for_parents(&[]), EMPTY_TREE_REF);
assert_eq!(base_ref_for_parents(&["p1".to_string()]), "p1");
assert_eq!(
base_ref_for_parents(&["p1".to_string(), "p2".to_string()]),
"p1"
);
}
}