[
https://issues.apache.org/jira/browse/SUREFIRE-1250?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15301036#comment-15301036
]
ASF GitHub Bot commented on SUREFIRE-1250:
------------------------------------------
Github user Tibor17 commented on a diff in the pull request:
https://github.com/apache/maven-surefire/pull/113#discussion_r64666590
--- Diff:
surefire-api/src/main/java/org/apache/maven/surefire/testset/TestListResolver.java
---
@@ -479,6 +481,27 @@ else if ( hasMethod )
updatedFilters( isExcluded, test, patterns, includedFilters,
excludedFilters );
}
}
+
+ private static void regexSanityCheck( String request, String
classNameExpr, String methodNameExpr )
+ {
+ // this will emit any exception if the regex is not valid at all
+ Pattern.compile( request );
+ try
+ {
+ Pattern.compile( classNameExpr );
+ Pattern.compile( methodNameExpr );
+ if ( methodNameExpr.indexOf( "#" ) != -1 )
--- End diff --
I thought you would use `String.contains` in both constructors of
`ResolvedTest`.
I think we do not need to use `Pattern.compile` here because this is
already done by `maven-shared-utils` anyway.
Lets use the sanity check if the `isRegex` is set, because I do not know
how Cucumber would use JUnit Description of method or class name without regex.
Cucumber is different runner from most of the other.
> Regex testcase filtering: exception when hashmark is regex-quoted
> -----------------------------------------------------------------
>
> Key: SUREFIRE-1250
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1250
> Project: Maven Surefire
> Issue Type: Bug
> Components: Maven Surefire Plugin
> Affects Versions: 2.19.1
> Reporter: Zoltan Haindrich
> Assignee: Tibor Digana
> Priority: Minor
> Attachments: SUREFIRE-1250.patch
>
>
> i've been using regex to select which tests to run...and i've got some wierd
> exceptions when executing
> {code}
> mvn test "-Dtest=%regex[.*\Q#\E.*]"
> {code}
> executing the above command results in:
> {code}
> java.util.regex.PatternSyntaxException:
> Illegal/unsupported escape sequence near index 1
> \E.*
> ^
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:364)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
> at
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
> {code}
> i noticed earlier that maven might do some black-magic with these regexps in
> the background ( i know that it should know the class name earlier; to avoid
> starting testcases which will get entirely excluded...and thats cool )
> ...so..i assume maven does split the regex by the {{#}}; and that's okay - if
> that can't be avoided; place some pointers in the documentation about it
> and/or a more descriptive exception could be useful
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)