Skip to content

Commit 93c3add

Browse files
committed
fixes #1333 Expand ${settings.localRepository} in <argLine>
1 parent 7bcb168 commit 93c3add

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

pitest-maven/src/main/java/org/pitest/maven/AbstractPitMojo.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.apache.maven.plugin.MojoFailureException;
88
import org.apache.maven.plugins.annotations.Parameter;
99
import org.apache.maven.project.MavenProject;
10+
import org.apache.maven.settings.Settings;
1011
import org.eclipse.aether.RepositorySystem;
1112
import org.pitest.coverage.CoverageSummary;
1213
import org.pitest.mutationtest.config.PluginServices;
@@ -401,6 +402,9 @@ public class AbstractPitMojo extends AbstractMojo {
401402
@Parameter(property = "project", readonly = true, required = true)
402403
private MavenProject project;
403404

405+
@Parameter(property = "settings", readonly = true, required = true)
406+
private Settings settings;
407+
404408
/**
405409
* <i>Internal</i>: Map of plugin artifacts.
406410
*/
@@ -668,6 +672,10 @@ public MavenProject getProject() {
668672
return this.project;
669673
}
670674

675+
public Settings getSettings() {
676+
return this.settings;
677+
}
678+
671679
public Map<String, Artifact> getPluginArtifactMap() {
672680
return this.pluginArtifactMap;
673681
}

pitest-maven/src/main/java/org/pitest/maven/MojoToReportOptionsConverter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,8 @@ private String replacePropertyExpressions(String argLine) {
568568
argLine = replaceFieldForSymbol('$', key, argLine);
569569
}
570570

571+
argLine = replaceSettingsField(argLine);
572+
571573
return argLine;
572574
}
573575

@@ -579,4 +581,12 @@ private String replaceFieldForSymbol(char symbol, String key, String argLine) {
579581
return argLine;
580582
}
581583

584+
private String replaceSettingsField(String argLine) {
585+
String field = "${settings.localRepository}";
586+
if (argLine.contains(field)) {
587+
return argLine.replace(field, mojo.getSettings().getLocalRepository());
588+
}
589+
return argLine;
590+
}
591+
582592
}

pitest-maven/src/test/java/org/pitest/maven/BasePitMojoTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.apache.maven.model.Build;
3232
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
3333
import org.apache.maven.project.MavenProject;
34+
import org.apache.maven.settings.Settings;
3435
import org.codehaus.plexus.configuration.PlexusConfiguration;
3536
import org.codehaus.plexus.util.xml.Xpp3Dom;
3637
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
@@ -49,6 +50,9 @@ public abstract class BasePitMojoTest extends AbstractMojoTestCase {
4950
@Mock
5051
protected MavenSession session;
5152

53+
@Mock
54+
protected Settings settings;
55+
5256
@Mock
5357
protected RunPitStrategy executionStrategy;
5458

@@ -123,6 +127,7 @@ protected void configurePitMojo(final AbstractPitMojo pitMojo, final String conf
123127

124128
setVariableValueToObject(pitMojo, "project", this.project);
125129
setVariableValueToObject(pitMojo, "session", this.session);
130+
setVariableValueToObject(pitMojo, "settings", this.settings);
126131

127132
if (pitMojo.getAdditionalClasspathElements() == null) {
128133
ArrayList<String> elements = new ArrayList<>();

pitest-maven/src/test/java/org/pitest/maven/MojoToReportOptionsConverterTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,12 @@ public void testEvaluatesNormalPropertiesInArgLines() {
469469
assertThat(actual.getArgLine()).isEqualTo("fooValue barValue");
470470
}
471471

472+
public void testEvaluatesLocalRepositoryPropertyInArgLines() {
473+
when(this.settings.getLocalRepository()).thenReturn("localRepoValue");
474+
ReportOptions actual = parseConfig("<argLine>${settings.localRepository}/jar</argLine>");
475+
assertThat(actual.getArgLine()).isEqualTo("localRepoValue/jar");
476+
}
477+
472478
public void testAddsModulesToMutationPathWhenCrossModule() {
473479
MavenProject dependedOn = project("com.example", "foo");
474480
MavenProject notDependedOn = project("com.example", "bar");

0 commit comments

Comments
 (0)