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]
Bug fixes:
* Fix `push::PushCondition::applies` for empty value and pattern
# 0.3.0
Breaking changes:

View File

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