forked from mirrors/gecko-dev
		
	 c5503d7f3e
			
		
	
	
		c5503d7f3e
		
	
	
	
	
		
			
			The main side effect is the upgrade of aho-corasick to 1.1, which contains a SIMD implementation for aarch64. Differential Revision: https://phabricator.services.mozilla.com/D188673
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // 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));
 | |
| }
 |