1   package org.apache.maven.plugin.changelog;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import junit.framework.TestCase;
23  import org.apache.maven.scm.command.changelog.ChangeLogSet;
24  import org.apache.maven.scm.ChangeSet;
25  import org.apache.maven.scm.ChangeFile;
26  
27  import java.io.File;
28  import java.io.FileInputStream;
29  import java.io.InputStream;
30  import java.util.List;
31  import java.util.Calendar;
32  
33  /**
34   * @author Edwin Punzalan
35   * @version $Id: ChangeLogTest.java 803814 2009-08-13 09:24:45Z vsiveton $
36   */
37  public class ChangeLogTest
38      extends TestCase
39  {
40      public void testReadFile()
41          throws Exception
42      {
43          List changedLogs = readChangeLogXml( "min-changelog.xml" );
44  
45          assertNotNull( "Test changedSets were parsed", changedLogs );
46  
47          assertEquals( "Test number of changelog entries", 2, changedLogs.size() );
48  
49          ChangeLogSet changelogSets = (ChangeLogSet) changedLogs.get( 0 );
50  
51          assertEquals( "Test number of revisions on changelog 1", 2, changelogSets.getChangeSets().size() );
52  
53          ChangeSet changeSet = (ChangeSet) changelogSets.getChangeSets().get( 0 );
54  
55  
56          Calendar cal = Calendar.getInstance(); // new cal with default TZ
57  
58          cal.set( 1977, 7, 6, 5, 30, 0); // expected date from min-changelog.xml
59  
60          cal.set( Calendar.MILLISECOND, 0);
61  
62  
63          assertEquals( "Test changelog 1 set 1 date/time", cal.getTime().getTime(), changeSet.getDate().getTime() );
64  
65          assertEquals( "Test changelog 1 set 1 author", "Edwin Punzalan", changeSet.getAuthor() );
66  
67          assertEquals( "Test changelog 1 set 1 msg", "First commit msg", changeSet.getComment() );
68  
69          assertEquals( "Test changelog 1 set 1 files", 1, changeSet.getFiles().size() );
70  
71          ChangeFile changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
72  
73          assertEquals( "Test changelog 1 set 1 file 1 filename", "/path/to/file.extension", changeFile.getName() );
74  
75          assertEquals( "Test changelog 1 set 1 file 1 revision", "1", changeFile.getRevision() );
76  
77  
78          changeSet = (ChangeSet) changelogSets.getChangeSets().get( 1 );
79  
80          cal.set( 2005, 1, 24, 21, 30, 0 );
81  
82          assertEquals( "Test changelog 1 set 2 date/time", cal.getTime().getTime(), changeSet.getDate().getTime() );
83  
84          assertEquals( "Test changelog 1 set 2 author", "Edwin Punzalan", changeSet.getAuthor() );
85  
86          assertEquals( "Test changelog 1 set 2 msg", "Second commit msg", changeSet.getComment() );
87  
88          assertEquals( "Test changelog 1 set 2 files", 2, changeSet.getFiles().size() );
89  
90          changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
91  
92          assertEquals( "Test changelog 1 set 2 file 1 filename", "/path/to/file.extension", changeFile.getName() );
93  
94          assertEquals( "Test changelog 1 set 2 file 1 revision", "2", changeFile.getRevision() );
95  
96          changeFile = (ChangeFile) changeSet.getFiles().get( 1 );
97  
98          assertEquals( "Test changelog 1 set 2 file 2 filename", "/path/to/file2.extension", changeFile.getName() );
99  
100         assertEquals( "Test changelog 1 set 2 file 2 revision", "2", changeFile.getRevision() );
101 
102 
103 
104         changelogSets = (ChangeLogSet) changedLogs.get( 1 );
105 
106         assertEquals( "Test number of revisions on changelog 2", 2, changelogSets.getChangeSets().size() );
107 
108         changeSet = (ChangeSet) changelogSets.getChangeSets().get( 0 );
109 
110         cal.set( 2005, 1, 25, 22, 45, 0 );
111 
112         assertEquals( "Test changelog 2 set 1 date/time", cal.getTime().getTime(), changeSet.getDate().getTime() );
113 
114         assertEquals( "Test changelog 2 set 1 author", "Keogh Edrich Punzalan", changeSet.getAuthor() );
115 
116         assertEquals( "Test changelog 2 set 1 msg", "Third commit msg", changeSet.getComment() );
117 
118         assertEquals( "Test changelog 2 set 1 files", 1, changeSet.getFiles().size() );
119 
120         changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
121 
122         assertEquals( "Test changelog 2 set 1 file 1 filename", "/path/to/file.extension", changeFile.getName() );
123 
124         assertEquals( "Test changelog 2 set 1 file 1 revision", "3", changeFile.getRevision() );
125 
126 
127         changeSet = (ChangeSet) changelogSets.getChangeSets().get( 1 );
128 
129         cal.set( 2100, 1, 25, 5, 30, 0 );
130 
131         assertEquals( "Test changelog 2 set 2 date/time", cal.getTime().getTime(), changeSet.getDate().getTime() );
132 
133         assertEquals( "Test changelog 2 set 2 author", "Keogh Edrich Punzalan", changeSet.getAuthor() );
134 
135         assertEquals( "Test changelog 2 set 2 msg", "Last commit msg", changeSet.getComment() );
136 
137         assertEquals( "Test changelog 2 set 2 files", 2, changeSet.getFiles().size() );
138 
139         changeFile = (ChangeFile) changeSet.getFiles().get( 0 );
140 
141         assertEquals( "Test changelog 2 set 2 file 1 filename", "/path/to/file.extension", changeFile.getName() );
142 
143         assertEquals( "Test changelog 2 set 2 file 1 revision", "4", changeFile.getRevision() );
144 
145         changeFile = (ChangeFile) changeSet.getFiles().get( 1 );
146 
147         assertEquals( "Test changelog 2 set 2 file 2 filename", "/path/to/file2.extension", changeFile.getName() );
148 
149         assertEquals( "Test changelog 2 set 2 file 2 revision", "4", changeFile.getRevision() );
150     }
151 
152     private List readChangeLogXml( String filename )
153         throws Exception
154     {
155         File inputFile = new File( getBasedir(), "src/test/changelog-xml/" + filename );
156         InputStream in = new FileInputStream( inputFile );
157 
158         return ChangeLog.loadChangedSets( in );
159     }
160 
161     private String getBasedir()
162     {
163         return System.getProperty( "basedir" );
164     }
165 }