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(_)) ));}
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(_))
));
}