1   package org.apache.maven.release;
2   
3   /* ====================================================================
4    *   Copyright 2001-2004 The Apache Software Foundation.
5    *
6    *   Licensed under the Apache License, Version 2.0 (the "License");
7    *   you may not use this file except in compliance with the License.
8    *   You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing, software
13   *   distributed under the License is distributed on an "AS IS" BASIS,
14   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *   See the License for the specific language governing permissions and
16   *   limitations under the License.
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 }