1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.toolchain.merge;
20
21 import java.io.InputStream;
22
23 import org.apache.maven.toolchain.model.PersistedToolchains;
24 import org.apache.maven.toolchain.model.ToolchainModel;
25 import org.apache.maven.toolchain.model.TrackableBase;
26 import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
27 import org.codehaus.plexus.util.xml.Xpp3Dom;
28 import org.junit.Test;
29
30 import static org.junit.Assert.assertEquals;
31
32 public class MavenToolchainMergerTest {
33 private MavenToolchainMerger merger = new MavenToolchainMerger();
34
35 private MavenToolchainsXpp3Reader reader = new MavenToolchainsXpp3Reader();
36
37 @Test
38 public void testMergeNulls() {
39 merger.merge(null, null, null);
40
41 PersistedToolchains pt = new PersistedToolchains();
42 merger.merge(pt, null, null);
43 merger.merge(null, pt, null);
44 }
45
46 @Test
47 public void testMergeJdk() throws Exception {
48 try (InputStream isDominant = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml");
49 InputStream isRecessive = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml")) {
50 PersistedToolchains dominant = reader.read(isDominant);
51 PersistedToolchains recessive = reader.read(isRecessive);
52 assertEquals(2, dominant.getToolchains().size());
53
54 merger.merge(dominant, recessive, TrackableBase.USER_LEVEL);
55 assertEquals(2, dominant.getToolchains().size());
56 }
57 }
58
59 @Test
60 public void testMergeJdkExtra() throws Exception {
61 try (InputStream jdksIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml");
62 InputStream jdksExtraIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks-extra.xml")) {
63 PersistedToolchains jdks = reader.read(jdksIS);
64 PersistedToolchains jdksExtra = reader.read(jdksExtraIS);
65 assertEquals(2, jdks.getToolchains().size());
66
67 merger.merge(jdks, jdksExtra, TrackableBase.USER_LEVEL);
68 assertEquals(4, jdks.getToolchains().size());
69 assertEquals(2, jdksExtra.getToolchains().size());
70 }
71 try (InputStream jdksIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml");
72 InputStream jdksExtraIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks-extra.xml")) {
73 PersistedToolchains jdks = reader.read(jdksIS);
74 PersistedToolchains jdksExtra = reader.read(jdksExtraIS);
75 assertEquals(2, jdks.getToolchains().size());
76
77
78 merger.merge(jdksExtra, jdks, TrackableBase.USER_LEVEL);
79 assertEquals(4, jdksExtra.getToolchains().size());
80 assertEquals(2, jdks.getToolchains().size());
81 }
82 }
83
84 @Test
85 public void testMergeJdkExtend() throws Exception {
86 try (InputStream jdksIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml");
87 InputStream jdksExtendIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks-extend.xml")) {
88 PersistedToolchains jdks = reader.read(jdksIS);
89 PersistedToolchains jdksExtend = reader.read(jdksExtendIS);
90 assertEquals(2, jdks.getToolchains().size());
91
92 merger.merge(jdks, jdksExtend, TrackableBase.USER_LEVEL);
93 assertEquals(2, jdks.getToolchains().size());
94 Xpp3Dom config0 = (Xpp3Dom) jdks.getToolchains().get(0).getConfiguration();
95 assertEquals("lib/tools.jar", config0.getChild("toolsJar").getValue());
96 assertEquals(2, config0.getChildCount());
97 Xpp3Dom config1 = (Xpp3Dom) jdks.getToolchains().get(1).getConfiguration();
98 assertEquals(2, config1.getChildCount());
99 assertEquals("lib/classes.jar", config1.getChild("toolsJar").getValue());
100 assertEquals(2, jdksExtend.getToolchains().size());
101 }
102 try (InputStream jdksIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks.xml");
103 InputStream jdksExtendIS = ToolchainModel.class.getResourceAsStream("toolchains-jdks-extend.xml")) {
104 PersistedToolchains jdks = reader.read(jdksIS);
105 PersistedToolchains jdksExtend = reader.read(jdksExtendIS);
106 assertEquals(2, jdks.getToolchains().size());
107
108
109 merger.merge(jdksExtend, jdks, TrackableBase.USER_LEVEL);
110 assertEquals(2, jdksExtend.getToolchains().size());
111 Xpp3Dom config0 = (Xpp3Dom) jdksExtend.getToolchains().get(0).getConfiguration();
112 assertEquals("lib/tools.jar", config0.getChild("toolsJar").getValue());
113 assertEquals(2, config0.getChildCount());
114 Xpp3Dom config1 = (Xpp3Dom) jdksExtend.getToolchains().get(1).getConfiguration();
115 assertEquals(2, config1.getChildCount());
116 assertEquals("lib/classes.jar", config1.getChild("toolsJar").getValue());
117 assertEquals(2, jdks.getToolchains().size());
118 }
119 }
120 }