summaryrefslogtreecommitdiffstats
path: root/vendor/regex/tests
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/regex/tests')
-rw-r--r--vendor/regex/tests/regression.rs41
-rw-r--r--vendor/regex/tests/regression_fuzz.rs9
-rw-r--r--vendor/regex/tests/replace.rs16
-rw-r--r--vendor/regex/tests/set.rs7
-rw-r--r--vendor/regex/tests/unicode.rs3
5 files changed, 68 insertions, 8 deletions
diff --git a/vendor/regex/tests/regression.rs b/vendor/regex/tests/regression.rs
index e8b252538..291062a77 100644
--- a/vendor/regex/tests/regression.rs
+++ b/vendor/regex/tests/regression.rs
@@ -220,3 +220,44 @@ matiter!(empty_group_find, r"()Ј01", "zЈ01", (1, 5));
// See: https://github.com/rust-lang/regex/issues/862
mat!(non_greedy_question_literal, r"ab??", "ab", Some((0, 1)));
+
+// See: https://github.com/rust-lang/regex/issues/981
+#[cfg(feature = "unicode")]
+#[test]
+fn regression_bad_word_boundary() {
+ let re = regex_new!(r#"(?i:(?:\b|_)win(?:32|64|dows)?(?:\b|_))"#).unwrap();
+ let hay = "ubi-Darwin-x86_64.tar.gz";
+ assert!(!re.is_match(text!(hay)));
+ let hay = "ubi-Windows-x86_64.zip";
+ assert!(re.is_match(text!(hay)));
+}
+
+// See: https://github.com/rust-lang/regex/issues/982
+#[cfg(feature = "unicode-perl")]
+#[test]
+fn regression_unicode_perl_not_enabled() {
+ let pat = r"(\d+\s?(years|year|y))?\s?(\d+\s?(months|month|m))?\s?(\d+\s?(weeks|week|w))?\s?(\d+\s?(days|day|d))?\s?(\d+\s?(hours|hour|h))?";
+ let re = regex_new!(pat);
+ assert!(re.is_ok());
+}
+
+// See: https://github.com/rust-lang/regex/issues/995
+#[test]
+fn regression_big_regex_overflow() {
+ let pat = r" {2147483516}{2147483416}{5}";
+ let re = regex_new!(pat);
+ assert!(re.is_err());
+}
+
+#[test]
+fn regression_complete_literals_suffix_incorrect() {
+ let needles = vec![
+ "aA", "bA", "cA", "dA", "eA", "fA", "gA", "hA", "iA", "jA", "kA",
+ "lA", "mA", "nA", "oA", "pA", "qA", "rA", "sA", "tA", "uA", "vA",
+ "wA", "xA", "yA", "zA",
+ ];
+ let pattern = needles.join("|");
+ let re = regex!(&pattern);
+ let hay = "FUBAR";
+ assert_eq!(0, re.find_iter(text!(hay)).count());
+}
diff --git a/vendor/regex/tests/regression_fuzz.rs b/vendor/regex/tests/regression_fuzz.rs
index 4e76704d2..5f49530a7 100644
--- a/vendor/regex/tests/regression_fuzz.rs
+++ b/vendor/regex/tests/regression_fuzz.rs
@@ -29,3 +29,12 @@ fn big_regex_fails_to_compile() {
let pat = "[\u{0}\u{e}\u{2}\\w~~>[l\t\u{0}]p?<]{971158}";
assert!(regex_new!(pat).is_err());
}
+
+// This was caught while on master but before a release went out(!).
+//
+// See: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58173
+#[test]
+fn todo() {
+ let pat = "(?:z|xx)@|xx";
+ assert!(regex_new!(pat).is_ok());
+}
diff --git a/vendor/regex/tests/replace.rs b/vendor/regex/tests/replace.rs
index d65be072f..f23c57551 100644
--- a/vendor/regex/tests/replace.rs
+++ b/vendor/regex/tests/replace.rs
@@ -15,7 +15,7 @@ replace!(all, replace_all, r"[0-9]", "age: 26", t!("Z"), "age: ZZ");
replace!(
groups,
replace,
- r"(?-u)(\S+)\s+(\S+)",
+ r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
t!("$2 $1"),
"w2 w1"
@@ -23,7 +23,7 @@ replace!(
replace!(
double_dollar,
replace,
- r"(?-u)(\S+)\s+(\S+)",
+ r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
t!("$2 $$1"),
"w2 $1"
@@ -33,7 +33,7 @@ replace!(
replace!(
named,
replace_all,
- r"(?-u)(?P<first>\S+)\s+(?P<last>\S+)(?P<space>\s*)",
+ r"(?P<first>[^ ]+)[ ]+(?P<last>[^ ]+)(?P<space>[ ]*)",
"w1 w2 w3 w4",
t!("$last $first$space"),
"w2 w1 w4 w3"
@@ -51,7 +51,7 @@ replace!(number_hypen, replace, r"(.)(.)", "ab", t!("$1-$2"), "a-b");
replace!(
simple_expand,
replace_all,
- r"(?-u)(\w) (\w)",
+ r"([a-z]) ([a-z])",
"a b",
t!("$2 $1"),
"b a"
@@ -59,7 +59,7 @@ replace!(
replace!(
literal_dollar1,
replace_all,
- r"(?-u)(\w+) (\w+)",
+ r"([a-z]+) ([a-z]+)",
"a b",
t!("$$1"),
"$1"
@@ -67,7 +67,7 @@ replace!(
replace!(
literal_dollar2,
replace_all,
- r"(?-u)(\w+) (\w+)",
+ r"([a-z]+) ([a-z]+)",
"a b",
t!("$2 $$c $1"),
"b $c a"
@@ -75,7 +75,7 @@ replace!(
replace!(
no_expand1,
replace,
- r"(?-u)(\S+)\s+(\S+)",
+ r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
no_expand!("$2 $1"),
"$2 $1"
@@ -83,7 +83,7 @@ replace!(
replace!(
no_expand2,
replace,
- r"(?-u)(\S+)\s+(\S+)",
+ r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
no_expand!("$$1"),
"$$1"
diff --git a/vendor/regex/tests/set.rs b/vendor/regex/tests/set.rs
index 37fcf8700..d1144d662 100644
--- a/vendor/regex/tests/set.rs
+++ b/vendor/regex/tests/set.rs
@@ -65,3 +65,10 @@ fn len_and_empty() {
assert_eq!(not_empty.len(), 2);
assert!(!not_empty.is_empty());
}
+
+#[test]
+fn default_set_is_empty() {
+ let set: regex::bytes::RegexSet = Default::default();
+ assert_eq!(set.len(), 0);
+ assert!(set.is_empty());
+}
diff --git a/vendor/regex/tests/unicode.rs b/vendor/regex/tests/unicode.rs
index 9b3228624..d7dbdd31b 100644
--- a/vendor/regex/tests/unicode.rs
+++ b/vendor/regex/tests/unicode.rs
@@ -35,6 +35,8 @@ mat!(uni_not_boundary_ogham, r"\d\B", "6 ", None);
// We should test more, but there's a lot. Write a script to generate more of
// these tests.
mat!(uni_class_gencat_cased_letter, r"\p{Cased_Letter}", "A", Some((0, 3)));
+mat!(uni_class_gencat_cased_letter2, r"\p{gc=LC}", "A", Some((0, 3)));
+mat!(uni_class_gencat_cased_letter3, r"\p{LC}", "A", Some((0, 3)));
mat!(
uni_class_gencat_close_punctuation,
r"\p{Close_Punctuation}",
@@ -77,6 +79,7 @@ mat!(uni_class_gencat_format, r"\p{Format}", "\u{E007F}", Some((0, 4)));
// See: https://github.com/rust-lang/regex/issues/719
mat!(uni_class_gencat_format_abbrev1, r"\p{cf}", "\u{E007F}", Some((0, 4)));
mat!(uni_class_gencat_format_abbrev2, r"\p{gc=cf}", "\u{E007F}", Some((0, 4)));
+mat!(uni_class_gencat_format_abbrev3, r"\p{Sc}", "$", Some((0, 1)));
mat!(
uni_class_gencat_initial_punctuation,
r"\p{Initial_Punctuation}",