1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.invoker;
20
21 import java.io.File;
22 import java.io.Reader;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.Properties;
26
27 import org.apache.maven.model.Scm;
28 import org.apache.maven.project.MavenProject;
29 import org.apache.maven.settings.Settings;
30 import org.codehaus.plexus.util.IOUtil;
31 import org.codehaus.plexus.util.xml.XmlStreamReader;
32 import org.junit.jupiter.api.Test;
33
34 import static org.assertj.core.api.Assertions.assertThat;
35
36
37
38
39
40 class InterpolationTest extends AbstractTestUtil {
41
42 private MavenProject buildMavenProjectStub() {
43 MavenProject project = new MavenProject();
44 project.setVersion("1.0-SNAPSHOT");
45 project.setArtifactId("foo");
46 project.setGroupId("bar");
47 project.setFile(new File(getBasedir(), "pom.xml"));
48 Properties properties = new Properties();
49 properties.put("fooOnProject", "barOnProject");
50 project.getModel().setProperties(properties);
51 Scm scm = new Scm();
52 scm.setConnection("http://blabla");
53 project.setScm(scm);
54 return project;
55 }
56
57 @Test
58 void testCompositeMap() {
59
60 Map<String, Object> properties = new HashMap<>();
61 properties.put("foo", "bar");
62 properties.put("version", "2.0-SNAPSHOT");
63 CompositeMap compositeMap = new CompositeMap(buildMavenProjectStub(), properties, false);
64 assertThat(compositeMap).containsEntry("pom.version", "1.0-SNAPSHOT");
65 assertThat(compositeMap).containsEntry("foo", "bar");
66 assertThat(compositeMap).containsEntry("pom.groupId", "bar");
67 assertThat(compositeMap).containsEntry("pom.scm.connection", "http://blabla");
68 assertThat(compositeMap).containsEntry("fooOnProject", "barOnProject");
69 }
70
71 @Test
72 void testPomInterpolation() throws Exception {
73 File interpolatedPomFile;
74 InvokerMojo invokerMojo = new InvokerMojo();
75 setVariableValueToObject(invokerMojo, "project", buildMavenProjectStub());
76 setVariableValueToObject(invokerMojo, "settings", new Settings());
77 Properties properties = new Properties();
78 properties.put("foo", "bar");
79 properties.put("version", "2.0-SNAPSHOT");
80 setVariableValueToObject(invokerMojo, "filterProperties", properties);
81 String dirPath = getBasedir() + File.separatorChar + "src" + File.separatorChar + "test" + File.separatorChar
82 + "resources" + File.separatorChar + "unit" + File.separatorChar + "interpolation";
83
84 interpolatedPomFile = new File(getBasedir(), "target/interpolated-pom.xml");
85 invokerMojo.buildInterpolatedFile(new File(dirPath, "pom.xml"), interpolatedPomFile);
86 try (Reader reader = new XmlStreamReader(interpolatedPomFile)) {
87 String content = IOUtil.toString(reader);
88 assertThat(content.indexOf("<interpolateValue>bar</interpolateValue>"))
89 .isPositive();
90 }
91
92 invokerMojo.buildInterpolatedFile(new File(dirPath, "pom.xml"), interpolatedPomFile);
93 try (Reader reader = new XmlStreamReader(interpolatedPomFile)) {
94 String content = IOUtil.toString(reader);
95 assertThat(content.indexOf("<interpolateValue>bar</interpolateValue>"))
96 .isPositive();
97 }
98 }
99 }