1 package org.apache.maven.plugin.changes;
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.plugin.logging.Log;
23 import org.apache.maven.plugins.changes.model.Action;
24 import org.apache.maven.plugins.changes.model.Release;
25 import org.codehaus.plexus.PlexusTestCase;
26 import org.codehaus.plexus.logging.Logger;
27 import org.codehaus.plexus.logging.console.ConsoleLogger;
28
29 import java.io.File;
30 import java.util.List;
31
32
33
34
35
36
37 public class ChangesXMLTest
38 extends PlexusTestCase
39 {
40
41 private static class MockLog
42 implements Log
43 {
44 Logger consoleLogger;
45
46 private MockLog()
47 {
48 consoleLogger = new ConsoleLogger( 1, "test" );
49 }
50
51 public void debug( CharSequence content )
52 {
53 consoleLogger.debug( content.toString() );
54 }
55
56 public void debug( Throwable error )
57 {
58 consoleLogger.debug( error.getMessage() );
59 }
60
61 public void debug( CharSequence content, Throwable error )
62 {
63 consoleLogger.debug( error.getMessage(), error );
64 }
65
66 public void error( CharSequence content )
67 {
68 consoleLogger.error( content.toString() );
69 }
70
71 public void error( Throwable error )
72 {
73 consoleLogger.error( error.getMessage() );
74 }
75
76 public void error( CharSequence content, Throwable error )
77 {
78 consoleLogger.error( error.getMessage(), error );
79 }
80
81 public void info( CharSequence content )
82 {
83 consoleLogger.info( content.toString() );
84 }
85
86 public void info( Throwable error )
87 {
88 consoleLogger.info( error.getMessage() );
89 }
90
91 public void info( CharSequence content, Throwable error )
92 {
93 consoleLogger.info( error.getMessage(), error );
94 }
95
96 public boolean isDebugEnabled()
97 {
98 return consoleLogger.isDebugEnabled();
99 }
100
101 public boolean isErrorEnabled()
102 {
103 return consoleLogger.isErrorEnabled();
104 }
105
106 public boolean isInfoEnabled()
107 {
108 return consoleLogger.isInfoEnabled();
109 }
110
111 public boolean isWarnEnabled()
112 {
113 return consoleLogger.isWarnEnabled();
114 }
115
116 public void warn( CharSequence content )
117 {
118 consoleLogger.warn( content.toString() );
119 }
120
121 public void warn( Throwable error )
122 {
123 consoleLogger.warn( error.getMessage() );
124 }
125
126 public void warn( CharSequence content, Throwable error )
127 {
128 consoleLogger.warn( content.toString(), error );
129 }
130
131 }
132
133 public void testParseChangesFile()
134 throws Exception
135 {
136 File changesFile = new File( getBasedir() + "/src/test/unit/changes.xml" );
137 ChangesXML changesXML = new ChangesXML( changesFile, new MockLog() );
138 assertNotNull( changesXML.getChangesDocument() );
139 assertEquals( "Changes report Project", changesXML.getTitle() );
140
141 List releases = changesXML.getReleaseList();
142 assertEquals( 2, releases.size() );
143 for ( Object release1 : releases )
144 {
145 Release release = (Release) release1;
146 if ( "1.0".equals( release.getVersion() ) )
147 {
148 Action action = release.getActions().get( 0 );
149 assertEquals( 2, action.getFixedIssues().size() );
150 assertEquals( "JIRA-XXX", action.getFixedIssues().get( 0 ).getIssue() );
151 assertEquals( "JIRA-YYY", action.getFixedIssues().get( 1 ).getIssue() );
152 assertEquals( 2, action.getDueTos().size() );
153 }
154 }
155 }
156
157 public void testParseInvalidChangesFile()
158 {
159 File changesFile = new File( getBasedir() + "/src/test/unit/invalid-changes.xml" );
160
161 try
162 {
163 ChangesXML changesXML = new ChangesXML( changesFile, new MockLog() );
164 fail( "Should have thrown a ChangesXMLRuntimeException due to the invalid changes.xml file" );
165 }
166 catch ( ChangesXMLRuntimeException e )
167 {
168 assertEquals( "An error occurred when parsing the changes.xml file", e.getMessage() );
169 }
170 catch ( Throwable e )
171 {
172 fail( "Wrong type of Throwable object was thrown, expected ChangesXMLRuntimeException" );
173 }
174 }
175
176 }