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.IOException;
22 import java.io.InputStream;
23 import java.util.Collections;
24
25 import org.apache.maven.toolchain.io.DefaultToolchainsReader;
26 import org.apache.maven.toolchain.model.PersistedToolchains;
27 import org.apache.maven.toolchain.model.TrackableBase;
28 import org.codehaus.plexus.util.xml.Xpp3Dom;
29 import org.junit.jupiter.api.Test;
30
31 import static org.junit.jupiter.api.Assertions.assertEquals;
32
33 class MavenToolchainMergerTest {
34 private MavenToolchainMerger merger = new MavenToolchainMerger();
35
36 private DefaultToolchainsReader reader = new DefaultToolchainsReader();
37
38 @Test
39 void testMergeNulls() {
40 merger.merge(null, null, null);
41
42 PersistedToolchains pt = new PersistedToolchains();
43 merger.merge(pt, null, null);
44 merger.merge(null, pt, null);
45 }
46
47 @Test
48 void testMergeJdk() throws Exception {
49 try (InputStream isDominant = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml");
50 InputStream isRecessive = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml")) {
51 PersistedToolchains dominant = read(isDominant);
52 PersistedToolchains recessive = read(isRecessive);
53 assertEquals(2, dominant.getToolchains().size());
54
55 merger.merge(dominant, recessive, TrackableBase.USER_LEVEL);
56 assertEquals(2, dominant.getToolchains().size());
57 }
58 }
59
60 @Test
61 void testMergeJdkExtra() throws Exception {
62 try (InputStream jdksIS = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml");
63 InputStream jdksExtraIS =
64 MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks-extra.xml")) {
65 PersistedToolchains jdks = read(jdksIS);
66 PersistedToolchains jdksExtra = read(jdksExtraIS);
67 assertEquals(2, jdks.getToolchains().size());
68
69 merger.merge(jdks, jdksExtra, TrackableBase.USER_LEVEL);
70 assertEquals(4, jdks.getToolchains().size());
71 assertEquals(2, jdksExtra.getToolchains().size());
72 }
73 try (InputStream jdksIS = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml");
74 InputStream jdksExtraIS =
75 MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks-extra.xml")) {
76 PersistedToolchains jdks = read(jdksIS);
77 PersistedToolchains jdksExtra = read(jdksExtraIS);
78 assertEquals(2, jdks.getToolchains().size());
79
80
81 merger.merge(jdksExtra, jdks, TrackableBase.USER_LEVEL);
82 assertEquals(4, jdksExtra.getToolchains().size());
83 assertEquals(2, jdks.getToolchains().size());
84 }
85 }
86
87 @Test
88 void testMergeJdkExtend() throws Exception {
89 try (InputStream jdksIS = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml");
90 InputStream jdksExtendIS =
91 MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks-extend.xml")) {
92 PersistedToolchains jdks = read(jdksIS);
93 PersistedToolchains jdksExtend = read(jdksExtendIS);
94 assertEquals(2, jdks.getToolchains().size());
95
96 merger.merge(jdks, jdksExtend, TrackableBase.USER_LEVEL);
97 assertEquals(2, jdks.getToolchains().size());
98 Xpp3Dom config0 = (Xpp3Dom) jdks.getToolchains().get(0).getConfiguration();
99 assertEquals("lib/tools.jar", config0.getChild("toolsJar").getValue());
100 assertEquals(2, config0.getChildCount());
101 Xpp3Dom config1 = (Xpp3Dom) jdks.getToolchains().get(1).getConfiguration();
102 assertEquals(2, config1.getChildCount());
103 assertEquals("lib/classes.jar", config1.getChild("toolsJar").getValue());
104 assertEquals(2, jdksExtend.getToolchains().size());
105 }
106 try (InputStream jdksIS = MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks.xml");
107 InputStream jdksExtendIS =
108 MavenToolchainMergerTest.class.getResourceAsStream("toolchains-jdks-extend.xml")) {
109 PersistedToolchains jdks = read(jdksIS);
110 PersistedToolchains jdksExtend = read(jdksExtendIS);
111 assertEquals(2, jdks.getToolchains().size());
112
113
114 merger.merge(jdksExtend, jdks, TrackableBase.USER_LEVEL);
115 assertEquals(2, jdksExtend.getToolchains().size());
116 Xpp3Dom config0 = (Xpp3Dom) jdksExtend.getToolchains().get(0).getConfiguration();
117 assertEquals("lib/tools.jar", config0.getChild("toolsJar").getValue());
118 assertEquals(2, config0.getChildCount());
119 Xpp3Dom config1 = (Xpp3Dom) jdksExtend.getToolchains().get(1).getConfiguration();
120 assertEquals(2, config1.getChildCount());
121 assertEquals("lib/classes.jar", config1.getChild("toolsJar").getValue());
122 assertEquals(2, jdks.getToolchains().size());
123 }
124 }
125
126 private PersistedToolchains read(InputStream is) throws IOException {
127 return reader.read(is, Collections.emptyMap());
128 }
129 }