1pub const EMPTY_TREE_REF: &str = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
6
7pub fn base_ref_for_commit_parents(_hash: &str, parents: &str) -> String {
11 parents
12 .split_whitespace()
13 .next()
14 .map(|s| s.to_string())
15 .unwrap_or_else(|| EMPTY_TREE_REF.to_string())
16}
17
18pub fn base_ref_for_parents(parents: &[String]) -> String {
24 parents
25 .first()
26 .cloned()
27 .unwrap_or_else(|| EMPTY_TREE_REF.to_string())
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn empty_tree_for_parentless() {
36 assert_eq!(base_ref_for_commit_parents("abc123", ""), EMPTY_TREE_REF);
37 }
38
39 #[test]
40 fn first_parent_for_normal_and_merge() {
41 assert_eq!(base_ref_for_commit_parents("abc123", "parent1"), "parent1");
42 assert_eq!(
43 base_ref_for_commit_parents("abc123", "parent1 parent2"),
44 "parent1"
45 );
46 }
47
48 #[test]
49 fn base_ref_for_parents_slice() {
50 assert_eq!(base_ref_for_parents(&[]), EMPTY_TREE_REF);
51 assert_eq!(base_ref_for_parents(&["p1".to_string()]), "p1");
52 assert_eq!(
53 base_ref_for_parents(&["p1".to_string(), "p2".to_string()]),
54 "p1"
55 );
56 }
57}