[ 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)