Sebastian Thielrefactor (#364)b1b98714 years agoHistory
54 lines · 1.7 KB · Rust
RawDownload
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"    );}