1 package org.codehaus.plexus.compiler.javac;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import java.io.BufferedReader;
27 import java.io.IOException;
28 import java.io.StringReader;
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.stream.Stream;
32
33 import org.codehaus.plexus.compiler.CompilerMessage;
34 import org.codehaus.plexus.util.Os;
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.params.ParameterizedTest;
37 import org.junit.jupiter.params.provider.Arguments;
38 import org.junit.jupiter.params.provider.MethodSource;
39
40 import static org.codehaus.plexus.compiler.javac.JavacCompiler.Messages.*;
41 import static org.hamcrest.CoreMatchers.*;
42 import static org.hamcrest.MatcherAssert.assertThat;
43 import static org.hamcrest.Matchers.hasSize;
44 import static org.hamcrest.Matchers.is;
45 import static org.hamcrest.Matchers.notNullValue;
46
47
48
49
50
51 public class ErrorMessageParserTest {
52 private static final String EOL = System.getProperty("line.separator");
53 private static final String UNIDENTIFIED_LOG_LINES =
54 "These log lines should be cut off\n" + "when preceding known error message headers\n";
55
56 @Test
57 public void testDeprecationMessage() throws Exception {
58 String error =
59 "target/compiler-src/testDeprecation/Foo.java:1: warning: Date(java.lang.String) in java.util.Date has been deprecated"
60 + EOL + "import java.util.Date;public class Foo{ private Date date = new Date( \"foo\");}"
61 + EOL + " ^"
62 + EOL;
63
64 CompilerMessage compilerError = JavacCompiler.parseModernError(0, error);
65
66 assertThat(compilerError, notNullValue());
67
68 assertThat(compilerError.isError(), is(false));
69
70 assertThat(compilerError.getMessage(), is("Date(java.lang.String) in java.util.Date has been deprecated"));
71
72 assertThat(compilerError.getStartColumn(), is(63));
73
74 assertThat(compilerError.getEndColumn(), is(66));
75
76 assertThat(compilerError.getStartLine(), is(1));
77
78 assertThat(compilerError.getEndLine(), is(1));
79 }
80
81 @Test
82 public void testWarningMessage() {
83 String error = "target/compiler-src/testWarning/Foo.java:8: warning: finally clause cannot complete normally"
84 + EOL + " finally { return; }"
85 + EOL + " ^"
86 + EOL;
87
88 CompilerMessage compilerError = JavacCompiler.parseModernError(0, error);
89
90 assertThat(compilerError, notNullValue());
91
92 assertThat(compilerError.isError(), is(false));
93
94 assertThat(compilerError.getMessage(), is("finally clause cannot complete normally"));
95
96 assertThat(compilerError.getStartColumn(), is(26));
97
98 assertThat(compilerError.getEndColumn(), is(27));
99
100 assertThat(compilerError.getStartLine(), is(8));
101
102 assertThat(compilerError.getEndLine(), is(8));
103 }
104
105 @Test
106 public void testErrorMessage() {
107 String error = "Foo.java:7: not a statement" + EOL + " i;" + EOL + " ^" + EOL;
108
109 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
110
111 assertThat(compilerError, notNullValue());
112
113 assertThat(compilerError.isError(), is(true));
114
115 assertThat(compilerError.getMessage(), is("not a statement"));
116
117 assertThat(compilerError.getStartColumn(), is(9));
118
119 assertThat(compilerError.getEndColumn(), is(11));
120
121 assertThat(compilerError.getStartLine(), is(7));
122
123 assertThat(compilerError.getEndLine(), is(7));
124 }
125
126 @Test
127 public void testUnknownSymbolError() {
128 String error = "./org/codehaus/foo/UnknownSymbol.java:7: cannot find symbol" + EOL + "symbol : method foo()"
129 + EOL + "location: class org.codehaus.foo.UnknownSymbol"
130 + EOL + " foo();"
131 + EOL + " ^"
132 + EOL;
133
134 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
135
136 assertThat(compilerError, notNullValue());
137
138 assertThat(compilerError.isError(), is(true));
139
140 assertThat(
141 compilerError.getMessage(),
142 is("cannot find symbol" + EOL + "symbol : method foo()" + EOL
143 + "location: class org.codehaus.foo.UnknownSymbol"));
144
145 assertThat(compilerError.getStartColumn(), is(8));
146
147 assertThat(compilerError.getEndColumn(), is(14));
148
149 assertThat(compilerError.getStartLine(), is(7));
150
151 assertThat(compilerError.getEndLine(), is(7));
152 }
153
154 @Test
155 public void testTwoErrors() throws IOException {
156 String errors = "./org/codehaus/foo/ExternalDeps.java:4: package org.apache.commons.lang does not exist" + EOL
157 + "import org.apache.commons.lang.StringUtils;"
158 + EOL + " ^"
159 + EOL + "./org/codehaus/foo/ExternalDeps.java:12: cannot find symbol"
160 + EOL + "symbol : variable StringUtils"
161 + EOL + "location: class org.codehaus.foo.ExternalDeps"
162 + EOL + " System.out.println( StringUtils.upperCase( str) );"
163 + EOL + " ^"
164 + EOL + "2 errors"
165 + EOL;
166
167 List<CompilerMessage> messages =
168 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
169
170 assertThat(messages.size(), is(2));
171 }
172
173 @Test
174 public void testAnotherTwoErrors() throws IOException {
175 String errors = "./org/codehaus/foo/ExternalDeps.java:4: package org.apache.commons.lang does not exist" + EOL
176 + "import org.apache.commons.lang.StringUtils;"
177 + EOL + " ^"
178 + EOL + "./org/codehaus/foo/ExternalDeps.java:12: cannot find symbol"
179 + EOL + "symbol : variable StringUtils"
180 + EOL + "location: class org.codehaus.foo.ExternalDeps"
181 + EOL + " System.out.println( StringUtils.upperCase( str) );"
182 + EOL + " ^"
183 + EOL + "2 errors"
184 + EOL;
185
186 List<CompilerMessage> messages =
187 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
188
189 assertThat(messages.size(), is(2));
190 }
191
192 @Test
193 public void testAssertError() throws IOException {
194 String errors =
195 "./org/codehaus/foo/ReservedWord.java:5: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier"
196 + EOL + "(try -source 1.3 or lower to use 'assert' as an identifier)"
197 + EOL + " String assert;"
198 + EOL + " ^"
199 + EOL + "1 error"
200 + EOL;
201
202 List<CompilerMessage> messages =
203 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
204
205 assertThat(messages.size(), is(1));
206 }
207
208 @Test
209 public void testLocalizedWarningNotTreatedAsError() throws IOException {
210 String errors =
211 "./src/main/java/Main.java:9: \u8b66\u544a:[deprecation] java.io.File \u306e toURL() \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002"
212 + EOL + " new File( path ).toURL()"
213 + EOL + " ^"
214 + EOL + "\u8b66\u544a 1 \u500b"
215 + EOL;
216
217 List<CompilerMessage> messages =
218 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(errors)));
219
220 assertThat(messages.size(), is(1));
221 assertThat(messages.get(0).isError(), is(false));
222 }
223
224 @Test
225 public void testUnixFileNames() {
226 String error = "/my/prj/src/main/java/test/prj/App.java:11: not a statement" + EOL
227 + " System.out.println( \"Hello World!\" );x"
228 + EOL + " ^"
229 + EOL;
230
231 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
232
233 assertThat(
234 String.valueOf(compilerError), is("/my/prj/src/main/java/test/prj/App.java:[11,45] not a statement"));
235 }
236
237 @Test
238 public void testWindowsDriveLettersMCOMPILER140() {
239 String error =
240 "c:\\Documents and Settings\\My Self\\Documents\\prj\\src\\main\\java\\test\\prj\\App.java:11: not a statement"
241 + EOL + " System.out.println( \"Hello World!\" );x"
242 + EOL + " ^"
243 + EOL;
244
245 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
246
247 assertThat(
248 String.valueOf(compilerError),
249 is(
250 "c:\\Documents and Settings\\My Self\\Documents\\prj\\src\\main\\java\\test\\prj\\App.java:[11,45] not a statement"));
251 }
252
253
254
255
256
257
258 @Test
259 public void testCRLF_windows() throws Exception {
260
261 if (!Os.isFamily("windows")) {
262 return;
263 }
264
265 String CRLF = new String(new byte[] {(byte) 0x0D, (byte) 0x0A});
266 String errors = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + CRLF
267 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServerImpl.java]]"
268 + CRLF + "[parsing completed 19ms]"
269 + CRLF
270 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServer.java]]"
271 + CRLF + "[parsing completed 1ms]"
272 + CRLF
273 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServerAware.java]]"
274 + CRLF + "[parsing completed 1ms]"
275 + CRLF
276 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java]]"
277 + CRLF + "[parsing completed 3ms]"
278 + CRLF
279 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpThreadPool.java]]"
280 + CRLF + "[parsing completed 3ms]"
281 + CRLF
282 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpQueueAware.java]]"
283 + CRLF + "[parsing completed 0ms]"
284 + CRLF
285 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpThreadPoolAware.java]]"
286 + CRLF + "[parsing completed 1ms]"
287 + CRLF + "[search path for source files: C:\\commander\\pre\\ec\\ec-http\\src\\main\\java]"
288 + CRLF
289 + "[search path for class files: C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\resources.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\rt.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\sunrsasign.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jsse.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jce.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\charsets.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jfr.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\classes,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\dnsns.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\localedata.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunec.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunjce_provider.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunmscapi.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\zipfs.jar,C:\\commander\\pre\\ec\\ec-http\\target\\classes,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-lock\\1.0.0-SNAPSHOT\\ec-lock-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-timer\\1.0.0-SNAPSHOT\\ec-timer-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-math\\2.2\\commons-math-2.2.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-validation\\1.0.0-SNAPSHOT\\ec-validation-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-xml\\1.0.0-SNAPSHOT\\ec-xml-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\commons-beanutils\\commons-beanutils\\1.8.3-PATCH1\\commons-beanutils-1.8.3-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\commons-collections\\commons-collections\\3.2.1\\commons-collections-3.2.1.jar,C:\\Users\\anders\\.m2\\repository\\dom4j\\dom4j\\1.6.1-PATCH1\\dom4j-1.6.1-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\javax\\validation\\validation-api\\1.0.0.GA\\validation-api-1.0.0.GA.jar,C:\\Users\\anders\\.m2\\repository\\org\\codehaus\\jackson\\jackson-core-asl\\1.9.7\\jackson-core-asl-1.9.7.jar,C:\\Users\\anders\\.m2\\repository\\org\\codehaus\\jackson\\jackson-mapper-asl\\1.9.7\\jackson-mapper-asl-1.9.7.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\hibernate-core\\3.6.7-PATCH14\\hibernate-core-3.6.7-PATCH14.jar,C:\\Users\\anders\\.m2\\repository\\antlr\\antlr\\2.7.6\\antlr-2.7.6.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\hibernate-commons-annotations\\3.2.0.Final\\hibernate-commons-annotations-3.2.0.Final.jar,C:\\Users\\anders\\.m2\\repository\\javax\\transaction\\jta\\1.1\\jta-1.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\javax\\persistence\\hibernate-jpa-2.0-api\\1.0.1.Final\\hibernate-jpa-2.0-api-1.0.1.Final.jar,C:\\Users\\anders\\.m2\\repository\\org\\hyperic\\sigar\\1.6.5.132\\sigar-1.6.5.132.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-context\\3.1.1.RELEASE-PATCH1\\spring-context-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-expression\\3.1.1.RELEASE-PATCH1\\spring-expression-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-core\\3.1.1.RELEASE-PATCH1\\spring-core-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\tanukisoft\\wrapper\\3.5.14\\wrapper-3.5.14.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\ch\\qos\\logback\\logback-classic\\1.0.3-PATCH4\\logback-classic-1.0.3-PATCH4.jar,C:\\Users\\anders\\.m2\\repository\\ch\\qos\\logback\\logback-core\\1.0.3-PATCH4\\logback-core-1.0.3-PATCH4.jar,C:\\Users\\anders\\.m2\\repository\\org\\slf4j\\slf4j-api\\1.6.4\\slf4j-api-1.6.4.jar,C:\\Users\\anders\\.m2\\repository\\org\\slf4j\\jul-to-slf4j\\1.6.4\\jul-to-slf4j-1.6.4.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-queue\\1.0.0-SNAPSHOT\\ec-queue-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-security\\1.0.0-SNAPSHOT\\ec-security-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-acl\\1.0.0-SNAPSHOT\\ec-acl-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-transaction\\1.0.0-SNAPSHOT\\ec-transaction-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\aspectj\\aspectjrt\\1.7.0.M1-PATCH1\\aspectjrt-1.7.0.M1-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-crypto\\1.0.0-SNAPSHOT\\ec-crypto-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\bouncycastle\\bcprov-jdk16\\1.46\\bcprov-jdk16-1.46.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-property\\1.0.0-SNAPSHOT\\ec-property-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-lang3\\3.1\\commons-lang3-3.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-tx\\3.1.1.RELEASE-PATCH1\\spring-tx-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\aopalliance\\com.springsource.org.aopalliance\\1.0.0\\com.springsource.org.aopalliance-1.0.0.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\ldap\\spring-ldap-core\\1.3.1.RELEASE\\spring-ldap-core-1.3.1.RELEASE.jar,C:\\Users\\anders\\.m2\\repository\\commons-lang\\commons-lang\\2.5\\commons-lang-2.5.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\security\\spring-security-core\\2.0.6.PATCH1\\spring-security-core-2.0.6.PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\cglib\\cglib-nodep\\2.2.2\\cglib-nodep-2.2.2.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-digester3\\3.2-PATCH5\\commons-digester3-3.2-PATCH5.jar,C:\\Users\\anders\\.m2\\repository\\cglib\\cglib\\2.2.2\\cglib-2.2.2.jar,C:\\Users\\anders\\.m2\\repository\\asm\\asm\\3.3.1\\asm-3.3.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-aop\\3.1.1.RELEASE-PATCH1\\spring-aop-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar,C:\\Users\\anders\\.m2\\repository\\com\\google\\code\\findbugs\\jsr305\\2.0.0\\jsr305-2.0.0.jar,C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar,C:\\Users\\anders\\.m2\\repository\\commons-io\\commons-io\\2.3\\commons-io-2.3.jar,C:\\Users\\anders\\.m2\\repository\\net\\jcip\\jcip-annotations\\1.0\\jcip-annotations-1.0.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar,C:\\Users\\anders\\.m2\\repository\\commons-codec\\commons-codec\\1.6\\commons-codec-1.6.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\orbit\\javax.servlet\\3.0.0.v201112011016\\javax.servlet-3.0.0.v201112011016.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-continuation\\8.1.4.v20120524\\jetty-continuation-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-http\\8.1.4.v20120524\\jetty-http-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-io\\8.1.4.v20120524\\jetty-io-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\mortbay\\jetty\\servlet-api\\3.0.20100224\\servlet-api-3.0.20100224.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-asm\\3.1.1.RELEASE-PATCH1\\spring-asm-3.1.1.RELEASE-PATCH1.jar,.]"
290 + CRLF
291 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/BindException.class)]]"
292 + CRLF
293 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/ArrayList.class)]]"
294 + CRLF
295 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Collection.class)]]"
296 + CRLF
297 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Collections.class)]]"
298 + CRLF
299 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/HashSet.class)]]"
300 + CRLF
301 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/TimeUnit.class)]]"
302 + CRLF
303 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Handler.class)]]"
304 + CRLF
305 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Server.class)]]"
306 + CRLF
307 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/nio/SelectChannelConnector.class)]]"
308 + CRLF
309 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/ssl/SslSelectChannelConnector.class)]]"
310 + CRLF
311 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/ssl/SslContextFactory.class)]]"
312 + CRLF
313 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/NonNls.class)]]"
314 + CRLF
315 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/NotNull.class)]]"
316 + CRLF
317 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/TestOnly.class)]]"
318 + CRLF
319 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/BeanNameAware.class)]]"
320 + CRLF
321 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/annotation/Autowired.class)]]"
322 + CRLF
323 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/collect/Iterables.class)]]"
324 + CRLF
325 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar(com/electriccloud/log/Log.class)]]"
326 + CRLF
327 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar(com/electriccloud/log/LogFactory.class)]]"
328 + CRLF
329 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceManager.class)]]"
330 + CRLF
331 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceState.class)]]"
332 + CRLF
333 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ExceptionUtil.class)]]"
334 + CRLF
335 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/SystemUtil.class)]]"
336 + CRLF
337 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToString.class)]]"
338 + CRLF
339 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringSupport.class)]]"
340 + CRLF
341 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]"
342 + CRLF
343 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]"
344 + CRLF
345 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]"
346 + CRLF
347 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]"
348 + CRLF
349 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/CharSequence.class)]]"
350 + CRLF
351 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]"
352 + CRLF
353 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringAware.class)]]"
354 + CRLF
355 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/Aware.class)]]"
356 + CRLF
357 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/Service.class)]]"
358 + CRLF
359 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Integer.class)]]"
360 + CRLF
361 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/RejectedExecutionException.class)]]"
362 + CRLF
363 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/AbstractLifeCycle.class)]]"
364 + CRLF
365 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/thread/ThreadPool.class)]]"
366 + CRLF
367 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-queue\\1.0.0-SNAPSHOT\\ec-queue-1.0.0-SNAPSHOT.jar(com/electriccloud/queue/ExecuteQueue.class)]]"
368 + CRLF
369 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceManagerAware.class)]]"
370 + CRLF
371 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringImpl.class)]]"
372 + CRLF
373 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/LifeCycle.class)]]"
374 + CRLF
375 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/InterruptedException.class)]]"
376 + CRLF
377 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Runnable.class)]]"
378 + CRLF
379 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Exception.class)]]"
380 + CRLF
381 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/IOException.class)]]"
382 + CRLF
383 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyManagementException.class)]]"
384 + CRLF
385 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/NoSuchAlgorithmException.class)]]"
386 + CRLF
387 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/SecureRandom.class)]]"
388 + CRLF
389 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/SSLContext.class)]]"
390 + CRLF
391 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/TrustManager.class)]]"
392 + CRLF
393 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpResponse.class)]]"
394 + CRLF
395 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/HttpClient.class)]]"
396 + CRLF
397 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpGet.class)]]"
398 + CRLF
399 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpPost.class)]]"
400 + CRLF
401 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpUriRequest.class)]]"
402 + CRLF
403 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/Scheme.class)]]"
404 + CRLF
405 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/SSLSocketFactory.class)]]"
406 + CRLF
407 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/entity/StringEntity.class)]]"
408 + CRLF
409 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.class)]]"
410 + CRLF
411 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultHttpClient.class)]]"
412 + CRLF
413 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultHttpRequestRetryHandler.class)]]"
414 + CRLF
415 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.class)]]"
416 + CRLF
417 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:31: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
418 + CRLF + "import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;"
419 + CRLF + " ^"
420 + CRLF
421 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/params/HttpParams.class)]]"
422 + CRLF
423 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/protocol/HttpContext.class)]]"
424 + CRLF
425 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/util/EntityUtils.class)]]"
426 + CRLF
427 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-security\\1.0.0-SNAPSHOT\\ec-security-1.0.0-SNAPSHOT.jar(com/electriccloud/security/DummyX509TrustManager.class)]]"
428 + CRLF
429 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeLayeredSocketFactory.class)]]"
430 + CRLF
431 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeSocketFactory.class)]]"
432 + CRLF
433 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/LayeredSchemeSocketFactory.class)]]"
434 + CRLF
435 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/LayeredSocketFactory.class)]]"
436 + CRLF
437 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SocketFactory.class)]]"
438 + CRLF
439 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/params/CoreConnectionPNames.class)]]"
440 + CRLF
441 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/SuppressWarnings.class)]]"
442 + CRLF
443 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Retention.class)]]"
444 + CRLF
445 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/RetentionPolicy.class)]]"
446 + CRLF
447 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Target.class)]]"
448 + CRLF
449 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/ElementType.class)]]"
450 + CRLF
451 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/annotations/GwtCompatible.class)]]"
452 + CRLF
453 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/annotations/GwtIncompatible.class)]]"
454 + CRLF
455 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/infoset/InfosetType.class)]]"
456 + CRLF
457 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Annotation.class)]]"
458 + CRLF
459 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Override.class)]]"
460 + CRLF + "[checking com.electriccloud.http.HttpServerImpl]"
461 + CRLF
462 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Error.class)]]"
463 + CRLF
464 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Throwable.class)]]"
465 + CRLF
466 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/RuntimeException.class)]]"
467 + CRLF
468 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]"
469 + CRLF
470 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]"
471 + CRLF
472 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Number.class)]]"
473 + CRLF
474 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractList.class)]]"
475 + CRLF
476 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractCollection.class)]]"
477 + CRLF
478 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Iterable.class)]]"
479 + CRLF
480 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Byte.class)]]"
481 + CRLF
482 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Character.class)]]"
483 + CRLF
484 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Short.class)]]"
485 + CRLF
486 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/nio/AbstractNIOConnector.class)]]"
487 + CRLF
488 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/AbstractConnector.class)]]"
489 + CRLF
490 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/AggregateLifeCycle.class)]]"
491 + CRLF
492 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Connector.class)]]"
493 + CRLF
494 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/Destroyable.class)]]"
495 + CRLF
496 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/Dumpable.class)]]"
497 + CRLF
498 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-http\\8.1.4.v20120524\\jetty-http-8.1.4.v20120524.jar(org/eclipse/jetty/http/HttpBuffers.class)]]"
499 + CRLF
500 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/HandlerWrapper.class)]]"
501 + CRLF
502 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/AbstractHandlerContainer.class)]]"
503 + CRLF
504 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/AbstractHandler.class)]]"
505 + CRLF
506 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/SocketException.class)]]"
507 + CRLF
508 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Thread.class)]]"
509 + CRLF
510 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/IllegalStateException.class)]]"
511 + CRLF
512 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractSet.class)]]"
513 + CRLF
514 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Iterator.class)]]"
515 + CRLF
516 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/IllegalArgumentException.class)]]"
517 + CRLF
518 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Locale.class)]]"
519 + CRLF
520 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Long.class)]]"
521 + CRLF
522 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Float.class)]]"
523 + CRLF
524 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Double.class)]]"
525 + CRLF
526 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Boolean.class)]]"
527 + CRLF
528 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Void.class)]]"
529 + CRLF
530 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AssertionError.class)]]"
531 + CRLF
532 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServerImpl.class]]"
533 + CRLF + "[checking com.electriccloud.http.HttpServer]"
534 + CRLF
535 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServer.class]]"
536 + CRLF + "[checking com.electriccloud.http.HttpThreadPoolAware]"
537 + CRLF
538 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpThreadPoolAware.class]]"
539 + CRLF + "[checking com.electriccloud.http.HttpThreadPool]"
540 + CRLF
541 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/Future.class)]]"
542 + CRLF
543 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/Callable.class)]]"
544 + CRLF
545 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Date.class)]]"
546 + CRLF
547 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpThreadPool.class]]"
548 + CRLF + "[checking com.electriccloud.http.HttpQueueAware]"
549 + CRLF
550 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpQueueAware.class]]"
551 + CRLF + "[checking com.electriccloud.http.HttpServerAware]"
552 + CRLF
553 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServerAware.class]]"
554 + CRLF + "[checking com.electriccloud.http.HttpUtil]"
555 + CRLF
556 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/URI.class)]]"
557 + CRLF
558 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpRequestBase.class)]]"
559 + CRLF
560 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/message/AbstractHttpMessage.class)]]"
561 + CRLF
562 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpMessage.class)]]"
563 + CRLF
564 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/AbstractHttpClient.class)]]"
565 + CRLF
566 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/annotation/GuardedBy.class)]]"
567 + CRLF
568 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/ResponseHandler.class)]]"
569 + CRLF
570 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/ClientProtocolException.class)]]"
571 + CRLF
572 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpEntity.class)]]"
573 + CRLF
574 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpEntityEnclosingRequestBase.class)]]"
575 + CRLF
576 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/entity/AbstractHttpEntity.class)]]"
577 + CRLF
578 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:151: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
579 + CRLF + " ThreadSafeClientConnManager connectionManager ="
580 + CRLF + " ^"
581 + CRLF
582 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:152: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
583 + CRLF + " new ThreadSafeClientConnManager();"
584 + CRLF + " ^"
585 + CRLF
586 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/GeneralSecurityException.class)]]"
587 + CRLF
588 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/X509TrustManager.class)]]"
589 + CRLF
590 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyException.class)]]"
591 + CRLF
592 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/X509HostnameVerifier.class)]]"
593 + CRLF
594 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/SSLSocketFactory.class)]]"
595 + CRLF
596 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/HostNameResolver.class)]]"
597 + CRLF
598 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/HostnameVerifier.class)]]"
599 + CRLF
600 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/TrustStrategy.class)]]"
601 + CRLF
602 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyStore.class)]]"
603 + CRLF
604 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeRegistry.class)]]"
605 + CRLF
606 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ClientConnectionManager.class)]]"
607 + CRLF
608 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/HttpRequestRetryHandler.class)]]"
609 + CRLF
610 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ConnectionKeepAliveStrategy.class)]]"
611 + CRLF
612 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/ParseException.class)]]"
613 + CRLF
614 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/UnsupportedEncodingException.class)]]"
615 + CRLF
616 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpUtil$1.class]]"
617 + CRLF
618 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuilder.class)]]"
619 + CRLF
620 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AbstractStringBuilder.class)]]"
621 + CRLF
622 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuffer.class)]]"
623 + CRLF
624 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/KeyManager.class)]]"
625 + CRLF
626 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpUtil.class]]"
627 + CRLF + "[total 654ms]"
628 + CRLF + "4 warnings"
629 + CRLF;
630 List<CompilerMessage> compilerMessages =
631 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(errors)));
632 assertThat("count", compilerMessages.size(), is(187));
633 List<CompilerMessage> compilerErrors = new ArrayList<>(3);
634 for (CompilerMessage message : compilerMessages) {
635 if (message.getKind() != CompilerMessage.Kind.OTHER) {
636 compilerErrors.add(message);
637 }
638 }
639
640 assertEquivalent(
641 new CompilerMessage(
642 "[options] bootstrap class path not set in conjunction with -source " + "1.6",
643 CompilerMessage.Kind.WARNING),
644 compilerErrors.get(0));
645 CompilerMessage error1 = compilerErrors.get(1);
646 assertThat(
647 "file",
648 error1.getFile(),
649 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
650 assertThat(
651 "message",
652 error1.getMessage(),
653 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
654 assertThat("line", error1.getStartLine(), is(31));
655 assertThat("column", error1.getStartColumn(), is(38));
656 CompilerMessage error2 = compilerErrors.get(2);
657 assertThat(
658 "file",
659 error2.getFile(),
660 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
661 assertThat(
662 "message",
663 error2.getMessage(),
664 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
665 assertThat("line", error2.getStartLine(), is(151));
666 assertThat("column", error2.getStartColumn(), is(8));
667 CompilerMessage error3 = compilerErrors.get(3);
668 assertThat(
669 "file",
670 error3.getFile(),
671 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
672 assertThat(
673 "message",
674 error3.getMessage(),
675 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
676 assertThat("line", error3.getStartLine(), is(152));
677 assertThat("column", error3.getStartColumn(), is(16));
678 }
679
680 @Test
681 public void testJava6Error() throws Exception {
682 String out = "Error.java:3: cannot find symbol" + EOL + "symbol : class Properties"
683 + EOL + "location: class Error"
684 + EOL + " Properties p = new Properties();"
685 + EOL + " ^"
686 + EOL + "Error.java:3: cannot find symbol"
687 + EOL + "symbol : class Properties"
688 + EOL + "location: class Error"
689 + EOL + " Properties p = new Properties();"
690 + EOL + " ^"
691 + EOL + "2 errors";
692
693 List<CompilerMessage> compilerErrors =
694 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
695
696 assertThat(compilerErrors, notNullValue());
697
698 CompilerMessage message1 = compilerErrors.get(0);
699
700 assertThat(message1.isError(), is(true));
701
702 assertThat(
703 message1.getMessage(),
704 is("cannot find symbol" + EOL + "symbol : class Properties" + EOL + "location: class Error"));
705
706 assertThat(message1.getStartColumn(), is(16));
707
708 assertThat(message1.getEndColumn(), is(26));
709
710 assertThat(message1.getStartLine(), is(3));
711
712 assertThat(message1.getEndLine(), is(3));
713
714 CompilerMessage message2 = compilerErrors.get(1);
715
716 assertThat(message2.isError(), is(true));
717
718 assertThat(
719 message2.getMessage(),
720 is("cannot find symbol" + EOL + "symbol : class Properties" + EOL + "location: class Error"));
721
722 assertThat(message2.getStartColumn(), is(35));
723
724 assertThat(message2.getEndColumn(), is(48));
725
726 assertThat(message2.getStartLine(), is(3));
727
728 assertThat(message2.getEndLine(), is(3));
729 }
730
731 @Test
732 public void testJava7Error() throws Exception {
733 String out =
734 "Error.java:3: error: cannot find symbol" + EOL + " Properties p = new Properties();"
735 + EOL + " ^"
736 + EOL + " symbol: class Properties"
737 + EOL + " location: class Error"
738 + EOL + "Error.java:3: error: cannot find symbol"
739 + EOL + " Properties p = new Properties();"
740 + EOL + " ^"
741 + EOL + " symbol: class Properties"
742 + EOL + " location: class Error"
743 + EOL + "2 errors";
744
745 List<CompilerMessage> compilerErrors =
746 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
747
748 assertThat(compilerErrors, notNullValue());
749
750 CompilerMessage message1 = compilerErrors.get(0);
751
752 assertThat(message1.isError(), is(true));
753
754 assertThat(
755 message1.getMessage(),
756 is("cannot find symbol" + EOL + " symbol: class Properties" + EOL + " location: class Error"));
757
758 assertThat(message1.getStartColumn(), is(16));
759
760 assertThat(message1.getEndColumn(), is(26));
761
762 assertThat(message1.getStartLine(), is(3));
763
764 assertThat(message1.getEndLine(), is(3));
765
766 CompilerMessage message2 = compilerErrors.get(1);
767
768 assertThat(message2.isError(), is(true));
769
770 assertThat(
771 message2.getMessage(),
772 is("cannot find symbol" + EOL + " symbol: class Properties" + EOL + " location: class Error"));
773
774 assertThat(message2.getStartColumn(), is(35));
775
776 assertThat(message2.getEndColumn(), is(48));
777
778 assertThat(message2.getStartLine(), is(3));
779
780 assertThat(message2.getEndLine(), is(3));
781 }
782
783 @ParameterizedTest(name = "{0}")
784 @MethodSource("testStackTraceWithUnknownHeader_args")
785 public void testStackTraceWithUnknownHeader(String scenario, String stackTraceHeader) throws Exception {
786 String stackTraceWithHeader = UNIDENTIFIED_LOG_LINES + stackTraceHeader + stackTraceInternalCompilerError;
787
788 List<CompilerMessage> compilerMessages =
789 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
790
791 assertThat(compilerMessages, notNullValue());
792 assertThat(compilerMessages, hasSize(1));
793
794 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
795
796 assertThat(message, not(containsString(UNIDENTIFIED_LOG_LINES)));
797 assertThat(message, not(containsString(stackTraceHeader)));
798
799 assertThat(message, startsWith(stackTraceInternalCompilerError));
800 }
801
802 private static Stream<Arguments> testStackTraceWithUnknownHeader_args() {
803 return Stream.of(
804 Arguments.of(
805 "modified compiler error header",
806 FILE_A_BUG_ERROR_HEADERS[0].replaceAll("\\{0\\}", "21").replaceAll("bug", "beetle")),
807 Arguments.of(
808 "modified annotation processor error header",
809 ANNOTATION_PROCESSING_ERROR_HEADERS[0].replaceAll("uncaught", "undandled")),
810 Arguments.of(
811 "modified out of resources error header",
812 SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[0].replaceAll("resources", "memory")),
813 Arguments.of("modified I/O error header", IO_ERROR_HEADERS[0].replaceAll("input/output", "I/O")),
814 Arguments.of(
815 "modified plugin error header", PLUGIN_ERROR_HEADERS[0].replaceAll("uncaught", "unhandled")));
816 }
817
818 @ParameterizedTest(name = "{0}")
819 @MethodSource("testBugParade_args")
820 public void testBugParade(String jdkAndLocale, String stackTraceHeader) throws Exception {
821 String stackTraceWithHeader = UNIDENTIFIED_LOG_LINES + stackTraceHeader + stackTraceInternalCompilerError;
822
823 List<CompilerMessage> compilerMessages =
824 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
825
826 assertThat(compilerMessages, notNullValue());
827 assertThat(compilerMessages, hasSize(1));
828
829 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
830
831 assertThat(message, startsWith(stackTraceHeader));
832 assertThat(message, endsWith(stackTraceInternalCompilerError));
833 }
834
835 private static final String stackTraceInternalCompilerError =
836 "com.sun.tools.javac.code.Symbol$CompletionFailure: class file for java.util.Optional not found\n"
837 + "\tat com.sun.tools.javac.comp.MemberEnter.baseEnv(MemberEnter.java:1388)\n"
838 + "\tat com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:1046)\n"
839 + "\tat com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)\n"
840 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037)\n"
841 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:973)\n"
842 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.getKind(Symbol.java:1101)\n"
843 + "\tat com.sun.tools.javac.code.Kinds.kindName(Kinds.java:162)\n"
844 + "\tat com.sun.tools.javac.comp.Check.duplicateError(Check.java:329)\n"
845 + "\tat com.sun.tools.javac.comp.Check.checkUnique(Check.java:3435)\n"
846 + "\tat com.sun.tools.javac.comp.Enter.visitTypeParameter(Enter.java:454)\n"
847 + "\tat com.sun.tools.javac.tree.JCTree$JCTypeParameter.accept(JCTree.java:2224)\n"
848 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
849 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
850 + "\tat com.sun.tools.javac.comp.Enter.visitClassDef(Enter.java:418)\n"
851 + "\tat com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)\n"
852 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
853 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
854 + "\tat com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:334)\n"
855 + "\tat com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:518)\n"
856 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
857 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
858 + "\tat com.sun.tools.javac.comp.Enter.complete(Enter.java:486)\n"
859 + "\tat com.sun.tools.javac.comp.Enter.main(Enter.java:471)\n"
860 + "\tat com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)\n"
861 + "\tat com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)\n"
862 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:523)\n"
863 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:381)\n"
864 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:370)\n"
865 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:361)\n"
866 + "\tat com.sun.tools.javac.Main.compile(Main.java:56)\n"
867 + "\tat com.sun.tools.javac.Main.main(Main.java:42)\n";
868
869 private static Stream<Arguments> testBugParade_args() {
870 return Stream.of(
871 Arguments.of("JDK 8 English", FILE_A_BUG_ERROR_HEADERS[0].replaceFirst("\\{0\\}", "21")),
872 Arguments.of("JDK 8 Japanese", FILE_A_BUG_ERROR_HEADERS[1].replaceFirst("\\{0\\}", "21")),
873 Arguments.of("JDK 8 Chinese", FILE_A_BUG_ERROR_HEADERS[2].replaceFirst("\\{0\\}", "21")),
874 Arguments.of("JDK 9 English", FILE_A_BUG_ERROR_HEADERS[3].replaceFirst("\\{0\\}", "21")),
875 Arguments.of("JDK 9 Japanese", FILE_A_BUG_ERROR_HEADERS[4].replaceFirst("\\{0\\}", "21")),
876 Arguments.of("JDK 9 Chinese", FILE_A_BUG_ERROR_HEADERS[5].replaceFirst("\\{0\\}", "21")),
877 Arguments.of("JDK 21 English", FILE_A_BUG_ERROR_HEADERS[6].replaceFirst("\\{0\\}", "21")),
878 Arguments.of("JDK 21 Japanese", FILE_A_BUG_ERROR_HEADERS[7].replaceFirst("\\{0\\}", "21")),
879 Arguments.of("JDK 21 Chinese", FILE_A_BUG_ERROR_HEADERS[8].replaceFirst("\\{0\\}", "21")),
880 Arguments.of("JDK 21 German", FILE_A_BUG_ERROR_HEADERS[9].replaceFirst("\\{0\\}", "21")));
881 }
882
883 @ParameterizedTest(name = "{0}")
884 @MethodSource("testSystemOutOfResourcesError_args")
885 public void testSystemOutOfResourcesError(String jdkAndLocale, String stackTraceHeader) throws Exception {
886 String stackTraceWithHeader = UNIDENTIFIED_LOG_LINES + stackTraceHeader + stackTraceSystemOutOfResourcesError;
887
888 List<CompilerMessage> compilerMessages =
889 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
890
891 assertThat(compilerMessages, notNullValue());
892 assertThat(compilerMessages, hasSize(1));
893
894 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
895
896 assertThat(message, startsWith(stackTraceHeader));
897 assertThat(message, endsWith(stackTraceSystemOutOfResourcesError));
898 }
899
900 private static final String stackTraceSystemOutOfResourcesError =
901 "java.lang.OutOfMemoryError: GC overhead limit exceeded\n"
902 + "\tat com.sun.tools.javac.util.List.of(List.java:135)\n"
903 + "\tat com.sun.tools.javac.util.ListBuffer.append(ListBuffer.java:129)\n"
904 + "\tat com.sun.tools.javac.parser.JavacParser.variableDeclaratorsRest(JavacParser.java:3006)\n"
905 + "\tat com.sun.tools.javac.parser.JavacParser.classOrInterfaceBodyDeclaration(JavacParser.java:3537)\n"
906 + "\tat com.sun.tools.javac.parser.JavacParser.classOrInterfaceBody(JavacParser.java:3436)\n"
907 + "\tat com.sun.tools.javac.parser.JavacParser.classDeclaration(JavacParser.java:3285)\n"
908 + "\tat com.sun.tools.javac.parser.JavacParser.classOrInterfaceOrEnumDeclaration(JavacParser.java:3226)\n"
909 + "\tat com.sun.tools.javac.parser.JavacParser.typeDeclaration(JavacParser.java:3215)\n"
910 + "\tat com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:3155)\n"
911 + "\tat com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:628)\n"
912 + "\tat com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:665)\n"
913 + "\tat com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950)\n"
914 + "\tat com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)\n"
915 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:523)\n"
916 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:381)\n"
917 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:370)\n"
918 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:361)\n"
919 + "\tat com.sun.tools.javac.Main.compile(Main.java:56)\n"
920 + "\tat com.sun.tools.javac.Main.main(Main.java:42)\n";
921
922 private static Stream<Arguments> testSystemOutOfResourcesError_args() {
923 return Stream.of(
924 Arguments.of("JDK 8 English", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[0]),
925 Arguments.of("JDK 8 Japanese", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[1]),
926 Arguments.of("JDK 8 Chinese", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[2]),
927 Arguments.of("JDK 21 English", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[3]),
928 Arguments.of("JDK 21 Japanese", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[4]),
929 Arguments.of("JDK 21 Chinese", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[5]),
930 Arguments.of("JDK 21 German", SYSTEM_OUT_OF_RESOURCES_ERROR_HEADERS[6]));
931 }
932
933 @ParameterizedTest(name = "{0}")
934 @MethodSource("testIOError_args")
935 public void testIOError(String jdkAndLocale, String stackTraceHeader) throws Exception {
936 String stackTraceWithHeader = UNIDENTIFIED_LOG_LINES + stackTraceHeader + stackTraceIOError;
937
938 List<CompilerMessage> compilerMessages =
939 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
940
941 assertThat(compilerMessages, notNullValue());
942 assertThat(compilerMessages, hasSize(1));
943
944 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
945
946 assertThat(message, startsWith(stackTraceHeader));
947 assertThat(message, endsWith(stackTraceIOError));
948 }
949
950 private static final String stackTraceIOError =
951 "An input/output error occurred.\n" + "Consult the following stack trace for details.\n"
952 + "java.nio.charset.MalformedInputException: Input length = 1\n"
953 + "\tat java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)\n"
954 + "\tat java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)\n"
955 + "\tat java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\n"
956 + "\tat java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)\n"
957 + "\tat java.base/java.io.BufferedReader.fill(BufferedReader.java:161)\n"
958 + "\tat java.base/java.io.BufferedReader.read(BufferedReader.java:182)\n"
959 + "\tat jdk.compiler/com.sun.tools.javac.main.CommandLine$Tokenizer.<init>(CommandLine.java:143)\n"
960 + "\tat jdk.compiler/com.sun.tools.javac.main.CommandLine.loadCmdFile(CommandLine.java:129)\n"
961 + "\tat jdk.compiler/com.sun.tools.javac.main.CommandLine.appendParsedCommandArgs(CommandLine.java:71)\n"
962 + "\tat jdk.compiler/com.sun.tools.javac.main.CommandLine.parse(CommandLine.java:102)\n"
963 + "\tat jdk.compiler/com.sun.tools.javac.main.CommandLine.parse(CommandLine.java:123)\n"
964 + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:215)\n"
965 + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:170)\n"
966 + "\tat jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)\n"
967 + "\tat jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)\n";
968
969 private static Stream<Arguments> testIOError_args() {
970 return Stream.of(
971 Arguments.of("JDK 8 English", IO_ERROR_HEADERS[0]),
972 Arguments.of("JDK 8 Japanese", IO_ERROR_HEADERS[1]),
973 Arguments.of("JDK 8 Chinese", IO_ERROR_HEADERS[2]),
974 Arguments.of("JDK 21 English", IO_ERROR_HEADERS[3]),
975 Arguments.of("JDK 21 Japanese", IO_ERROR_HEADERS[4]),
976 Arguments.of("JDK 21 Chinese", IO_ERROR_HEADERS[5]),
977 Arguments.of("JDK 21 German", IO_ERROR_HEADERS[6]));
978 }
979
980 @ParameterizedTest(name = "{0}")
981 @MethodSource("testPluginError_args")
982 public void testPluginError(String jdkAndLocale, String stackTraceHeader) throws Exception {
983 String stackTraceWithHeader = UNIDENTIFIED_LOG_LINES + stackTraceHeader + stackTracePluginError;
984
985 List<CompilerMessage> compilerMessages =
986 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
987
988 assertThat(compilerMessages, notNullValue());
989 assertThat(compilerMessages, hasSize(1));
990
991 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
992
993 assertThat(message, startsWith(stackTraceHeader));
994 assertThat(message, endsWith(stackTracePluginError));
995 }
996
997 private static final String stackTracePluginError =
998 "A plugin threw an uncaught exception.\n" + "Consult the following stack trace for details.\n"
999 + "java.lang.NoSuchMethodError: com.sun.tools.javac.util.JavacMessages.add(Lcom/sun/tools/javac/util/JavacMessages$ResourceBundleHelper;)V\n"
1000 + "\tat com.google.errorprone.BaseErrorProneJavaCompiler.setupMessageBundle(BaseErrorProneJavaCompiler.java:202)\n"
1001 + "\tat com.google.errorprone.ErrorProneJavacPlugin.init(ErrorProneJavacPlugin.java:40)\n"
1002 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:470)\n"
1003 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:381)\n"
1004 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:370)\n"
1005 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:361)\n"
1006 + "\tat com.sun.tools.javac.Main.compile(Main.java:56)\n"
1007 + "\tat com.sun.tools.javac.Main.main(Main.java:42)\n";
1008
1009 private static Stream<Arguments> testPluginError_args() {
1010 return Stream.of(
1011 Arguments.of("JDK 8 English", PLUGIN_ERROR_HEADERS[0]),
1012 Arguments.of("JDK 8 Japanese", PLUGIN_ERROR_HEADERS[1]),
1013 Arguments.of("JDK 8 Chinese", PLUGIN_ERROR_HEADERS[2]),
1014 Arguments.of("JDK 21 English", PLUGIN_ERROR_HEADERS[3]),
1015 Arguments.of("JDK 21 Japanese", PLUGIN_ERROR_HEADERS[4]),
1016 Arguments.of("JDK 21 Chinese", PLUGIN_ERROR_HEADERS[5]),
1017 Arguments.of("JDK 21 German", PLUGIN_ERROR_HEADERS[6]));
1018 }
1019
1020 @Test
1021 public void testNonAnchoredWarning() throws IOException {
1022 final String error = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + EOL
1023 + "1 warning" + EOL;
1024
1025 final List<CompilerMessage> compilerErrors =
1026 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
1027
1028 assertThat(compilerErrors, notNullValue());
1029 assertThat(compilerErrors.size(), is(1));
1030 assertEquivalent(
1031 new CompilerMessage(
1032 "[options] bootstrap class path not set in conjunction with -source 1.6",
1033 CompilerMessage.Kind.WARNING),
1034 compilerErrors.get(0));
1035 }
1036
1037 @Test
1038 public void testAnchoredWarning() throws IOException {
1039 final String error = "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main"
1040 + "\\java\\MyClass.java:23: warning: [divzero] division by zero"
1041 + EOL + " System.out.println(1/0);"
1042 + EOL + " ^"
1043 + EOL + "1 warnings"
1044 + EOL;
1045
1046 final List<CompilerMessage> compilerErrors =
1047 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
1048
1049 assertThat(compilerErrors, notNullValue());
1050 assertThat(compilerErrors.size(), is(1));
1051 assertEquivalent(
1052 new CompilerMessage(
1053 "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java\\MyClass" + ".java",
1054 CompilerMessage.Kind.WARNING,
1055 23,
1056 27,
1057 23,
1058 30,
1059 "[divzero] division by zero"),
1060 compilerErrors.get(0));
1061 }
1062
1063 @Test
1064 public void testMixedWarnings() throws IOException {
1065 final String error = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + EOL
1066 + "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java"
1067 + "\\MyClass.java:23: warning: [divzero] division by zero"
1068 + EOL + " System.out.println(1/0);"
1069 + EOL + " ^"
1070 + EOL + "2 warnings";
1071
1072 final List<CompilerMessage> compilerErrors =
1073 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
1074
1075 assertThat(compilerErrors, notNullValue());
1076 assertThat(compilerErrors.size(), is(2));
1077 assertEquivalent(
1078 new CompilerMessage(
1079 "[options] bootstrap class path not set in conjunction with -source 1.6",
1080 CompilerMessage.Kind.WARNING),
1081 compilerErrors.get(0));
1082 assertEquivalent(
1083 new CompilerMessage(
1084 "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java\\MyClass" + ".java",
1085 CompilerMessage.Kind.WARNING,
1086 23,
1087 27,
1088 23,
1089 30,
1090 "[divzero] division by zero"),
1091 compilerErrors.get(1));
1092 }
1093
1094 @Test
1095 public void testIssue37() throws IOException {
1096 String error =
1097 "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-5.0.3.jar\": no such file or directory"
1098 + EOL
1099 + "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-util-5.0.3.jar\": no such file or directory"
1100 + EOL + "warning: [options] bootstrap class path not set in conjunction with -source 1.7"
1101 + EOL + "3 warnings"
1102 + EOL
1103 + "An exception has occurred in the compiler (9). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you."
1104 + EOL + "java.lang.NullPointerException"
1105 + EOL + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.getVersionMap(JarFileSystem.java:137)"
1106 + EOL
1107 + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.createVersionedLinks(JarFileSystem.java:112)"
1108 + EOL + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.<init>(JarFileSystem.java:85)"
1109 + EOL
1110 + "\tat jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:134)"
1111 + EOL
1112 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager$ArchiveContainer.<init>(JavacFileManager.java:517)"
1113 + EOL
1114 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getContainer(JavacFileManager.java:319)"
1115 + EOL
1116 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager.list(JavacFileManager.java:715)"
1117 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.list(ClassFinder.java:722)"
1118 + EOL
1119 + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.scanUserPaths(ClassFinder.java:655)"
1120 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:526)"
1121 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:293)"
1122 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)"
1123 + EOL
1124 + "\tat jdk.compiler/com.sun.tools.javac.code.Symbol$PackageSymbol.members(Symbol.java:1120)"
1125 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.Symtab.listPackageModules(Symtab.java:810)"
1126 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:344)"
1127 + EOL
1128 + "\tat jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:529)"
1129 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:285)"
1130 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:300)"
1131 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:570)"
1132 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:554)"
1133 + EOL
1134 + "\tat jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1052)"
1135 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:923)"
1136 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:302)"
1137 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:162)"
1138 + EOL + "\tat jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)"
1139 + EOL + "\tat jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)";
1140
1141 List<CompilerMessage> compilerErrors =
1142 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
1143
1144 assertThat(compilerErrors, notNullValue());
1145 assertThat(compilerErrors.size(), is(4));
1146
1147 assertEquivalent(
1148 new CompilerMessage(
1149 "[path] bad path element \"d:\\maven_repo\\"
1150 + ".m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-5.0.3.jar\": no such file or directory",
1151 CompilerMessage.Kind.WARNING),
1152 compilerErrors.get(0));
1153 assertEquivalent(
1154 new CompilerMessage(
1155 "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-util-5.0.3.jar\": no such file or directory",
1156 CompilerMessage.Kind.WARNING),
1157 compilerErrors.get(1));
1158 assertEquivalent(
1159 new CompilerMessage(
1160 "[options] bootstrap class path not set in conjunction with -source 1.7",
1161 CompilerMessage.Kind.WARNING),
1162 compilerErrors.get(2));
1163
1164 CompilerMessage finalMessage = compilerErrors.get(3);
1165 assertThat(finalMessage.getKind(), is(CompilerMessage.Kind.ERROR));
1166 assertThat(
1167 "Starts correctly", finalMessage.getMessage(), startsWith("An exception has occurred in the compiler"));
1168 assertThat(
1169 "continues through end of output",
1170 finalMessage.getMessage(),
1171 endsWith("\tat jdk.compiler/com.sun" + ".tools.javac.Main.main(Main.java:43)" + EOL));
1172 }
1173
1174 @Test
1175 public void testJvmBootLayerInitializationError() throws Exception {
1176 String out = "Error occurred during initialization of boot layer\n"
1177 + "java.lang.module.FindException: Module java.xml.bind not found";
1178
1179 List<CompilerMessage> compilerErrors =
1180 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(UNIDENTIFIED_LOG_LINES + out)));
1181
1182 assertThat(compilerErrors, notNullValue());
1183 assertThat(compilerErrors.size(), is(1));
1184 assertThat(compilerErrors.get(0).getKind(), is(CompilerMessage.Kind.ERROR));
1185 assertThat(compilerErrors.get(0).getMessage().replaceAll(EOL, "\n"), startsWith(out));
1186 }
1187
1188 @Test
1189 public void testJvmInitializationError() throws Exception {
1190 String out = "Error occurred during initialization of VM\n"
1191 + "Initial heap size set to a larger value than the maximum heap size";
1192
1193 List<CompilerMessage> compilerErrors =
1194 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(UNIDENTIFIED_LOG_LINES + out)));
1195
1196 assertThat(compilerErrors, notNullValue());
1197 assertThat(compilerErrors.size(), is(1));
1198 assertThat(compilerErrors.get(0).getKind(), is(CompilerMessage.Kind.ERROR));
1199 assertThat(compilerErrors.get(0).getMessage().replaceAll(EOL, "\n"), startsWith(out));
1200 }
1201
1202 @Test
1203 public void testBadSourceFileError() throws Exception {
1204 String out = "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n"
1205 + " Cls2 tvar;\n"
1206 + " ^\n"
1207 + " bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n"
1208 + " file does not contain class ch.pecunifex.x.Cls2\n"
1209 + " Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
1210
1211 List<CompilerMessage> compilerErrors =
1212 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1213
1214 assertThat(compilerErrors, notNullValue());
1215
1216 assertThat(compilerErrors.size(), is(1));
1217
1218 CompilerMessage message = compilerErrors.get(0);
1219 validateBadSourceFile(message);
1220 }
1221
1222 @Test
1223 public void testWarningFollowedByBadSourceFileError() throws Exception {
1224 String out =
1225 "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:3: warning: FontDesignMetrics is internal proprietary API and may be removed in a future release\n"
1226 + "import sun.font.FontDesignMetrics;\n"
1227 + " ^\n"
1228 + "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n"
1229 + " Cls2 tvar;\n"
1230 + " ^\n"
1231 + " bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n"
1232 + " file does not contain class ch.pecunifex.x.Cls2\n"
1233 + " Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
1234
1235 List<CompilerMessage> compilerErrors =
1236 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1237
1238 assertThat(compilerErrors, notNullValue());
1239
1240 assertThat(compilerErrors, hasSize(2));
1241
1242 CompilerMessage firstMessage = compilerErrors.get(0);
1243 assertThat("Is a Warning", firstMessage.getKind(), is(CompilerMessage.Kind.WARNING));
1244 assertThat(
1245 "On Correct File",
1246 firstMessage.getFile(),
1247 is("/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java"));
1248 assertThat(
1249 "Internal API Warning",
1250 firstMessage.getMessage(),
1251 is("FontDesignMetrics is internal proprietary API and may be removed in a future release"));
1252
1253 CompilerMessage secondMessage = compilerErrors.get(1);
1254 validateBadSourceFile(secondMessage);
1255 }
1256
1257 private void validateBadSourceFile(CompilerMessage message) {
1258 assertThat("Is an Error", message.getKind(), is(CompilerMessage.Kind.ERROR));
1259 assertThat("On Correct File", message.getFile(), is("/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java"));
1260 assertThat("Message starts with access Error", message.getMessage(), startsWith("cannot access Cls2"));
1261 }
1262
1263 private static void assertEquivalent(CompilerMessage expected, CompilerMessage actual) {
1264 assertThat("Message did not match", actual.getMessage(), is(expected.getMessage()));
1265 assertThat("Kind did not match", actual.getKind(), is(expected.getKind()));
1266 assertThat("File did not match", actual.getFile(), is(expected.getFile()));
1267 assertThat("Start line did not match", actual.getStartLine(), is(expected.getStartLine()));
1268 assertThat("Start column did not match", actual.getStartColumn(), is(expected.getStartColumn()));
1269 assertThat("End line did not match", actual.getEndLine(), is(expected.getEndLine()));
1270 assertThat("End column did not match", actual.getEndColumn(), is(expected.getEndColumn()));
1271 }
1272 }