[ https://issues.apache.org/jira/browse/MNG-7194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17853537#comment-17853537 ]
Piotr Zygielo edited comment on MNG-7194 at 6/9/24 8:52 PM: ------------------------------------------------------------ Just wonder if this could be related to my unmet expectation I have with surefire and {{{}surefire.forkNumber{}}}. Given [https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#forkCount] {quote}The system properties and the argLine of the forked processes may contain the place holder string ${surefire.forkNumber}, which is replaced with a fixed number for each of the parallel forks {quote} When I configure {{m-surefire-p}} with {code:xml} <systemPropertyVariables> <p1>${surefire.forkNumber}</p1> </systemPropertyVariables> {code} Then {{p1}} system property (available in test) is set to empty string (it's not set during interpolation of parameters for plugin and {{SurefireHelper.replaceThreadNumberPlaceholders}} finds nothing to work with). (While {color:#de350b}I expect(ed){color} the value {{N}} there.) But when I use {code:xml} <systemPropertyVariables> <p1>_${surefire.forkNumber}_</p1> </systemPropertyVariables> {code} (where {{_}} can be anything just to not leave {{{}${}}}-property reference alone) Then {{p1}} system property is set to {{_N_}} as expected, as it's passed to SF as unchanged {{_${surefire.forkNumber}_}} and {{SurefireHelper.replaceThreadNumberPlaceholders}} is happy with that. If those cases are linked - then perhaps if {quote}It should be just pre? {quote} is implemented, (would it cause {{__}} to be passed for my {{p1}} to SF?) it would probably need some changes in SF in such case. (Or could be handled in SF in first place separately.) I think. was (Author: pzygielo): Just wonder if this could be related to my unmet expectation I have with surefire and {{{}surefire.forkNumber{}}}. Given [https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#forkCount] {quote}The system properties and the argLine of the forked processes may contain the place holder string \{${surefire.forkNumber}}, which is replaced with a fixed number for each of the parallel forks {quote} When I configure {{m-surefire-p}} with {code:xml} <systemPropertyVariables> <p1>${surefire.forkNumber}</p1> </systemPropertyVariables> {code} Then {{p1}} system property (available in test) is set to empty string (it's not set during interpolation of parameters for plugin and {{SurefireHelper.replaceThreadNumberPlaceholders}} finds nothing to work with). (While {color:#de350b}I expect(ed){color} the value {{N}} there.) But when I use {code:xml} <systemPropertyVariables> <p1>_${surefire.forkNumber}_</p1> </systemPropertyVariables> {code} (where {{_}} can be anything just to not leave {{{}${}}}-property reference alone) Then {{p1}} system property is set to {{\_N\_}} as expected, as it's passed to SF as unchanged {{\_${surefire.forkNumber}\_}} and {{SurefireHelper.replaceThreadNumberPlaceholders}} is happy with that. If those cases are linked - then perhaps if {quote}It should be just pre? {quote} is implemented, (would it cause {{__}} to be passed for my {{p1}} to SF?) it would probably need some changes in SF in such case. (Or could be handled in SF in first place separately.) I think. > PluginParameterExpressionEvaluator incorrectly interpolates unknown > subexpression > --------------------------------------------------------------------------------- > > Key: MNG-7194 > URL: https://issues.apache.org/jira/browse/MNG-7194 > Project: Maven > Issue Type: Bug > Components: Inheritance and Interpolation > Reporter: Robert Scholte > Priority: Minor > > The PluginParameterExpressionEvaluator evaluate(String,Class)-method ends > like this: > {code:java} > if ( value instanceof String ) > { > // TODO: without #, this could just be an evaluate call... > String val = (String) value; > int exprStartDelimiter = val.indexOf( "${" ); > if ( exprStartDelimiter >= 0 ) > { > if ( exprStartDelimiter > 0 ) > { > value = val.substring( 0, exprStartDelimiter ) + > evaluate( val.substring( exprStartDelimiter ) ); > } > else > { > value = evaluate( val.substring( exprStartDelimiter ) ); > } > } > } > {code} > Assume that pre${unknown} needs to be evaluated and {{unknown}} does not > exist, the result well be "{{prenull}}" > Just ${unknown} evaluates to null, but because there's no String concat it > will be a real null. -- This message was sent by Atlassian Jira (v8.20.10#820010)