Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
61
third-party/vendor/regex/tests/regression_fuzz.rs
vendored
Normal file
61
third-party/vendor/regex/tests/regression_fuzz.rs
vendored
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
// These tests are only run for the "default" test target because some of them
|
||||
// can take quite a long time. Some of them take long enough that it's not
|
||||
// practical to run them in debug mode. :-/
|
||||
|
||||
use regex::Regex;
|
||||
|
||||
macro_rules! regex {
|
||||
($pattern:expr) => {
|
||||
regex::Regex::new($pattern).unwrap()
|
||||
};
|
||||
}
|
||||
|
||||
// See: https://oss-fuzz.com/testcase-detail/5673225499181056
|
||||
//
|
||||
// Ignored by default since it takes too long in debug mode (almost a minute).
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn fuzz1() {
|
||||
regex!(r"1}{55}{0}*{1}{55}{55}{5}*{1}{55}+{56}|;**");
|
||||
}
|
||||
|
||||
// See: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26505
|
||||
// See: https://github.com/rust-lang/regex/issues/722
|
||||
#[test]
|
||||
#[cfg(feature = "unicode")]
|
||||
fn empty_any_errors_no_panic() {
|
||||
assert!(Regex::new(r"\P{any}").is_ok());
|
||||
}
|
||||
|
||||
// This tests that a very large regex errors during compilation instead of
|
||||
// using gratuitous amounts of memory. The specific problem is that the
|
||||
// compiler wasn't accounting for the memory used by Unicode character classes
|
||||
// correctly.
|
||||
//
|
||||
// See: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33579
|
||||
#[test]
|
||||
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());
|
||||
}
|
||||
|
||||
// This was caused by the fuzzer, and then minimized by hand.
|
||||
//
|
||||
// This was caused by a bug in DFA determinization that mishandled NFA fail
|
||||
// states.
|
||||
#[test]
|
||||
fn fail_branch_prevents_match() {
|
||||
let pat = r".*[a&&b]A|B";
|
||||
let hay = "B";
|
||||
let re = Regex::new(pat).unwrap();
|
||||
assert!(re.is_match(hay));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue