69 lines · 2.1 KB · Rust
RawDownload
use std::path::Path; #[test]fn into_namespaced_prefix() {    assert_eq!(        git_ref::namespace::expand("foo")            .unwrap()            .into_namespaced_prefix("prefix"),        Path::new("refs").join("namespaces").join("foo").join("prefix")    )} mod expand {    #[test]    fn components_end_with_trailing_slash_to_help_with_prefix_stripping() {        assert_eq!(            git_ref::namespace::expand("foo").unwrap().as_bstr(),            "refs/namespaces/foo/"        )    }     #[test]    fn each_component_expands_to_the_namespace_prefix_individually() {        assert_eq!(            git_ref::namespace::expand("foo/bar").unwrap().as_bstr(),            "refs/namespaces/foo/refs/namespaces/bar/"        )    }     #[test]    fn backslashes_are_no_component_separators_and_invalid() {        assert!(matches!(            git_ref::namespace::expand("foo\\bar").expect_err("empty invalid"),            git_validate::refname::Error::Tag(                git_validate::tag::name::Error::InvalidByte(byte)            ) if byte == "\\"        ));    }     #[test]    fn trailing_slashes_are_not_allowed() {        assert!(matches!(            git_ref::namespace::expand("foo/").expect_err("empty invalid"),            git_validate::refname::Error::Tag(git_validate::tag::name::Error::EndsWithSlash)        ));    }     #[test]    fn empty_namespaces_are_not_allowed() {        assert!(matches!(            git_ref::namespace::expand("").expect_err("empty invalid"),            git_validate::refname::Error::Tag(git_validate::tag::name::Error::Empty)        ));    }    #[test]    fn bare_slashes_are_not_allowed() {        assert!(matches!(            git_ref::namespace::expand("/").expect_err("empty invalid"),            git_validate::refname::Error::Tag(git_validate::tag::name::Error::EndsWithSlash)        ));    }    #[test]    fn repeated_slashes_are_invalid() {        assert!(matches!(            git_ref::namespace::expand("foo//bar").expect_err("empty invalid"),            git_validate::refname::Error::RepeatedSlash        ));    }}