common: Fix push::PushCondition::applies for empty value and pattern

This commit is contained in:
Kévin Commaille 2021-04-03 17:00:04 +02:00 committed by GitHub
parent eb7683bae9
commit cd157885dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 4 deletions

View File

@ -1,5 +1,9 @@
# [unreleased] # [unreleased]
Bug fixes:
* Fix `push::PushCondition::applies` for empty value and pattern
# 0.3.0 # 0.3.0
Breaking changes: Breaking changes:

View File

@ -198,10 +198,6 @@ impl StrExt for str {
} }
fn matches_pattern(&self, pattern: &str, match_words: bool) -> bool { fn matches_pattern(&self, pattern: &str, match_words: bool) -> bool {
if self.is_empty() || pattern.is_empty() {
return false;
}
let value = &self.to_lowercase(); let value = &self.to_lowercase();
let pattern = &pattern.to_lowercase(); let pattern = &pattern.to_lowercase();
@ -213,6 +209,13 @@ impl StrExt for str {
} }
fn matches_word(&self, pattern: &str) -> bool { fn matches_word(&self, pattern: &str) -> bool {
if self == pattern {
return true;
}
if pattern.is_empty() {
return false;
}
match self.find(pattern) { match self.find(pattern) {
Some(start) => { Some(start) => {
let end = start + pattern.len(); let end = start + pattern.len();
@ -448,6 +451,8 @@ mod tests {
assert!("Foo bar".matches_pattern("foo", true)); assert!("Foo bar".matches_pattern("foo", true));
assert!(!"foobar".matches_pattern("foo", true)); assert!(!"foobar".matches_pattern("foo", true));
assert!(!"foo bar".matches_pattern("foo*", true)); assert!(!"foo bar".matches_pattern("foo*", true));
assert!("".matches_pattern("", true));
assert!(!"foo".matches_pattern("", true));
// Glob matching // Glob matching
assert!(!"foo bar".matches_pattern("foo", false)); assert!(!"foo bar".matches_pattern("foo", false));
@ -458,6 +463,9 @@ mod tests {
assert!(!"foo".matches_pattern("foo?", false)); assert!(!"foo".matches_pattern("foo?", false));
assert!("foo".matches_pattern("fo?", false)); assert!("foo".matches_pattern("fo?", false));
assert!("FOO".matches_pattern("foo", false)); assert!("FOO".matches_pattern("foo", false));
assert!("".matches_pattern("", false));
assert!("".matches_pattern("*", false));
assert!(!"foo".matches_pattern("", false));
} }
#[test] #[test]