159 lines · 4.6 KB · Rust
RawDownload
use bstr::{BStr, BString};use gix_path::{RelativePath, relative_path::Error}; #[cfg(not(windows))]#[test]fn absolute_paths_return_err() {    let path_str: &str = "/refs/heads";    let path_bstr: &BStr = path_str.into();    let path_u8a: &[u8; 11] = b"/refs/heads";    let path_u8: &[u8] = &b"/refs/heads"[..];    let path_bstring: BString = "/refs/heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8a),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::IsAbsolute)    ));} #[cfg(windows)]#[test]fn absolute_paths_with_backslashes_return_err() {    let path_str: &str = r"c:\refs\heads";    let path_bstr: &BStr = path_str.into();    let path_u8: &[u8] = &b"c:\\refs\\heads"[..];    let path_bstring: BString = r"c:\refs\heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::IsAbsolute)    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::IsAbsolute)    ));} #[test]fn dots_in_paths_return_err() {    let path_str: &str = "./heads";    let path_bstr: &BStr = path_str.into();    let path_u8: &[u8] = &b"./heads"[..];    let path_bstring: BString = "./heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::ContainsInvalidComponent(_))    ));} #[test]fn dots_in_paths_with_backslashes_return_err() {    let path_str: &str = r".\heads";    let path_bstr: &BStr = path_str.into();    let path_u8: &[u8] = &b".\\heads"[..];    let path_bstring: BString = r".\heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::ContainsInvalidComponent(_))    ));} #[test]fn double_dots_in_paths_return_err() {    let path_str: &str = "../heads";    let path_bstr: &BStr = path_str.into();    let path_u8: &[u8] = &b"../heads"[..];    let path_bstring: BString = "../heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::ContainsInvalidComponent(_))    ));} #[test]fn double_dots_in_paths_with_backslashes_return_err() {    let path_str: &str = r"..\heads";    let path_bstr: &BStr = path_str.into();    let path_u8: &[u8] = &b"..\\heads"[..];    let path_bstring: BString = r"..\heads".into();     assert!(matches!(        TryInto::<&RelativePath>::try_into(path_str),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_bstr),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(path_u8),        Err(Error::ContainsInvalidComponent(_))    ));    assert!(matches!(        TryInto::<&RelativePath>::try_into(&path_bstring),        Err(Error::ContainsInvalidComponent(_))    ));}