use gix_glob::{Pattern, pattern::Mode}; #[test]fn display() { fn pat(text: &str, mode: Mode) -> String { Pattern { text: text.into(), mode, first_wildcard_pos: None, } .to_string() } assert_eq!(pat("a", Mode::ABSOLUTE), "/a"); assert_eq!(pat("a", Mode::MUST_BE_DIR), "a/"); assert_eq!(pat("a", Mode::NEGATIVE), "!a"); assert_eq!(pat("a", Mode::ABSOLUTE | Mode::NEGATIVE | Mode::MUST_BE_DIR), "!/a/");} #[test]fn wildcard_detection_distinguishes_escapes_from_wildcard_operators() { for text in ["*", "?", "[a]", r"\*"] { let pattern = Pattern::from_bytes_without_negation(text.as_bytes()).expect("non-empty pattern"); assert!(pattern.has_wildcard(), "{text:?} contains a wildcard operator"); } for text in ["literal", r"literal\escape"] { let pattern = Pattern::from_bytes_without_negation(text.as_bytes()).expect("non-empty pattern"); assert!( !pattern.has_wildcard(), "{text:?} contains no wildcard operator even if it contains an escape" ); }} mod matching;
use gix_glob::{Pattern, pattern::Mode};
#[test]
fn display() {
fn pat(text: &str, mode: Mode) -> String {
Pattern {
text: text.into(),
mode,
first_wildcard_pos: None,
}
.to_string()
}
assert_eq!(pat("a", Mode::ABSOLUTE), "/a");
assert_eq!(pat("a", Mode::MUST_BE_DIR), "a/");
assert_eq!(pat("a", Mode::NEGATIVE), "!a");
assert_eq!(pat("a", Mode::ABSOLUTE | Mode::NEGATIVE | Mode::MUST_BE_DIR), "!/a/");
}
#[test]
fn wildcard_detection_distinguishes_escapes_from_wildcard_operators() {
for text in ["*", "?", "[a]", r"\*"] {
let pattern = Pattern::from_bytes_without_negation(text.as_bytes()).expect("non-empty pattern");
assert!(pattern.has_wildcard(), "{text:?} contains a wildcard operator");
}
for text in ["literal", r"literal\escape"] {
let pattern = Pattern::from_bytes_without_negation(text.as_bytes()).expect("non-empty pattern");
assert!(
!pattern.has_wildcard(),
"{text:?} contains no wildcard operator even if it contains an escape"
);
}
}
mod matching;