]>
Commit | Line | Data |
---|---|---|
f20569fa XL |
1 | #![allow(unused)] |
2 | #![warn(clippy::invalid_regex, clippy::trivial_regex)] | |
3 | ||
4 | extern crate regex; | |
5 | ||
6 | use regex::bytes::{Regex as BRegex, RegexBuilder as BRegexBuilder, RegexSet as BRegexSet}; | |
7 | use regex::{Regex, RegexBuilder, RegexSet}; | |
8 | ||
9 | const OPENING_PAREN: &str = "("; | |
10 | const NOT_A_REAL_REGEX: &str = "foobar"; | |
11 | ||
12 | fn syntax_error() { | |
13 | let pipe_in_wrong_position = Regex::new("|"); | |
14 | let pipe_in_wrong_position_builder = RegexBuilder::new("|"); | |
15 | let wrong_char_ranice = Regex::new("[z-a]"); | |
16 | let some_unicode = Regex::new("[é-è]"); | |
17 | ||
18 | let some_regex = Regex::new(OPENING_PAREN); | |
19 | ||
20 | let binary_pipe_in_wrong_position = BRegex::new("|"); | |
21 | let some_binary_regex = BRegex::new(OPENING_PAREN); | |
22 | let some_binary_regex_builder = BRegexBuilder::new(OPENING_PAREN); | |
23 | ||
24 | let closing_paren = ")"; | |
25 | let not_linted = Regex::new(closing_paren); | |
26 | ||
27 | let set = RegexSet::new(&[r"[a-z]+@[a-z]+\.(com|org|net)", r"[a-z]+\.(com|org|net)"]); | |
28 | let bset = BRegexSet::new(&[ | |
29 | r"[a-z]+@[a-z]+\.(com|org|net)", | |
30 | r"[a-z]+\.(com|org|net)", | |
31 | r".", // regression test | |
32 | ]); | |
33 | ||
34 | let set_error = RegexSet::new(&[OPENING_PAREN, r"[a-z]+\.(com|org|net)"]); | |
35 | let bset_error = BRegexSet::new(&[OPENING_PAREN, r"[a-z]+\.(com|org|net)"]); | |
36 | ||
37 | let raw_string_error = Regex::new(r"[...\/...]"); | |
38 | let raw_string_error = Regex::new(r#"[...\/...]"#); | |
39 | } | |
40 | ||
41 | fn trivial_regex() { | |
42 | let trivial_eq = Regex::new("^foobar$"); | |
43 | ||
44 | let trivial_eq_builder = RegexBuilder::new("^foobar$"); | |
45 | ||
46 | let trivial_starts_with = Regex::new("^foobar"); | |
47 | ||
48 | let trivial_ends_with = Regex::new("foobar$"); | |
49 | ||
50 | let trivial_contains = Regex::new("foobar"); | |
51 | ||
52 | let trivial_contains = Regex::new(NOT_A_REAL_REGEX); | |
53 | ||
54 | let trivial_backslash = Regex::new("a\\.b"); | |
55 | ||
56 | // unlikely corner cases | |
57 | let trivial_empty = Regex::new(""); | |
58 | ||
59 | let trivial_empty = Regex::new("^"); | |
60 | ||
61 | let trivial_empty = Regex::new("^$"); | |
62 | ||
63 | let binary_trivial_empty = BRegex::new("^$"); | |
64 | ||
65 | // non-trivial regexes | |
66 | let non_trivial_dot = Regex::new("a.b"); | |
67 | let non_trivial_dot_builder = RegexBuilder::new("a.b"); | |
68 | let non_trivial_eq = Regex::new("^foo|bar$"); | |
69 | let non_trivial_starts_with = Regex::new("^foo|bar"); | |
70 | let non_trivial_ends_with = Regex::new("^foo|bar"); | |
71 | let non_trivial_ends_with = Regex::new("foo|bar"); | |
72 | let non_trivial_binary = BRegex::new("foo|bar"); | |
73 | let non_trivial_binary_builder = BRegexBuilder::new("foo|bar"); | |
74 | ||
75 | // #6005: unicode classes in bytes::Regex | |
76 | let a_byte_of_unicode = BRegex::new(r"\p{C}"); | |
77 | } | |
78 | ||
79 | fn main() { | |
80 | syntax_error(); | |
81 | trivial_regex(); | |
82 | } |