1 package org.apache.maven.plugins.junitreport;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import junit.framework.TestCase;
25
26 /**
27 * @author <a href="mailto:cleclerc@pobox.com">Cyrille Le Clerc </a>
28 * @version $Id: ExceptionToolTest.java 393632 2006-04-12 22:28:03Z ltheussl $
29 */
30 public class ExceptionToolTest extends TestCase
31 {
32 private String[] m_nestedStackTraces =
33 new String[]
34 {
35 "java.lang.Exception: The nested Exception\r\n"
36 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:16)\r\n"
37 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
38 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
39 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n"
40 + " at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:195)\r\n"
41 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
42 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
43 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
44 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
45 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
46 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
47 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
48 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
49 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
50 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
51 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
52 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
53 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
54 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
55 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
56 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
57 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
58 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
59 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
60 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
61 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
62 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
63 + " at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)\r\n"
64 + " at com.werken.werkz.Goal.attain(Goal.java:573)\r\n"
65 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
66 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
67 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
68 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
69 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
70 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
71 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
72 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
73 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
74 + " at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)\r\n"
75 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
76 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
77 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
78 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
79 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
80 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
81 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
82 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
83 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
84 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
85 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
86 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
87 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
88 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
89 + " at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:671)\r\n"
90 + " at org.apache.maven.MavenSession.attainGoals(MavenSession.java:263)\r\n"
91 + " at org.apache.maven.cli.App.doMain(App.java:488)\r\n"
92 + " at org.apache.maven.cli.App.main(App.java:1239)\r\n"
93 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
94 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
95 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n"
96 + " at com.werken.forehead.Forehead.run(Forehead.java:551)\r\n"
97 + " at com.werken.forehead.Forehead.main(Forehead.java:581)\r\n",
98 "Caused by: java.lang.Exception: The cause Exception\r\n"
99 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:15)\r\n"
100 + " ... 76 more\r\n"
101 };
102 private String m_nestedStackTrace =
103 m_nestedStackTraces[0] + m_nestedStackTraces[1];
104 private String[] m_truncatedNestedStackTraces =
105 new String[]
106 {
107 "java.lang.Exception: The nested Exception\r\n"
108 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:16)\r\n"
109 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
110 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
111 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n",
112 "Caused by: java.lang.Exception: The cause Exception\r\n"
113 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:15)\r\n"
114 + " ... 76 more\r\n"
115 };
116 private String m_truncatedNestedStackTrace =
117 m_truncatedNestedStackTraces[0] + " ... more\r\n"
118 + m_truncatedNestedStackTraces[1] + "\r\n";
119 private String m_stackTrace =
120 "java.lang.Exception: The Exception\r\n"
121 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:16)\r\n"
122 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
123 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
124 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n"
125 + " at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:195)\r\n"
126 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
127 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
128 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
129 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
130 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
131 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
132 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
133 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
134 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
135 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
136 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
137 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
138 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
139 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
140 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
141 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
142 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
143 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
144 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
145 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
146 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
147 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
148 + " at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)\r\n"
149 + " at com.werken.werkz.Goal.attain(Goal.java:573)\r\n"
150 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
151 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
152 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
153 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
154 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
155 + " at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)\r\n"
156 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
157 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
158 + " at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)\r\n"
159 + " at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:145)\r\n"
160 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
161 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
162 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
163 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
164 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
165 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
166 + " at com.werken.werkz.WerkzProject.attainGoal(WerkzProject.java:193)\r\n"
167 + " at org.apache.maven.jelly.tags.werkz.MavenAttainGoalTag.doTag(MavenAttainGoalTag.java:127)\r\n"
168 + " at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)\r\n"
169 + " at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)\r\n"
170 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:79)\r\n"
171 + " at org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:110)\r\n"
172 + " at com.werken.werkz.Goal.fire(Goal.java:639)\r\n"
173 + " at com.werken.werkz.Goal.attain(Goal.java:575)\r\n"
174 + " at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:671)\r\n"
175 + " at org.apache.maven.MavenSession.attainGoals(MavenSession.java:263)\r\n"
176 + " at org.apache.maven.cli.App.doMain(App.java:488)\r\n"
177 + " at org.apache.maven.cli.App.main(App.java:1239)\r\n"
178 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
179 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
180 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n"
181 + " at com.werken.forehead.Forehead.run(Forehead.java:551)\r\n"
182 + " at com.werken.forehead.Forehead.main(Forehead.java:581)\r\n";
183 private String m_truncatedStackTrace =
184 "java.lang.Exception: The Exception\r\n"
185 + " at com.mycompany.test.MyTest.testNestedException(MyTest.java:16)\r\n"
186 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n"
187 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n"
188 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n"
189 + " ... more";
190
191 public static void main( String[] args )
192 {
193 junit.textui.TestRunner.run( ExceptionToolTest.class );
194 }
195
196 public void testSplitNestedStackTraces()
197 {
198 ExceptionTool exceptionTool = new ExceptionTool();
199 String[] stackTraces =
200 exceptionTool.splitNestedStackTraces( m_nestedStackTrace );
201
202 for ( int i = 0; i < stackTraces.length; i++ )
203 {
204 String actual = stackTraces[i];
205 String expected = m_nestedStackTraces[i];
206
207 assertEquals( "nestedStack " + i, expected, actual );
208 }
209 }
210
211 public void testTruncateStackTrace()
212 {
213 String searchedString =
214 "at org.apache.commons.jelly.tags.ant.AntTag.doTag";
215 ExceptionTool exceptionTool = new ExceptionTool();
216 String expected = m_truncatedStackTrace;
217 String actual =
218 exceptionTool.truncateStackTrace( m_stackTrace, searchedString );
219
220 assertEquals( expected, actual );
221 }
222
223 public void testTruncateNestedStackTrace()
224 {
225 String searchedString =
226 "at org.apache.commons.jelly.tags.ant.AntTag.doTag";
227 ExceptionTool exceptionTool = new ExceptionTool();
228 String expected = m_truncatedNestedStackTrace;
229 String actual =
230 exceptionTool.truncateNestedStackTrace( m_nestedStackTrace,
231 searchedString );
232
233 assertEquals( expected, actual );
234 }
235
236 public void testSplit()
237 {
238 String str =
239 "value 1 separator value 2 separator value 3 separator value 4 separator value 5";
240 String[] expected =
241 new String[]
242 {
243 "value 1 ", " value 2 ", " value 3 ", " value 4 ", " value 5"
244 };
245 ExceptionTool exceptionTool = new ExceptionTool();
246 String[] actual = exceptionTool.split( str, "separator" );
247
248 assertEquals( "result size", expected.length, actual.length );
249
250 for ( int i = 0; i < actual.length; i++ )
251 {
252 assertEquals( "value " + i, expected[i], actual[i] );
253 }
254 }
255
256 public void testSplitWithNoTrailingValue()
257 {
258 String str =
259 "value 1 separator value 2 separator value 3 separator value 4 separator value 5separator";
260 String[] expected =
261 new String[]
262 {
263 "value 1 ", " value 2 ", " value 3 ", " value 4 ", " value 5"
264 };
265 ExceptionTool exceptionTool = new ExceptionTool();
266 String[] actual = exceptionTool.split( str, "separator" );
267
268 assertEquals( "result size", expected.length, actual.length );
269
270 for ( int i = 0; i < actual.length; i++ )
271 {
272 assertEquals( "value " + i, expected[i], actual[i] );
273 }
274 }
275
276 public void testSplitWithNoSeparator()
277 {
278 String str = "value 1 ";
279 String[] expected = new String[] { "value 1 " };
280 ExceptionTool exceptionTool = new ExceptionTool();
281 String[] actual = exceptionTool.split( str, "separator" );
282
283 assertEquals( "result size", expected.length, actual.length );
284
285 for ( int i = 0; i < actual.length; i++ )
286 {
287 assertEquals( "value " + i, expected[i], actual[i] );
288 }
289 }
290 }