1 package org.apache.maven.release;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import junit.framework.TestCase;
21
22 import java.io.File;
23
24 import java.util.List;
25
26 import org.dom4j.Node;
27
28 /**
29 */
30 public class VersionTransformerTest
31 extends TestCase
32 {
33 /**
34 * Constructor.
35 *
36 * @param name Name of the test.
37 */
38 public VersionTransformerTest( String name )
39 {
40 super( name );
41 }
42
43 public void testNoVersions()
44 throws Exception
45 {
46 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
47 vt.setProject( getTestFile( "test-pom-no-versions.xml" ) );
48
49 assertTrue( "check transform required", vt.transformRequired() );
50
51 vt.transformNodes();
52 vt.write();
53
54 List nodes = vt.getDocument().selectNodes( "/project" );
55
56 assertEquals( 1, nodes.size() );
57
58 Node project = (Node) nodes.get( 0 );
59
60 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
61
62 List versionNodes = project.selectNodes( "versions/version" );
63
64 assertEquals( "Check # versions is 1", 1, versionNodes.size() );
65
66 Node version = (Node) versionNodes.get( 0 );
67
68 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
69 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
70 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
71 }
72
73 public void testOneVersion()
74 throws Exception
75 {
76 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
77 vt.setProject( getTestFile( "test-pom-versions.xml" ) );
78
79 assertTrue( "check transform required", vt.transformRequired() );
80
81 vt.transformNodes();
82 vt.write();
83
84 List nodes = vt.getDocument().selectNodes( "/project" );
85
86 assertEquals( 1, nodes.size() );
87
88 Node project = (Node) nodes.get( 0 );
89
90 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
91
92 List versionNodes = project.selectNodes( "versions/version" );
93
94 assertEquals( "Check # versions is 2", 2, versionNodes.size() );
95
96 Node version = (Node) versionNodes.get( 0 );
97
98 assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() );
99 assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() );
100 assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() );
101
102 version = (Node) versionNodes.get( 1 );
103
104 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
105 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
106 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
107 }
108
109 public void testMultipleVersions()
110 throws Exception
111 {
112 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
113 vt.setProject( getTestFile( "test-pom-versions-multiple.xml" ) );
114
115 assertTrue( "check transform required", vt.transformRequired() );
116
117 vt.transformNodes();
118 vt.write();
119
120 List nodes = vt.getDocument().selectNodes( "/project" );
121
122 assertEquals( 1, nodes.size() );
123
124 Node project = (Node) nodes.get( 0 );
125
126 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
127
128 List versionNodes = project.selectNodes( "versions/version" );
129
130 assertEquals( "Check # versions is 3", 3, versionNodes.size() );
131
132 Node version = (Node) versionNodes.get( 0 );
133
134 assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() );
135 assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() );
136 assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() );
137
138 version = (Node) versionNodes.get( 1 );
139
140 assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() );
141 assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() );
142 assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() );
143
144 version = (Node) versionNodes.get( 2 );
145
146 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
147 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
148 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
149 }
150
151 public void testMultipleVersionsWrongOrder()
152 throws Exception
153 {
154 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
155 vt.setProject( getTestFile( "test-pom-versions-wrong-order.xml" ) );
156
157 assertTrue( "check transform required", vt.transformRequired() );
158
159 vt.transformNodes();
160 vt.write();
161
162 List nodes = vt.getDocument().selectNodes( "/project" );
163
164 assertEquals( 1, nodes.size() );
165
166 Node project = (Node) nodes.get( 0 );
167
168 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
169
170 List versionNodes = project.selectNodes( "versions/version" );
171
172 assertEquals( "Check # versions is 3", 3, versionNodes.size() );
173
174 Node version = (Node) versionNodes.get( 0 );
175
176 assertEquals( "Check version id is 1.1", "1.1", version.selectSingleNode( "id" ).getText() );
177 assertEquals( "Check version name is 1.1", "1.1", version.selectSingleNode( "name" ).getText() );
178 assertEquals( "Check version tag is TEST_1_1", "TEST_1_1", version.selectSingleNode( "tag" ).getText() );
179
180 version = (Node) versionNodes.get( 1 );
181
182 assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() );
183 assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() );
184 assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() );
185
186 version = (Node) versionNodes.get( 2 );
187
188 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
189 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
190 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
191 }
192
193 public void testVersionsOverwrite()
194 throws Exception
195 {
196 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
197 vt.setProject( getTestFile( "test-pom-versions-overwrite.xml" ) );
198
199 assertTrue( "check transform required", vt.transformRequired() );
200
201 vt.transformNodes();
202 vt.write();
203
204 List nodes = vt.getDocument().selectNodes( "/project" );
205
206 assertEquals( 1, nodes.size() );
207
208 Node project = (Node) nodes.get( 0 );
209
210 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
211
212 List versionNodes = project.selectNodes( "versions/version" );
213
214 assertEquals( "Check # versions is 2", 2, versionNodes.size() );
215
216 Node version = (Node) versionNodes.get( 0 );
217
218 assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() );
219 assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() );
220 assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() );
221
222 version = (Node) versionNodes.get( 1 );
223
224 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
225 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
226 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
227 }
228
229 public void testVersionsCorrect()
230 throws Exception
231 {
232 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
233 vt.setProject( getTestFile( "test-pom-versions-correct.xml" ) );
234
235 assertFalse( "check transform not required", vt.transformRequired() );
236
237 vt.transformNodes();
238 vt.write();
239
240 List nodes = vt.getDocument().selectNodes( "/project" );
241
242 assertEquals( 1, nodes.size() );
243
244 Node project = (Node) nodes.get( 0 );
245
246 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
247
248 List versionNodes = project.selectNodes( "versions/version" );
249
250 assertEquals( "Check # versions is 2", 2, versionNodes.size() );
251
252 Node version = (Node) versionNodes.get( 0 );
253
254 assertEquals( "Check version id is 1.0", "1.0", version.selectSingleNode( "id" ).getText() );
255 assertEquals( "Check version name is 1.0", "1.0", version.selectSingleNode( "name" ).getText() );
256 assertEquals( "Check version tag is TEST_1_0", "TEST_1_0", version.selectSingleNode( "tag" ).getText() );
257
258 version = (Node) versionNodes.get( 1 );
259
260 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
261 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
262 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
263 }
264
265 public void testVersionsTagMatchOnly()
266 throws Exception
267 {
268 VersionTransformer vt = new VersionTransformer( "1.2", "TEST_1_2" );
269 vt.setProject( getTestFile( "test-pom-versions-tag-match-only.xml" ) );
270
271 assertTrue( "check transform required", vt.transformRequired() );
272
273 vt.transformNodes();
274 vt.write();
275
276 List nodes = vt.getDocument().selectNodes( "/project" );
277
278 assertEquals( 1, nodes.size() );
279
280 Node project = (Node) nodes.get( 0 );
281
282 assertEquals( "Check currentVersion is 1.2", "1.2", project.selectSingleNode( "currentVersion" ).getText() );
283
284 List versionNodes = project.selectNodes( "versions/version" );
285
286 assertEquals( "Check # versions is 1", 1, versionNodes.size() );
287
288 Node version = (Node) versionNodes.get( 0 );
289
290 assertEquals( "Check version id is 1.2", "1.2", version.selectSingleNode( "id" ).getText() );
291 assertEquals( "Check version name is 1.2", "1.2", version.selectSingleNode( "name" ).getText() );
292 assertEquals( "Check version tag is TEST_1_2", "TEST_1_2", version.selectSingleNode( "tag" ).getText() );
293 }
294
295 private File getTestFile( String filename )
296 {
297 return new File( getClass().getResource( "/" + filename ).getFile() );
298 }
299
300 }