use git_ref::Category;use std::convert::TryInto; #[test]fn file_name() { let name: git_ref::FullName = "refs/heads/main".try_into().unwrap(); assert_eq!(name.to_ref().file_name(), "main");}#[test]fn shorten_and_category() { for (input, expected, category) in [ ("refs/tags/tag-name", "tag-name", Category::Tag), ("refs/heads/main", "main", Category::LocalBranch), ("refs/remotes/origin/main", "origin/main", Category::RemoteBranch), ("refs/notes/note-name", "notes/note-name", Category::Note), ] { let name: git_ref::FullName = input.try_into().unwrap(); let category = Some(category); assert_eq!(name.to_ref().shorten(), expected); assert_eq!(name.shorten(), expected); assert_eq!(name.category(), category); assert_eq!(name.to_ref().category(), category); } let special = "HEAD"; let name: git_ref::FullName = special.try_into().unwrap(); assert_eq!( name.shorten(), special, "the whole name is returned if there is no prefix" ); assert_eq!(name.category(), None);} #[test]fn prefix_with_namespace_and_stripping() { let ns = git_ref::namespace::expand("foo").unwrap(); let mut name: git_ref::FullName = "refs/heads/main".try_into().unwrap(); assert_eq!( name.prefix_namespace(&ns).as_bstr(), "refs/namespaces/foo/refs/heads/main" ); assert_eq!( name.prefix_namespace(&ns).as_bstr(), "refs/namespaces/foo/refs/heads/main", "idempotent prefixing" ); assert_eq!(name.strip_namespace(&ns).as_bstr(), "refs/heads/main"); assert_eq!( name.strip_namespace(&ns).as_bstr(), "refs/heads/main", "idempotent stripping" );}
use git_ref::Category;
use std::convert::TryInto;
#[test]
fn file_name() {
let name: git_ref::FullName = "refs/heads/main".try_into().unwrap();
assert_eq!(name.to_ref().file_name(), "main");
}
#[test]
fn shorten_and_category() {
for (input, expected, category) in [
("refs/tags/tag-name", "tag-name", Category::Tag),
("refs/heads/main", "main", Category::LocalBranch),
("refs/remotes/origin/main", "origin/main", Category::RemoteBranch),
("refs/notes/note-name", "notes/note-name", Category::Note),
] {
let name: git_ref::FullName = input.try_into().unwrap();
let category = Some(category);
assert_eq!(name.to_ref().shorten(), expected);
assert_eq!(name.shorten(), expected);
assert_eq!(name.category(), category);
assert_eq!(name.to_ref().category(), category);
}
let special = "HEAD";
let name: git_ref::FullName = special.try_into().unwrap();
assert_eq!(
name.shorten(),
special,
"the whole name is returned if there is no prefix"
);
assert_eq!(name.category(), None);
}
#[test]
fn prefix_with_namespace_and_stripping() {
let ns = git_ref::namespace::expand("foo").unwrap();
let mut name: git_ref::FullName = "refs/heads/main".try_into().unwrap();
assert_eq!(
name.prefix_namespace(&ns).as_bstr(),
"refs/namespaces/foo/refs/heads/main"
);
assert_eq!(
name.prefix_namespace(&ns).as_bstr(),
"refs/namespaces/foo/refs/heads/main",
"idempotent prefixing"
);
assert_eq!(name.strip_namespace(&ns).as_bstr(), "refs/heads/main");
assert_eq!(
name.strip_namespace(&ns).as_bstr(),
"refs/heads/main",
"idempotent stripping"
);
}