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

Reply via email to