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