1 package org.apache.maven.toolchain.merge;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static org.junit.Assert.assertEquals;
23
24 import java.io.InputStream;
25
26 import org.apache.maven.toolchain.model.PersistedToolchains;
27 import org.apache.maven.toolchain.model.ToolchainModel;
28 import org.apache.maven.toolchain.model.TrackableBase;
29 import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
30 import org.codehaus.plexus.util.IOUtil;
31 import org.codehaus.plexus.util.xml.Xpp3Dom;
32 import org.junit.Test;
33
34 public class MavenToolchainMergerTest
35 {
36 private MavenToolchainMerger merger = new MavenToolchainMerger();
37
38 private MavenToolchainsXpp3Reader reader = new MavenToolchainsXpp3Reader();
39
40 @Test
41 public void testMergeNulls()
42 {
43 merger.merge( null, null, null );
44
45 PersistedToolchains pt = new PersistedToolchains();
46 merger.merge( pt, null, null );
47 merger.merge( null, pt, null );
48 }
49
50 @Test
51 public void testMergeJdk() throws Exception
52 {
53 InputStream isDominant = null;
54 InputStream isRecessive = null;
55 try
56 {
57 isDominant = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
58 isRecessive = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
59
60 PersistedToolchains dominant = reader.read( isDominant );
61 PersistedToolchains recessive = reader.read( isRecessive );
62 assertEquals( 2, dominant.getToolchains().size() );
63
64 merger.merge( dominant, recessive, TrackableBase.USER_LEVEL );
65 assertEquals( 2, dominant.getToolchains().size() );
66 }
67 finally
68 {
69 IOUtil.close( isDominant );
70 }
71 }
72
73 @Test
74 public void testMergeJdkExtra() throws Exception
75 {
76 InputStream jdksIS = null;
77 InputStream jdksExtraIS = null;
78 try
79 {
80 jdksIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
81 jdksExtraIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks-extra.xml" );
82
83 PersistedToolchains jdks = reader.read( jdksIS );
84 PersistedToolchains jdksExtra = reader.read( jdksExtraIS );
85 assertEquals( 2, jdks.getToolchains().size() );
86
87 merger.merge( jdks, jdksExtra, TrackableBase.USER_LEVEL );
88 assertEquals( 4, jdks.getToolchains().size() );
89 assertEquals( 2, jdksExtra.getToolchains().size() );
90 }
91 finally
92 {
93 IOUtil.close( jdksIS );
94 IOUtil.close( jdksExtraIS );
95 }
96
97 try
98 {
99 jdksIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
100 jdksExtraIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks-extra.xml" );
101
102 PersistedToolchains jdks = reader.read( jdksIS );
103 PersistedToolchains jdksExtra = reader.read( jdksExtraIS );
104 assertEquals( 2, jdks.getToolchains().size() );
105
106
107 merger.merge( jdksExtra, jdks, TrackableBase.USER_LEVEL );
108 assertEquals( 4, jdksExtra.getToolchains().size() );
109 assertEquals( 2, jdks.getToolchains().size() );
110 }
111 finally
112 {
113 IOUtil.close( jdksIS );
114 IOUtil.close( jdksExtraIS );
115 }
116 }
117
118 @Test
119 public void testMergeJdkExtend() throws Exception
120 {
121 InputStream jdksIS = null;
122 InputStream jdksExtendIS = null;
123 try
124 {
125 jdksIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
126 jdksExtendIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks-extend.xml" );
127
128 PersistedToolchains jdks = reader.read( jdksIS );
129 PersistedToolchains jdksExtend = reader.read( jdksExtendIS );
130 assertEquals( 2, jdks.getToolchains().size() );
131
132 merger.merge( jdks, jdksExtend, TrackableBase.USER_LEVEL );
133 assertEquals( 2, jdks.getToolchains().size() );
134 Xpp3Dom config0 = (Xpp3Dom) jdks.getToolchains().get( 0 ).getConfiguration();
135 assertEquals( "lib/tools.jar", config0.getChild( "toolsJar" ).getValue() );
136 assertEquals( 2, config0.getChildCount() );
137 Xpp3Dom config1 = (Xpp3Dom) jdks.getToolchains().get( 1 ).getConfiguration();
138 assertEquals( 2, config1.getChildCount() );
139 assertEquals( "lib/classes.jar", config1.getChild( "toolsJar" ).getValue() );
140 assertEquals( 2, jdksExtend.getToolchains().size() );
141 }
142 finally
143 {
144 IOUtil.close( jdksIS );
145 IOUtil.close( jdksExtendIS );
146 }
147
148 try
149 {
150 jdksIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks.xml" );
151 jdksExtendIS = ToolchainModel.class.getResourceAsStream( "toolchains-jdks-extend.xml" );
152
153 PersistedToolchains jdks = reader.read( jdksIS );
154 PersistedToolchains jdksExtend = reader.read( jdksExtendIS );
155 assertEquals( 2, jdks.getToolchains().size() );
156
157
158 merger.merge( jdksExtend, jdks, TrackableBase.USER_LEVEL );
159 assertEquals( 2, jdksExtend.getToolchains().size() );
160 Xpp3Dom config0 = (Xpp3Dom) jdksExtend.getToolchains().get( 0 ).getConfiguration();
161 assertEquals( "lib/tools.jar", config0.getChild( "toolsJar" ).getValue() );
162 assertEquals( 2, config0.getChildCount() );
163 Xpp3Dom config1 = (Xpp3Dom) jdksExtend.getToolchains().get( 1 ).getConfiguration();
164 assertEquals( 2, config1.getChildCount() );
165 assertEquals( "lib/classes.jar", config1.getChild( "toolsJar" ).getValue() );
166 assertEquals( 2, jdks.getToolchains().size() );
167 }
168 finally
169 {
170 IOUtil.close( jdksIS );
171 IOUtil.close( jdksExtendIS );
172 }
173
174 }
175
176 }