1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.surefire.api.report;
20
21 import java.io.PrintWriter;
22
23 import junit.framework.TestCase;
24
25
26
27
28 public class LegacyPojoStackTraceWriterTest extends TestCase {
29
30 @SuppressWarnings("checkstyle:linelength")
31 public void testWriteTrimmedTraceToString() {
32 String stackTrace = "junit.framework.AssertionFailedError: blah\n"
33 + " at junit.framework.Assert.fail(Assert.java:47)\n"
34 + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n"
35 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
36 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
37 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
38 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
39 + " at junit.framework.TestCase.runTest(TestCase.java:154)\n"
40 + " at junit.framework.TestCase.runBare(TestCase.java:127)\n"
41 + " at junit.framework.TestResult$1.protect(TestResult.java:106)\n"
42 + " at junit.framework.TestResult.runProtected(TestResult.java:124)\n"
43 + " at junit.framework.TestResult.run(TestResult.java:109)\n"
44 + " at junit.framework.TestCase.run(TestCase.java:118)\n"
45 + " at junit.framework.TestSuite.runTest(TestSuite.java:208)\n"
46 + " at junit.framework.TestSuite.run(TestSuite.java:203)\n"
47 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
48 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
49 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
50 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
51 + " at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)\n"
52 + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)\n"
53 + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)\n"
54 + " at org.apache.maven.surefire.Surefire.run(Surefire.java:132)\n"
55 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
56 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
57 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
58 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
59 + " at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:318)\n"
60 + " at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:956)\n";
61 MockThrowable t = new MockThrowable(stackTrace);
62 LegacyPojoStackTraceWriter w = new LegacyPojoStackTraceWriter("TestSurefire3", "testQuote", t);
63 String out = w.writeTrimmedTraceToString();
64 String expected =
65 "junit.framework.AssertionFailedError: blah\n" + " at junit.framework.Assert.fail(Assert.java:47)\n"
66 + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n";
67 assertEquals(expected, out);
68 }
69
70 @SuppressWarnings("checkstyle:linelength")
71 public void testCausedBy() {
72 String stackTrace = "java.lang.RuntimeException: blah\n"
73 + " at TestSurefire3.testBlah(TestSurefire3.java:45)\n"
74 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
75 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
76 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
77 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
78 + " at junit.framework.TestCase.runTest(TestCase.java:154)\n"
79 + " at junit.framework.TestCase.runBare(TestCase.java:127)\n"
80 + " at junit.framework.TestResult$1.protect(TestResult.java:106)\n"
81 + " at junit.framework.TestResult.runProtected(TestResult.java:124)\n"
82 + " at junit.framework.TestResult.run(TestResult.java:109)\n"
83 + " at junit.framework.TestCase.run(TestCase.java:118)\n"
84 + " at junit.framework.TestSuite.runTest(TestSuite.java:208)\n"
85 + " at junit.framework.TestSuite.run(TestSuite.java:203)\n"
86 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
87 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
88 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
89 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
90 + " at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)\n"
91 + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)\n"
92 + " at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)\n"
93 + " at org.apache.maven.surefire.Surefire.run(Surefire.java:132)\n"
94 + " at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n"
95 + " at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n"
96 + " at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n"
97 + " at java.lang.reflect.Method.invoke(Method.java:585)\n"
98 + " at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:318)\n"
99 + " at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:956)\n"
100 + "Caused by: junit.framework.AssertionFailedError: \"\n"
101 + " at junit.framework.Assert.fail(Assert.java:47)\n"
102 + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n"
103 + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n"
104 + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n"
105 + " ... 26 more\n";
106 MockThrowable t = new MockThrowable(stackTrace);
107 LegacyPojoStackTraceWriter w = new LegacyPojoStackTraceWriter("TestSurefire3", "testBlah", t);
108 String out = w.writeTrimmedTraceToString();
109 String expected = "java.lang.RuntimeException: blah\n"
110 + " at TestSurefire3.testBlah(TestSurefire3.java:45)\n"
111 + "Caused by: junit.framework.AssertionFailedError: \"\n"
112 + " at junit.framework.Assert.fail(Assert.java:47)\n"
113 + " at TestSurefire3.testQuote(TestSurefire3.java:23)\n"
114 + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n"
115 + " at TestSurefire3.testBlah(TestSurefire3.java:43)\n"
116 + " ... 26 more\n";
117 assertEquals(expected, out);
118 }
119
120 static class MockThrowable extends Throwable {
121 private static final long serialVersionUID = 1L;
122
123 private final String stackTrace;
124
125 MockThrowable(String stackTrace) {
126 this.stackTrace = stackTrace;
127 }
128
129 @Override
130 public void printStackTrace(PrintWriter s) {
131 s.write(stackTrace);
132 }
133 }
134
135 public void testMultiLineMessage() {
136 String msg = "assert \"foo\" == \"bar\"\n" + " |\n" + " false";
137 try {
138 throw new RuntimeException(msg);
139 } catch (Throwable t) {
140 LegacyPojoStackTraceWriter writer = new LegacyPojoStackTraceWriter(null, null, t);
141 String stackTrace = writer.writeTraceToString();
142 assertTrue(stackTrace.startsWith("java.lang.RuntimeException: \n" + msg));
143 }
144 }
145 }