1 /**
2 * Java HTML Tidy - JTidy
3 * HTML parser and pretty printer
4 *
5 * Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
6 * Institute of Technology, Institut National de Recherche en
7 * Informatique et en Automatique, Keio University). All Rights
8 * Reserved.
9 *
10 * Contributing Author(s):
11 *
12 * Dave Raggett <dsr@w3.org>
13 * Andy Quick <ac.quick@sympatico.ca> (translation to Java)
14 * Gary L Peskin <garyp@firstech.com> (Java development)
15 * Sami Lempinen <sami@lempinen.net> (release management)
16 * Fabrizio Giustina <fgiust at users.sourceforge.net>
17 *
18 * The contributing author(s) would like to thank all those who
19 * helped with testing, bug fixes, and patience. This wouldn't
20 * have been possible without all of you.
21 *
22 * COPYRIGHT NOTICE:
23 *
24 * This software and documentation is provided "as is," and
25 * the copyright holders and contributing author(s) make no
26 * representations or warranties, express or implied, including
27 * but not limited to, warranties of merchantability or fitness
28 * for any particular purpose or that the use of the software or
29 * documentation will not infringe any third party patents,
30 * copyrights, trademarks or other rights.
31 *
32 * The copyright holders and contributing author(s) will not be
33 * liable for any direct, indirect, special or consequential damages
34 * arising out of any use of the software or documentation, even if
35 * advised of the possibility of such damage.
36 *
37 * Permission is hereby granted to use, copy, modify, and distribute
38 * this source code, or portions hereof, documentation and executables,
39 * for any purpose, without fee, subject to the following restrictions:
40 *
41 * 1. The origin of this source code must not be misrepresented.
42 * 2. Altered versions must be plainly marked as such and must
43 * not be misrepresented as being the original source.
44 * 3. This Copyright notice may not be removed or altered from any
45 * source or altered source distribution.
46 *
47 * The copyright holders and contributing author(s) specifically
48 * permit, without fee, and encourage the use of this source code
49 * as a component for supporting the Hypertext Markup Language in
50 * commercial products. If you use this source code in a product,
51 * acknowledgment is not required but would be appreciated.
52 *
53 */
54 package org.w3c.tidy;
55
56 import java.io.File;
57 import java.text.NumberFormat;
58
59
60 /**
61 * Testcase for Tidy resolved bugs. Bugs that crashed tidy or caused infinite loops.
62 * @author fgiust
63 * @version $Revision: 809 $ ($Author: fgiust $)
64 */
65 public class TidyCrashingBugsTest extends TidyTestCase
66 {
67
68 /**
69 * Instantiate a new Test case.
70 * @param name test name
71 */
72 public TidyCrashingBugsTest(String name)
73 {
74 super(name);
75 }
76
77 /**
78 * test for Tidy [427664] : Missing attr values cause NULL segfault.
79 * @throws Exception any exception generated during the test
80 */
81 public void test427664() throws Exception
82 {
83 executeTidyTest("427664.html");
84 }
85
86 /**
87 * test for Tidy [427671] : <LI> w/FRAME/FRAMESET/OPTGROUP/OPTION loop.
88 * @throws Exception any exception generated during the test
89 */
90 public void test427671() throws Exception
91 {
92 executeTidyTest("427671.html");
93 }
94
95 /**
96 * test for Tidy [427675] : Frameset followed by frame infinite loop.
97 * @throws Exception any exception generated during the test
98 */
99 public void test427675() throws Exception
100 {
101 executeTidyTest("427675.html");
102 }
103
104 /**
105 * test for Tidy [427676] : Missing = from attr value NULL segfault.
106 * @throws Exception any exception generated during the test
107 */
108 public void test427676() throws Exception
109 {
110 executeTidyTest("427676.html");
111 }
112
113 /**
114 * test for Tidy [427672] : Non-std attrs w/multibyte names segfault.
115 * @throws Exception any exception generated during the test
116 */
117 public void test427672() throws Exception
118 {
119 executeTidyTest("427672.html");
120 }
121
122 /**
123 * test for Tidy [426885] : Definition list w/Center crashes.
124 * @throws Exception any exception generated during the test
125 */
126 public void test426885() throws Exception
127 {
128 executeTidyTest("426885.html");
129 }
130
131 /**
132 * test for Tidy [427811] : FRAME inside NOFRAME infinite loop.
133 * @throws Exception any exception generated during the test
134 */
135 public void test427811() throws Exception
136 {
137 executeTidyTest("427811.html");
138 }
139
140 /**
141 * test for Tidy [427813] : Missing = from attr value segfaults.
142 * @throws Exception any exception generated during the test
143 */
144 public void test427813() throws Exception
145 {
146 executeTidyTest("427813.html");
147 }
148
149 /**
150 * test for Tidy [427816] : Mismatched quotes for attr segfaults.
151 * @throws Exception any exception generated during the test
152 */
153 public void test427816() throws Exception
154 {
155 executeTidyTest("427816.html");
156 }
157
158 /**
159 * test for Tidy [427818] : Missing quotes cause segfaults.
160 * @throws Exception any exception generated during the test
161 */
162 public void test427818() throws Exception
163 {
164 executeTidyTest("427818.html");
165 }
166
167 /**
168 * test for Tidy [427840] : Span causes infinite loop.
169 * @throws Exception any exception generated during the test
170 */
171 public void test427840() throws Exception
172 {
173 executeTidyTest("427840.html");
174 }
175
176 /**
177 * test for Tidy [427841] : Tidy crashes on badly formed HTML involving nested lists.
178 * @throws Exception any exception generated during the test
179 */
180 public void test427841() throws Exception
181 {
182 executeTidyTest("427841.html");
183 }
184
185 /**
186 * test for Tidy [431716] : -slides causes a seg fault.
187 * @throws Exception any exception generated during the test
188 */
189 public void test431716() throws Exception
190 {
191 executeTidyTest("431716.html");
192
193
194 NumberFormat numberFormat = NumberFormat.getInstance();
195 numberFormat.setMinimumIntegerDigits(3);
196 for (int j = 1; j <= 26; j++)
197 {
198 String slide = "slide" + numberFormat.format(j) + ".html";
199 (new File(slide)).delete();
200 }
201 }
202
203 /**
204 * test for Tidy [443362] : null-pointer exception for doctype in pre.
205 * @throws Exception any exception generated during the test
206 */
207 public void test443362() throws Exception
208 {
209 executeTidyTest("443362.html");
210 }
211
212 /**
213 * test for Tidy [433856] : Access violation w/Word files w/font tag.
214 * @throws Exception any exception generated during the test
215 */
216 public void test433856() throws Exception
217 {
218 executeTidyTest("433856.html");
219 }
220
221 /**
222 * test for Tidy [532535] : Hang when in code <?xml />.
223 * @throws Exception any exception generated during the test
224 */
225 public void test532535() throws Exception
226 {
227 executeTidyTest("532535.html");
228 }
229
230 /**
231 * test for Tidy [539369] : Infinite loop </frame> after </frameset>.
232 * @throws Exception any exception generated during the test
233 */
234 public void test539369() throws Exception
235 {
236 executeTidyTest("539369.html");
237 }
238
239 /**
240 * test for Tidy [539369a] : Test </frameset> inside <noframes> (infinite loop).
241 * @throws Exception any exception generated during the test
242 */
243 public void test539369a() throws Exception
244 {
245 executeTidyTest("539369a.html");
246 }
247
248 /**
249 * test for Tidy [540296] : Tidy dumps.
250 * @throws Exception any exception generated during the test
251 */
252 public void test540296() throws Exception
253 {
254 executeTidyTest("540296.html");
255 }
256
257 /**
258 * test for Tidy [542029] : PPrintXmlDecl reads outside array range.
259 * @throws Exception any exception generated during the test
260 */
261 public void test542029() throws Exception
262 {
263 executeTidyTest("542029.html");
264 }
265
266 /**
267 * test for Tidy [572154] : frame element outside of a frameset causes infinite loop.
268 * @throws Exception any exception generated during the test
269 */
270 public void test572154() throws Exception
271 {
272 executeTidyTest("572154.html");
273 }
274
275 /**
276 * test for Tidy [543262] : tidy eats all memory.
277 * @throws Exception any exception generated during the test
278 */
279 public void test543262() throws Exception
280 {
281 executeTidyTest("543262.html");
282 }
283
284 /**
285 * test for Tidy [545772] : --output-xhtml hangs on most files.
286 * @throws Exception any exception generated during the test
287 */
288 public void test545772() throws Exception
289 {
290 executeTidyTest("545772.html");
291 }
292
293 /**
294 * test for Tidy [566542] : parser hangs.
295 * @throws Exception any exception generated during the test
296 */
297 public void test566542() throws Exception
298 {
299 executeTidyTest("566542.html");
300 }
301
302 /**
303 * test for Tidy [570027] : Fixes crash in Word2000 cleanup.
304 * @throws Exception any exception generated during the test
305 */
306 public void test570027() throws Exception
307 {
308 executeTidyTest("570027.html");
309 }
310
311 /**
312 * test for Tidy [588061] : Crash on www.tvnav.com.
313 * @throws Exception any exception generated during the test
314 */
315 public void test588061() throws Exception
316 {
317 executeTidyTest("588061.html");
318 }
319
320 /**
321 * test for Tidy [661606] : Two bytes at the last line, w/ asian options.
322 * @throws Exception any exception generated during the test
323 */
324 public void test661606() throws Exception
325 {
326 executeTidyTest("661606.html");
327 }
328
329 /**
330 * test for Tidy [671087] : tidy loops with --new-inline-tags table,tr,td.
331 * @throws Exception any exception generated during the test
332 */
333 public void test671087() throws Exception
334 {
335 executeTidyTest("671087.html");
336 }
337
338 /**
339 * test for Tidy [676205] : <img src="> crashes Tidy.
340 * @throws Exception any exception generated during the test
341 */
342 public void test676205() throws Exception
343 {
344 executeTidyTest("676205.html");
345 }
346
347 /**
348 * test for Tidy [679135] : Crashes while checking attributes.
349 * @throws Exception any exception generated during the test
350 */
351 public void test679135() throws Exception
352 {
353 executeTidyTest("679135.html");
354 }
355
356 /**
357 * test for Tidy [696799] : Crash: <script language="">.
358 * @throws Exception any exception generated during the test
359 */
360 public void test696799() throws Exception
361 {
362 executeTidyTest("696799.html");
363 }
364
365 /**
366 * test for Tidy [788031] : tidy hangs on input.
367 * @throws Exception any exception generated during the test
368 */
369 public void test788031() throws Exception
370 {
371 executeTidyTest("788031.html");
372 }
373
374 /**
375 * test for Tidy [837023] : segfault on doctype-like element.
376 * @throws Exception any exception generated during the test
377 */
378 public void test837023() throws Exception
379 {
380 executeTidyTest("837023.html");
381 }
382
383 /**
384 * test for Tidy [991469] : goes wrong with option tag.
385 * @throws Exception any exception generated during the test
386 */
387 public void test991469() throws Exception
388 {
389 executeTidyTest("991469.xml");
390 }
391
392 /**
393 * test for Tidy [991471] : NPE on file with CDATA.
394 * @throws Exception any exception generated during the test
395 */
396 public void test991471() throws Exception
397 {
398 executeTidyTest("991471.xml");
399 }
400
401 /**
402 * test for Tidy [1003994] : wrong UNEXPECTED_ENDTAG message.
403 * @throws Exception any exception generated during the test
404 */
405 public void test1003994() throws Exception
406 {
407 executeTidyTest("1003994.xml");
408 assertLogDoesntContains("{");
409 }
410
411 /**
412 * test for JTidy [1020806]: NPE when PPPrint'ing changed DOM tree.
413 * @throws Exception any exception generated during the test
414 */
415 public void test1020806() throws Exception
416 {
417 org.w3c.dom.Document doc = parseDomTest("1020806.html");
418 tidy.pprint(doc, System.out);
419 }
420
421 /**
422 * test for JTidy [1020806b]: NPE when PPPrint'ing changed DOM tree.
423 * @throws Exception any exception generated during the test
424 */
425 public void test1020806b() throws Exception
426 {
427 org.w3c.dom.Document doc = parseDomTest("1020806b.html");
428 tidy.pprint(doc, System.out);
429 }
430
431 /**
432 * test for JTidy [1033035]: EOF bug in parseAsp and parsePhp.
433 * @throws Exception any exception generated during the test
434 */
435 public void test1033035() throws Exception
436 {
437 executeTidyTest("1033035.html");
438 }
439
440 /**
441 * test for JTidy [1392829]: Some cases for null pointer Exception.
442 * @throws Exception any exception generated during the test
443 */
444 public void test1392829() throws Exception
445 {
446 executeTidyTest("1392829.html");
447 }
448
449 /**
450 * test for JTidy [1416185]: infinite loop.
451 * @throws Exception any exception generated during the test
452 */
453 public void test1416185() throws Exception
454 {
455 executeTidyTest("1416185.html");
456 }
457
458 /**
459 * test for JTidy [1403105]: java.lang.StackOverflowError in Tidy.parseDOM().
460 * @throws Exception any exception generated during the test
461 */
462 public void test1403105() throws Exception
463 {
464 tidy.setEncloseBlockText(true);
465 executeTidyTest("1403105.html");
466 }
467
468 }