[Htmlparser-cvs] htmlparser/src/org/htmlparser/tests/scannersTests AllTests.java,1.37,1.38 BulletLis
Brought to you by:
derrickoswald
From: <der...@us...> - 2003-05-31 17:48:24
|
Update of /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests In directory sc8-pr-cvs1:/tmp/cvs-serv11008/org/htmlparser/tests/scannersTests Modified Files: AllTests.java BulletListScannerTest.java FormScannerTest.java OptionTagScannerTest.java SelectTagScannerTest.java TextareaTagScannerTest.java Log Message: Fixed bug #745566 StackOverflowError on select with too many unclosed options. Replicated the missing end tag detection of the bullet list scanner into the form scanners. This isn't ideal, but it seems to work. Added test case testUnclosedOptions in FormScannerTest that reads http://htmlparser.sourceforge.net/test/overflowpage.html. Note: this test only failed on Windows, prior to the fix. Picked up missing scanner tests in AllTests. The HtmlTest file showed that title tags weren't being scanned, which I fixed with a kludge. Added order list types to BulletListScanner match tags. Index: AllTests.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/AllTests.java,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** AllTests.java 26 May 2003 00:26:49 -0000 1.37 --- AllTests.java 31 May 2003 17:48:19 -0000 1.38 *************** *** 84,87 **** --- 84,91 ---- suite.addTestSuite(CompositeTagScannerTest.class); suite.addTestSuite(HeadScannerTest.class); + suite.addTestSuite(BulletListScannerTest.class); + suite.addTestSuite(BulletScannerTest.class); + suite.addTestSuite(HtmlTest.class); + suite.addTestSuite(XmlEndTagScanningTest.class); return suite; } Index: BulletListScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/BulletListScannerTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BulletListScannerTest.java 28 Apr 2003 01:08:28 -0000 1.1 --- BulletListScannerTest.java 31 May 2003 17:48:19 -0000 1.2 *************** *** 30,34 **** public void testScan() throws ParserException { createParser( ! "<ul TYPE=DISC>" + "<ul TYPE=\"DISC\"><li>Energy supply\n"+ " (Campbell) <A HREF=\"/hansard/37th3rd/h20307p.htm#1646\">1646</A>\n"+ " (MacPhail) <A HREF=\"/hansard/37th3rd/h20307p.htm#1646\">1646</A>\n"+ --- 30,35 ---- public void testScan() throws ParserException { createParser( ! "<ul TYPE=DISC>" + ! "<ul TYPE=\"DISC\"><li>Energy supply\n"+ " (Campbell) <A HREF=\"/hansard/37th3rd/h20307p.htm#1646\">1646</A>\n"+ " (MacPhail) <A HREF=\"/hansard/37th3rd/h20307p.htm#1646\">1646</A>\n"+ *************** *** 36,40 **** "<ul TYPE=\"DISC\"><li>Power plant projects\n"+ " (Neufeld) <A HREF=\"/hansard/37th3rd/h20314p.htm#1985\">1985</A>\n"+ ! "</ul>" + "</ul>" ); parser.registerScanners(); --- 37,42 ---- "<ul TYPE=\"DISC\"><li>Power plant projects\n"+ " (Neufeld) <A HREF=\"/hansard/37th3rd/h20314p.htm#1985\">1985</A>\n"+ ! "</ul>" + ! "</ul>" ); parser.registerScanners(); *************** *** 63,69 **** assertStringEquals( "expected text", ! "Energy supply\r\n" + " (Campbell) ", firstNodeInFirstBullet.toPlainTextString() ); } } --- 65,82 ---- assertStringEquals( "expected text", ! "Energy supply\r\n" + ! " (Campbell) ", firstNodeInFirstBullet.toPlainTextString() ); } + + public void testMissingendtag () + throws ParserException + { + createParser ("<li>item 1<li>item 2"); + parser.registerScanners (); + parseAndAssertNodeCount (2); + assertStringEquals ("item 1 not correct", "item 1", ((Bullet)node[0]).childAt (0).toHtml ()); + assertStringEquals ("item 2 not correct", "item 2", ((Bullet)node[1]).childAt (0).toHtml ()); + } } Index: FormScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/FormScannerTest.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** FormScannerTest.java 26 May 2003 00:26:50 -0000 1.20 --- FormScannerTest.java 31 May 2003 17:48:19 -0000 1.21 *************** *** 39,42 **** --- 39,43 ---- import org.htmlparser.tags.TextareaTag; import org.htmlparser.tests.ParserTestCase; + import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; import org.htmlparser.util.SimpleNodeIterator; *************** *** 253,257 **** "<INPUT TYPE=\"TEXT\">\n"+ "<BR>\n"+ ! "<A HREF=\"http://www.helpme.com\">Help</A> " + "<INPUT TYPE=\"checkbox\">\n"+ "<P>\n"+ "<INPUT TYPE=\"SUBMIT\">\n"+ --- 254,259 ---- "<INPUT TYPE=\"TEXT\">\n"+ "<BR>\n"+ ! "<A HREF=\"http://www.helpme.com\">Help</A> " + ! "<INPUT TYPE=\"checkbox\">\n"+ "<P>\n"+ "<INPUT TYPE=\"SUBMIT\">\n"+ *************** *** 292,295 **** nodes.length ); ! } } --- 294,316 ---- nodes.length ); ! } ! ! /** ! * See bug #745566 StackOverflowError on select with too many unclosed options. ! * Under Windows this throws a stack overflow exception. ! */ ! public void testUnclosedOptions () throws ParserException ! { ! String url = "http://htmlparser.sourceforge.net/test/overflowpage.html"; ! int i; ! Node[] nodes; ! ! parser = new Parser(url); ! parser.registerScanners (); ! i = 0; ! nodes = new Node[50]; ! for (NodeIterator e = parser.elements(); e.hasMoreNodes();) ! nodes[i++] = e.nextNode(); ! assertEquals ("Expected nodes", 39, i); ! } } Index: OptionTagScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/OptionTagScannerTest.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** OptionTagScannerTest.java 26 May 2003 00:26:50 -0000 1.17 --- OptionTagScannerTest.java 31 May 2003 17:48:19 -0000 1.18 *************** *** 29,32 **** --- 29,34 ---- package org.htmlparser.tests.scannersTests; + import java.util.Stack; + import org.htmlparser.Node; import org.htmlparser.scanners.OptionTagScanner; *************** *** 60,64 **** public void testScan() throws ParserException { ! scanner = new OptionTagScanner("-i"); createParser(testHTML,"http://www.google.com/test/index.html"); parser.addScanner(scanner); --- 62,66 ---- public void testScan() throws ParserException { ! scanner = new OptionTagScanner("-i", new Stack ()); createParser(testHTML,"http://www.google.com/test/index.html"); parser.addScanner(scanner); Index: SelectTagScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/SelectTagScannerTest.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** SelectTagScannerTest.java 26 May 2003 00:26:50 -0000 1.17 --- SelectTagScannerTest.java 31 May 2003 17:48:19 -0000 1.18 *************** *** 29,32 **** --- 29,34 ---- package org.htmlparser.tests.scannersTests; + import java.util.Stack; + import org.htmlparser.scanners.OptionTagScanner; import org.htmlparser.scanners.SelectTagScanner; *************** *** 63,71 **** { ! scanner = new SelectTagScanner("-i"); createParser(testHTML,"http://www.google.com/test/index.html"); ! scanner = new SelectTagScanner("-ta"); parser.addScanner(scanner); ! parser.addScanner(new OptionTagScanner("")); --- 65,73 ---- { ! scanner = new SelectTagScanner("-i", new Stack ()); createParser(testHTML,"http://www.google.com/test/index.html"); ! scanner = new SelectTagScanner("-ta", new Stack ()); parser.addScanner(scanner); ! parser.addScanner(new OptionTagScanner("", new Stack ())); Index: TextareaTagScannerTest.java =================================================================== RCS file: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tests/scannersTests/TextareaTagScannerTest.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** TextareaTagScannerTest.java 26 May 2003 00:26:50 -0000 1.15 --- TextareaTagScannerTest.java 31 May 2003 17:48:19 -0000 1.16 *************** *** 29,32 **** --- 29,34 ---- package org.htmlparser.tests.scannersTests; + import java.util.Stack; + import org.htmlparser.scanners.TextareaTagScanner; import org.htmlparser.tags.TextareaTag; *************** *** 55,61 **** public void testScan() throws ParserException { ! scanner = new TextareaTagScanner("-i"); createParser(testHTML); ! scanner = new TextareaTagScanner("-ta"); parser.addScanner(scanner); parseAndAssertNodeCount(5); --- 57,63 ---- public void testScan() throws ParserException { ! scanner = new TextareaTagScanner("-i", new Stack ()); createParser(testHTML); ! scanner = new TextareaTagScanner("-ta", new Stack ()); parser.addScanner(scanner); parseAndAssertNodeCount(5); |