Skip to content

Commit 2f8afc0

Browse files
ACOMMONS-35 Remove commons-lang dependency
1 parent ddf4a1b commit 2f8afc0

File tree

4 files changed

+52
-60
lines changed

4 files changed

+52
-60
lines changed

regex-parsing/pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@
3636
<artifactId>assertj-core</artifactId>
3737
<scope>test</scope>
3838
</dependency>
39-
<dependency>
40-
<groupId>commons-lang</groupId>
41-
<artifactId>commons-lang</artifactId>
42-
<version>2.6</version>
43-
<scope>test</scope>
44-
</dependency>
4539
<dependency>
4640
<groupId>org.mockito</groupId>
4741
<artifactId>mockito-core</artifactId>

regex-parsing/src/test/java/org/sonarsource/analyzer/commons/regex/ast/BackReferenceTreeTest.java

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.junit.jupiter.api.Test;
2222
import org.sonarsource.analyzer.commons.regex.RegexFeature;
2323

24-
import static org.apache.commons.lang.StringEscapeUtils.escapeJava;
2524
import static org.assertj.core.api.Assertions.assertThat;
2625
import static org.sonarsource.analyzer.commons.regex.RegexParserTestUtils.assertFailParsing;
2726
import static org.sonarsource.analyzer.commons.regex.RegexParserTestUtils.assertKind;
@@ -31,29 +30,29 @@ class BackReferenceTreeTest {
3130

3231
@Test
3332
void backReferences() {
34-
assertBackReference(escapeJava("\\k<group1>"), "group1");
35-
assertBackReference(escapeJava("\\k<ALPHA>"), "ALPHA");
36-
assertBackReference(escapeJava("\\k<0invalid>"), "0invalid");
37-
38-
assertBackReference(escapeJava("\\1"), 1);
39-
assertBackReference(escapeJava("(1)\\1"), 1);
40-
assertBackReference(escapeJava("(1)\\7"), 7);
41-
assertBackReference(escapeJava("(1)\\11"), 1);
42-
assertBackReference(escapeJava("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)\\11"), 1);
43-
assertBackReference(escapeJava("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)\\11"), 11);
44-
assertBackReference(escapeJava("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)\\11"), 11);
45-
assertBackReference(escapeJava("(((((5)(6)(7)(8)(9)(a)\\11)?)+)*)"), 1);
46-
assertBackReference(escapeJava("(((((5)(6)(7)(8)(9)(a)(b)\\11)?)+)*)"), 11);
47-
48-
RegexTree regex = assertSuccessfulParse(escapeJava("\\42."));
33+
assertBackReference("\\\\k<group1>", "group1");
34+
assertBackReference("\\\\k<ALPHA>", "ALPHA");
35+
assertBackReference("\\\\k<0invalid>", "0invalid");
36+
37+
assertBackReference("\\\\1", 1);
38+
assertBackReference("(1)\\\\1", 1);
39+
assertBackReference("(1)\\\\7", 7);
40+
assertBackReference("(1)\\\\11", 1);
41+
assertBackReference("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)\\\\11", 1);
42+
assertBackReference("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)\\\\11", 11);
43+
assertBackReference("(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)\\\\11", 11);
44+
assertBackReference("(((((5)(6)(7)(8)(9)(a)\\\\11)?)+)*)", 1);
45+
assertBackReference("(((((5)(6)(7)(8)(9)(a)(b)\\\\11)?)+)*)", 11);
46+
47+
RegexTree regex = assertSuccessfulParse("\\\\42.");
4948
assertThat(regex.is(RegexTree.Kind.SEQUENCE)).isTrue();
5049
SequenceTree seq = (SequenceTree) regex;
5150
assertThat(seq.getItems()).hasSize(3);
5251
assertThat(seq.getItems().get(0)).isInstanceOf(BackReferenceTree.class);
5352
assertThat(seq.getItems().get(1)).isInstanceOf(CharacterTree.class);
5453
assertThat(seq.getItems().get(2)).isInstanceOf(DotTree.class);
5554

56-
RegexTree regex2 = assertSuccessfulParse(escapeJava("\\42a"));
55+
RegexTree regex2 = assertSuccessfulParse("\\\\42a");
5756
assertThat(regex2.is(RegexTree.Kind.SEQUENCE)).isTrue();
5857
SequenceTree seq2 = (SequenceTree) regex2;
5958
assertThat(seq2.getItems()).hasSize(3);
@@ -115,33 +114,33 @@ private void assertBackReferenceGroupAssignment(String pattern, RegexFeature...
115114

116115
@Test
117116
void failingInvalidBackReferences() {
118-
assertFailParsing(escapeJava("\\ko"), "Expected '<', but found 'o'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
119-
assertFailParsing(escapeJava("\\k<"), "Expected a group name, but found the end of the regex", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
120-
assertFailParsing(escapeJava("\\k<o"), "Expected '>', but found the end of the regex", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
121-
assertFailParsing(escapeJava("\\k<>"), "Expected a group name, but found '>'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
122-
assertFailParsing(escapeJava("\\ko"), "Expected '<' or ''', but found 'o'", RegexFeature.DOTNET_SYNTAX_GROUP_NAME);
123-
assertFailParsing(escapeJava("\\go"), "Expected '{', but found 'o'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
124-
assertFailParsing(escapeJava("\\ko"), "Expected '{', but found 'o'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
117+
assertFailParsing("\\\\ko", "Expected '<', but found 'o'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
118+
assertFailParsing("\\\\k<", "Expected a group name, but found the end of the regex", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
119+
assertFailParsing("\\\\k<o", "Expected '>', but found the end of the regex", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
120+
assertFailParsing("\\\\k<>", "Expected a group name, but found '>'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
121+
assertFailParsing("\\\\ko", "Expected '<' or ''', but found 'o'", RegexFeature.DOTNET_SYNTAX_GROUP_NAME);
122+
assertFailParsing("\\\\go", "Expected '{', but found 'o'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
123+
assertFailParsing("\\\\ko", "Expected '{', but found 'o'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
125124
assertFailParsing("(?P=)", "Expected a group name, but found ')'", RegexFeature.PYTHON_SYNTAX_GROUP_NAME);
126125
assertFailParsing("(?P=name)", "Expected flag or ':' or ')', but found 'P'");
127126
}
128127

129128
@Test
130129
void failingInvalidWhenWrongFeatureIsSupported() {
131-
assertFailParsing(escapeJava("\\k<name>"), "Expected '{', but found '<'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
132-
assertFailParsing(escapeJava("\\k'name'"), "Expected '<', but found '''", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
133-
assertFailParsing(escapeJava("\\k{name}"), "Expected '<', but found '{'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
130+
assertFailParsing("\\\\k<name>", "Expected '{', but found '<'", RegexFeature.PERL_SYNTAX_GROUP_NAME);
131+
assertFailParsing("\\\\k'name'", "Expected '<', but found '''", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
132+
assertFailParsing("\\\\k{name}", "Expected '<', but found '{'", RegexFeature.JAVA_SYNTAX_GROUP_NAME);
134133
}
135134

136135
@Test
137136
void noFailingWhenFeatureNotSupported() {
138-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\ko")));
139-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\k<")));
140-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\k<o")));
141-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\k<>")));
142-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\ko")));
143-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\go")));
144-
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse(escapeJava("\\ko")));
137+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\ko"));
138+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\k<"));
139+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\k<o"));
140+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\k<>"));
141+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\ko"));
142+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\go"));
143+
assertKind(RegexTree.Kind.SEQUENCE, assertSuccessfulParse("\\\\ko"));
145144
}
146145

147146
private static void assertBackReference(String regex, String expectedGroupName) {

regex-parsing/src/test/java/org/sonarsource/analyzer/commons/regex/helpers/RegexTreeHelperTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.sonarsource.analyzer.commons.regex.helpers;
1818

1919

20-
import java.util.HashSet;
2120
import java.util.regex.Pattern;
2221
import org.assertj.core.api.AbstractBooleanAssert;
2322
import org.junit.jupiter.api.Test;
@@ -274,7 +273,7 @@ void superset_of_prefix() {
274273
assertSupersetOf("xy+", false, "xy", true, false).isTrue();
275274
assertSupersetOf("x", false, "x+y", true, false).isTrue();
276275
assertSupersetOf("x", false, "x*y", true, false).isFalse();
277-
assertSupersetOf("\\d+", false, "789", true, false).isTrue();
276+
assertSupersetOf("\\\\d+", false, "789", true, false).isTrue();
278277
assertSupersetOf("\\d+", false, "(7|x)89", true, false).isFalse();
279278

280279
assertSupersetOf("xy", false, "x", false, false).isFalse();
@@ -393,6 +392,7 @@ void intersects_and_superset_of_complex_expression() {
393392
"\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000" +
394393
"-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\" +
395394
"n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*))*)?;\\s*)";
395+
longEmailRegex = longEmailRegex.replace("\\", "\\\\");
396396

397397
assertIntersects(longEmailRegex, longEmailRegex, false).isTrue();
398398
assertIntersects(longEmailRegex, longEmailRegex, true).isTrue();

regex-parsing/src/test/java/org/sonarsource/analyzer/commons/regex/helpers/SimplifiedRegexCharacterClassTest.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import java.util.List;
2121
import java.util.regex.Pattern;
22-
import org.apache.commons.lang.StringEscapeUtils;
2322
import org.assertj.core.api.AbstractBooleanAssert;
2423
import org.junit.jupiter.api.Test;
2524
import org.sonarsource.analyzer.commons.regex.java.JavaRegexSource;
@@ -197,29 +196,29 @@ void intersects_with_utf16() {
197196
@Test
198197
void unicode_subsets() {
199198
int flags = Pattern.UNICODE_CHARACTER_CLASS;
200-
assertSupersetOf("\\d", "[0-9]", false, flags).isTrue();
199+
assertSupersetOf("\\\\d", "[0-9]", false, flags).isTrue();
201200
assertSupersetOf("\\D", "[0-9]", false, flags).isFalse();
202201

203202
assertSupersetOf("\\w", "\\D", false, flags).isFalse();
204203
assertSupersetOf("\\w", "\\D", true, flags).isFalse();
205-
assertSupersetOf("\\W", "[:-@]", false, NO_FLAGS).isTrue();
206-
assertSupersetOf("\\W", "[{-´]", false, NO_FLAGS).isTrue();
207-
assertSupersetOf("\\W", "[{-´]", false, flags).isTrue();
204+
assertSupersetOf("\\\\W", "[:-@]", false, NO_FLAGS).isTrue();
205+
assertSupersetOf("\\\\W", "[{-´]", false, NO_FLAGS).isTrue();
206+
assertSupersetOf("\\\\W", "[{-´]", false, flags).isTrue();
208207

209-
assertSupersetOf("\\s", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, flags).isTrue();
210-
assertSupersetOf("\\s", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, NO_FLAGS).isFalse();
208+
assertSupersetOf("\\\\s", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, flags).isTrue();
209+
assertSupersetOf("\\\\s", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, NO_FLAGS).isFalse();
211210

212211
assertSupersetOf("\\S", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, flags).isFalse();
213-
assertSupersetOf("\\S", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, NO_FLAGS).isTrue();
212+
assertSupersetOf("\\\\S", "[\u0085\u00A0\u1680\u2000\u2028\u202F\u205F\u3000]", false, NO_FLAGS).isTrue();
214213

215-
assertSupersetOf("\\S", "[\u0086\u00A1\u1681\u200B\u202A\u2030\u2060\u3001]", false, flags).isTrue();
216-
assertSupersetOf("\\S", "[\u0086\u00A1\u1681\u200B\u202A\u2030\u2060\u3001]", false, NO_FLAGS).isTrue();
214+
assertSupersetOf("\\\\S", "[\u0086\u00A1\u1681\u200B\u202A\u2030\u2060\u3001]", false, flags).isTrue();
215+
assertSupersetOf("\\\\S", "[\u0086\u00A1\u1681\u200B\u202A\u2030\u2060\u3001]", false, NO_FLAGS).isTrue();
217216
}
218217

219218
@Test
220219
void empty_is_not_superset_of_something_with_unknown_characters() {
221-
String emptyCharacterClass = "[^\\s\\S]";
222-
String unknownCharacter = "\\N{slightly smiling face}";
220+
String emptyCharacterClass = "[^\\\\s\\\\S]";
221+
String unknownCharacter = "\\\\N{slightly smiling face}";
223222
assertSupersetOf(emptyCharacterClass, unknownCharacter, true, NO_FLAGS).isFalse();
224223
}
225224

@@ -307,11 +306,11 @@ void superset_of_dot_all() {
307306

308307
@Test
309308
void superset_of_predefined_character_classes() {
310-
assertSupersetOf("\\d", "[0-9]", false, NO_FLAGS).isTrue();
311-
assertSupersetOf("[0-9]", "\\d", false, NO_FLAGS).isTrue();
312-
assertSupersetOf("\\d", "[2-5]", false, NO_FLAGS).isTrue();
309+
assertSupersetOf("\\\\d", "[0-9]", false, NO_FLAGS).isTrue();
310+
assertSupersetOf("[0-9]", "\\\\d", false, NO_FLAGS).isTrue();
311+
assertSupersetOf("\\\\d", "[2-5]", false, NO_FLAGS).isTrue();
313312
assertSupersetOf("[2-5]", "\\d", false, NO_FLAGS).isFalse();
314-
assertSupersetOf("[^a-z]", "\\d", false, NO_FLAGS).isTrue();
313+
assertSupersetOf("[^a-z]", "\\\\d", false, NO_FLAGS).isTrue();
315314
assertSupersetOf("\\d", "[^a-z]", true, NO_FLAGS).isFalse();
316315
}
317316

@@ -403,7 +402,7 @@ void superset_of_character_classes() {
403402
void superset_of_default_answer() {
404403
int flags = Pattern.UNICODE_CHARACTER_CLASS;
405404
assertSupersetOf("[0-9]", "\\d", false, flags).isFalse();
406-
assertSupersetOf("[0-9]", "\\d", true, flags).isTrue();
405+
assertSupersetOf("[0-9]", "\\\\d", true, flags).isTrue();
407406
}
408407

409408
@Test
@@ -491,7 +490,7 @@ private static AbstractBooleanAssert<?> assertSupersetOf(String superset, String
491490
}
492491

493492
static RegexParseResult parseRegex(String stringLiteral, FlagSet flagSet) {
494-
RegexParseResult result = new RegexParser(new JavaRegexSource(StringEscapeUtils.escapeJava(stringLiteral)), flagSet).parse();
493+
RegexParseResult result = new RegexParser(new JavaRegexSource(stringLiteral), flagSet).parse();
495494
assertThat(result.getSyntaxErrors()).isEmpty();
496495
return result;
497496
}

0 commit comments

Comments
 (0)